2009-10-06 1 views
2

안녕 얘들 아, 나는 빛/레이저 쇼 편집기와 시뮬레이터를 개발하고 싶다. 그리고 물론이 과정을 위해서 나는 그래픽 프로그래밍을 배울 것이다. C# 및 XNA 사용에 대해 생각하고 있습니다.라이트/레이저 쇼 시뮬레이터에 권장되는 3D 프로그래밍 측면?

저는 작업중인 프로젝트에 대해 연구하거나 집중해야하는 그래픽 프로그래밍의 측면을 궁금해했습니다. 나는 그래픽 프로그래밍에 익숙하지 않아서 그것에 대해 많이 알지 못하지만, 예를 들어 내가 들여다 볼 수있는 것을 (?) 체적 조명이라고 상상해보십시오.

예를 들어 다양한 너비/색상의 '레이저'렌더링에 대한 실제적인 방법은 무엇입니까? 나는 어딘가에 실린더를 그리고 그것에 쉐이더를 적용 할 것을 읽었고, 나는 이것이 길임을 확인하고 싶다.

큰 프로젝트처럼 보였습니다. 광원을 만들고 속성을 부여하여 손쉽게 조작 할 수 있도록 생각하고있었습니다. 나는 주어진 시간에 조명의 일정량 만 렌더링 될 수 있다고 읽었으며, 나는 8 가지를 믿는다. 이것은 주변 조명에만 적용됩니까? 이 가능한 한계와 내가 사용할 라이트의 대부분이 헤드 라이트 나 레이저와 같은 방향성을 가질 것이라는 사실을 감안할 때 이들을 렌더링하는 다른 방법은 무엇일까요? 체적 조명은 무엇입니까?

내가 잠수하기 전에 몇 가지 사항을 명확히하고 싶습니다. 저는이 말을 처음 접했기 때문에 아마도 단어를 최대한 활용하지 못했을 것입니다. 그래서 뭔가 이해가되지 않으면 알려주세요. 나의 무지에 대해 고마워하고 미안해.

답변

1

이 답변은 디스플레이 시뮬레이션에 필요한 정교함의 수준에 달려 있습니다. 컴퓨터 그래픽은 궁극적으로 빛의 전달을 시뮬레이션 한 것입니다. 그 시뮬레이션은 관측자의 아이 포인트에 대기 중의 입자에 의해 편향된 레이저 광의 분율을 계산하는 것과 같이 정교 할 수있다. 실린더 효과를 시험해보고 프로젝트에서 효과가 있는지 확인하십시오. 좀 더 정교한 것이 필요하다면, 쉐이더 프로그래밍 (예 : Nvidia Cg 사용)과 언급 한 체적 음영을 살펴보십시오. 또한 후 처리 글로우 효과가 유용 할 수 있습니다. OpenGL의 경우 한계가 8 개라고 생각합니다. 광원의 씬에서 발생하지만, 쉐이딩 논리를 사용하여이 한계를 극복 할 수 있습니다.

+1

조명 효과와 관련된 프로젝트가 있는지 확인하기 위해 최신 SIGGRAPH 논문을 통해 아이디어를 얻을 수 있습니다. 이 중 일부가 도움이 될 수도 있습니다. http://www.cs.rit.edu/~jmg/courses/procshade/20073/papers.html – RMorrisey

1

글쎄, 라이트 쇼 시뮬레이션이라면 많은 조명 효과가 필요하다고 상상해보십시오. XNA 나 스트레이트 DirectX를 사용하기로 결정했다면 쉐이더 언어를 배우는 것으로부터 시작하는 것이 가장 좋습니다. 다양한 조명 효과를 프로그램하는 법. 원하는 레이저 조명 유형을 재생할 수있게되면 레이저를 나타내는 데 사용할 다각형을 실험해볼 수 있습니다. (나는 개인적인 목적을 위해 내 작업에서 실린더 방법을 사용했지만 직선 실린더가 목적에 얼마나 잘 맞는지 확신 할 수 없다.)

0

비록 더 빠르지 만 그 한계 때문에 바닐라 하드웨어 조명을 사용하지 않는 것이 가장 좋습니다. 픽셀 쉐이더는 작업에 도움을 줄 수 있습니다. 또한 이식성과 렌더링 방법의 명확성 때문에 OpenGL을 선택할 수도 있습니다. OpenGL로 전환하기 전에 Direct3D에서 몇 년 동안 작업했습니다. OpenGL 함수와 상태는 배우기 쉽고 렌더링 방법 (예 : 다중 패스 렌더링)은 분명합니다. C#으로 코드를 작성하고자한다면 (이 태스크는 권장하지 않음) CsGL 라이브러리를 사용하여 OpenGL 함수에 액세스 할 수 있습니다.

관련 문제