2009-10-06 1 views
2

Эй, ребята, я хотел бы разработать редактор световых/лазерных шоу и симулятор, и для этого, конечно, я собираюсь изучить некоторые графические программы. Я думаю об использовании C# и XNA.Рекомендуемые аспекты 3D-программирования для симулятора Light/Laser Show?

Мне просто интересно, какие аспекты графического программирования я должен исследовать или сосредоточиться на данном проекте, над которым я работаю. Я новичок в графическом программировании, поэтому я мало знаю об этом, но, например, я представляю себе то, что я мог бы изучить (возможно?) быть объемным освещением.

Например, что было бы практичным способом для рендеринга «лазера» различной ширины/цвета? Я где-то читал, чтобы просто нарисовать цилиндр и применить к нему шейдер, я хотел бы подтвердить, что так оно и есть.

Учитывая, что это похоже на большой проект, я подумывал начать с создания источников света и предоставления им свойств, чтобы я мог легко манипулировать ими. Я (mis) читал, что только определенное количество огней может быть оказано в любой момент времени, я считаю, что восемь. Это относится только к окружающим светам? Учитывая это возможное ограничение и тот факт, что большинство ламп, которые я буду использовать, будет направленным, например, фарами или лазерами, что бы это сделать другим способом? Это то, что такое объемное освещение?

Я просто хотел бы получить некоторые вещи, прежде чем погрузиться в него. Поскольку я новичок в этом, я, вероятно, не использовал слова наилучшим образом, поэтому, если что-то не имеет смысла, сообщите мне. Спасибо и извините за мое невежество.

ответ

1

Ответ на этот вопрос зависит от уровня сложности, который вам необходим при моделировании дисплея. Компьютерная графика в конечном счете является симуляцией переноса света; что симуляция может быть столь же сложной, как вычисление доли лазерного излучения, отклоненного частицами в атмосфере, к окуляру зрителя, или так же просто, как рисование линии. Попробуйте эффект цилиндра и посмотрите, работает ли он для вашего проекта. Если вам нужно что-то более сложное, посмотрите на программирование шейдеров (например, с помощью Nvidia Cg) и объемное затенение, как вы упомянули; также могут быть полезны эффекты свечения после обработки. Для OpenGL я считаю, что существует предел 8? источники света в сцене, но вы могли бы обойти этот предел, выполнив свою собственную логику затенения.

+1

Вы можете использовать новейшие документы SIGGRAPH для вдохновения, чтобы увидеть, есть ли проекты, связанные с световыми эффектами; некоторые из них также могут помочь вам: http://www.cs.rit.edu/~jmg/courses/procshade/20073/papers.html – RMorrisey

1

Хорошо, если это просто для моделирования световых шоу, я бы предположил, что вам понадобится много настраиваемых световых эффектов - поэтому, независимо от того, решите ли вы использовать XNA или Direct DirectX, лучше всего начать с изучения языков шейдеров и как программировать различные световые эффекты, используя их. Как только вы сможете воспроизвести желаемый тип лазерного освещения, вы можете поэкспериментировать с полигонами, которые вы хотите использовать для представления лазеров. (Я использовал метод цилиндров в некоторых своих работах для личных целей, но я не уверен, насколько хорошо прямые цилиндры будут соответствовать вашей цели).

0

Несмотря на то, что он работает быстрее, я считаю, что он не может использовать оборудование для ванильного оборудования из-за его ограничений. Пиксельные шейдеры могут помочь с вашей задачей. Также вы можете выбрать OpenGL из-за переносимости и ясности в методах рендеринга. Я работал над Direct3D в течение нескольких лет, прежде чем переключиться на OpenGL. Функции OpenGL и состояния легче изучать, а методы рендеринга (например, многопроходное рендеринг) - это очень ясно. Если вам нравится код на C# (который я не рекомендую для этих задач), вы можете использовать библиотеку CsGL для доступа к функциям OpenGL.

Смежные вопросы