0

我一直想在这个应用程序上工作大约一年。我想创建一个“激光表演模拟器/编辑器”。我希望能够将灯光放置在舞台上的不同位置,并且我希望能够编写每个灯光来执行各种操作,例如转动、以特定间隔打开和关闭、改变颜色等。真实是不完全是我的意图。我有进一步计划编写一个工具,该工具可以根据可以检测到的某些信息(例如每分钟的节拍数),根据现有音频文件(当然通常是一首歌曲)轻松同步和创作激光表演,等等,例如。

我最初想在 C# 中使用 XNA 来解决这个问题。编辑器当然会包含一些 3D 视口(也许在 Ortho Projection 中),我猜有点像 3D 建模工具,但更像是游戏的关卡设计工具,因为人们可以用它做很多事情将受到限制,例如灯光放置和属性编辑。

问题是我以前从未从事过 3D 编程项目。几年前,我尝试学习 OpenGL(买了很多书,老实说确实读过它们,但那时我是编程新手,一切都没有意义。此外,我对所使用的数学知识也不太了解)。我也确实尝试过学习 Managed DirectX,虽然它似乎更有意义,但我想我没有那么积极地学习它,所以我放弃了。

现在我其实有学习它的理由,所以我会有动力,我相信我现在会理解大部分数学。

但我不知道从哪里开始。我确信这需要我一段时间才能完成,所以我知道要耐心等待。我想知道你们建议我从哪里开始。音频部分我相信我会留到以后。我想基础是渲染引擎和编辑界面,然后是实际的模拟器来播放创建的节目。

由于我无法将所有内容都放在一个问题中,因此稍后当我进入项目的那个领域时,我会提出后续问题。但是,与此同时,我要问的基本一般问题是:

  1. 我应该从哪里开始?我从来没有做过这么大的事情,所以我对这个项目的大量事情感到不知所措,我不明白我应该从什么开始。我知道我会先计划好事情,但我希望至少能得到一个关于从什么开始的提示。我假设它是渲染引擎。

  2. 使用 C# 和 XNA 是个好主意,或者至少可以吗?我对 C# 非常熟悉,几年前我确实尝试过学习 Managed DirectX,我相信这有点相似。而且我熟悉使用 C# 的 .Net 的用户界面创建方面。

  3. 我应该创建自己的渲染引擎还是使用现有的?你推荐哪个?我对创建自己的引擎以便学习并不完全感兴趣。我相信我最终会明白发生了什么,而且我真的不希望渲染方面成为障碍,特别是如果那里已经存在的东西比我在不久的将来可以创造的任何东西都要好. 当然,我还是会尝试学习 XNA;我不会试图忽略它。

谢谢大家,我非常感谢您提供的任何意见。对不起,如果我很模糊。我对细节有想法,但我现在想问一般性问题,给自己一个方向感。再次感谢。

编辑:我想强调的是,我从未从头开始从事过如此大规模的工作。我真的不知道从哪里开始。我从未从事过 3D 编程,也从未从事过编辑器所需的复杂用户界面。正如我过去向自己证明的那样,我确实有学习和做任何与编程相关的事情的动力和动力,但我希望你们能提供任何关于从哪里开始的细节和细节。

例如,你们中的一些人说从渲染引擎开始,但你能提供任何细节吗?有没有足够的免费和/或开源引擎?考虑到我的追求,是否有任何我应该特别关注的 3D 主题?例如,我读过一些激光器可能只是带有着色器的 3D 网格,或者其他东西,我显然不精通 3D 编程。

我不打算购买任何东西,例如渲染引擎,至少在不久的将来。如果我这样做了,那将是一旦我有了一个可以工作的核心/基础。

谢谢你们,除了你们中的一些人已经做过的事情之外,我非常感谢你们提供的任何见解。

4

3 回答 3

2

我对您的项目很感兴趣,因为我曾经是一名激光表演设计师和控制软件开发人员。

首先 - 绘制设计草图!有趣的是,您正在考虑诸如渲染引擎之类的实现细节,同时仍然被项目的范围所淹没。只是想象一个渲染引擎,它会做你要求的任何事情。然后,当概念确定并且您知道您需要的功能时,您可以购买适合您需求的功能。

如果您不熟悉与激光显示器相关的系统行为和用例,我绝对可以为您提供帮助 - 我会给您发送电子邮件。

于 2009-07-23T06:44:34.403 回答
1

对于第一个 3D 项目,C# 和 XNA 是一个非常好的选择。您不必编写自己的渲染引擎,这是个好消息,因为它可能非常耗时。但是它缺少 GUI 工具。(目前)还没有简单的方法来制作菜单、文本框、标签等。但是,有一些库可以帮助您。

我建议您查看音频支持,以确保提供的工具(尤其是 XACT)足以满足您的需求。

于 2009-07-23T16:36:01.690 回答
1

根据您所需的激光运动控制,USB 微控制器可能更符合您的需求。

这是我最喜欢做这种事情的 USB 设备之一(伺服控制、电机控制、LED、模拟/数字 I/O 等):phidgets.com 伺服套件

跨平台,不错。例如,将伺服器的位置设置为中途,我可以调用驱动程序:

servo1.setPosition(50);

因此,将 C# 与 XNA 结合使用这些与 .Net 兼容的伺服系统,您可以快速取得进展!

祝你好运!

于 2009-07-26T15:10:53.783 回答