【问题标题】:Recommended 3D Programming Aspects for Light/Laser Show Simulator?推荐用于灯光/激光表演模拟器的 3D 编程方面?
【发布时间】:2009-10-06 19:07:26
【问题描述】:

大家好,我想开发一个灯光/激光表演编辑器和模拟器,为此我当然要学习一些图形编程。我正在考虑使用 C# 和 XNA。

我只是想知道,鉴于我正在从事的项目,我应该研究或关注图形编程的哪些方面。我是图形编程的新手,所以我不太了解它,但例如我想我可能会研究的东西(可能?)是体积光照。

例如,渲染不同宽度/颜色的“激光”的实用方法是什么?我在某处读到只是画一个圆柱体并对其应用着色器,我想确认这是方法。

鉴于这似乎是一个大项目,我正在考虑从创建光源开始并赋予它们属性,以便我可以轻松地操纵它们。我(误)读到在任何给定时间只能渲染一定数量的灯光,我相信是八个。这仅适用于环境光吗?考虑到这种可能的限制,而且我将使用的大多数灯光都是定向的,例如头灯或激光,那么渲染它们的不同方式是什么?那就是体积照明吗?

在深入研究之前,我想弄清楚一些事情。由于我是新手,所以我可能没有充分利用单词,所以如果有什么不明白的地方,请告诉我。感谢并为我的无知感到抱歉。

【问题讨论】:

    标签: graphics 3d xna lighting


    【解决方案1】:

    这个问题的答案取决于您在显示模拟中所需的复杂程度。计算机图形学最终是对光传输的模拟;这种模拟可以像计算被大气中的粒子偏转到观察者视点的激光比例一样复杂,或者像画一条线一样简单。试试圆柱效果,看看它是否适用于您的项目。如果您需要更复杂的东西,请查看着色器编程(例如,使用 Nvidia Cg)和您提到的体积着色;后处理发光效果也可能有用。对于OpenGL,我相信有8个限制?场景中的光源,但您可以通过自己的着色逻辑来绕过这个限制。

    【讨论】:

    【解决方案2】:

    好吧,如果它只是用于灯光秀模拟,我想您将需要大量自定义灯光效果 - 因此,无论您决定使用 XNA 还是直接 DirectX,您最好的选择是从学习着色器语言开始,以及如何使用它们对各种照明效果进行编程。一旦您可以重现您想要的激光照明类型,您就可以尝试使用您想要用来表示激光的多边形。 (我在一些工作中出于个人目的使用了圆柱体方法,但我不确定直圆柱体是否适合您的目的)。

    【讨论】:

      【解决方案3】:

      虽然它更快,但我认为最好不要使用普通硬件照明,因为它有局限性。像素着色器可以帮助您完成任务。此外,您可能希望选择 OpenGL,因为它具有可移植性和渲染方法的清晰性。在切换到 OpenGL 之前,我在 Direct3D 上工作了几年。 OpenGL 函数和状态更容易学习,渲染方法(如多通道渲染)非常清晰。如果您喜欢在 C# 上编写代码(我不建议在这些任务中使用 C#),您可以使用 CsGL 库来访问 OpenGL 函数。

      【讨论】:

        猜你喜欢
        • 2018-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        相关资源
        最近更新 更多