对业余爱好应用的建议:激光表演编辑/模拟器

时间:2021-01-20 11:32:18

I've been wanting to work on this application for about a year now. I want to create a 'Laser Show Simulator/Editor'. I want to be able to place lights in different positions on a stage and I want to be able to script each one of them to do various operations such as turning, go on and off at certain intervals, change color, etc. Being realistic isn't entirely my intention. I have further plans of writing a tool that makes it easy to synchronize and compose a laser show based on an existing audio file (which will usually be a song of course) based on certain information that can be detected such as the beats per minute, etc., for example.

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

I was originally thinking of working on this in C# with XNA. The editor will of course contain some 3D viewports (Maybe in Ortho Projection), kind of like a 3D Modeling tool I guess, but more like a level design tool for a game, since the amount of things one will be able to do with it will be limited such as light placement and property editing.

我原本打算用CNA在C#中进行这项工作。编辑器当然会包含一些3D视口(也许是在Ortho Projection中),有点像3D建模工具,但我更像是游戏的关卡设计工具,因为它可以用它做多少事情。将受到诸如灯光放置和属性编辑等限制。

The thing is that I have never worked on a 3D programming project before. A few years back, I tried to learn OpenGL (Bought many books and honestly did read them, but back then I was new to programming and things just did not make sense. Also, I didn't understand much of the math that was used). I also did try to learn Managed DirectX, and although it did seem to make more sense, I guess I wasn't as motivated to learn it so I gave up.

问题是我之前从未参与过3D编程项目。几年前,我试图学习OpenGL(买了很多书,老老实实地读过它们,但当时我是编程新手,事情没有意义。另外,我对使用的数学知之甚少)。我也尝试过学习Managed DirectX,虽然看起来确实更有意义,但我想我并没有那么积极学习它,所以我放弃了。

Now I actually have a reason to learn it, so I will be motivated, and I am sure that I will understand most of the math now.

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

But I don't know where to start. This is something that I'm sure will take me a while to complete, so I know to be patient. I would like to know where you guys suggest I begin. The audio part I am sure I will leave to later. I guess the basics are the rendering engine and the editing interface, then the actual simulator to play back the created show.

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

Since I can't fit everything into one question, I will ask follow up questions later when I get to that area of the project. However, in the meantime the basic general questions I am asking are:

由于我无法将所有内容都放在一个问题中,所以当我到达项目的这个区域时,我会在后面提出跟进问题。但是,与此同时,我要问的基本一般问题是:

  1. Where should I begin? I have never worked on something of this magnitude, so I am overwhelmed with the amount of things going into this project and I don't understand what I should begin on. I know I will plan things out first, but I would appreciate at least a hint as to what one would begin on. I assume it is the rendering engine.

    我应该从哪里开始?我从来没有做过这么大的事情,所以我对这个项目的大量事情感到不知所措,我不明白我应该从什么开始。我知道我会首先计划好事情,但至少我会欣赏一下将会开始的事情。我假设它是渲染引擎。

  2. Is it a good idea, or at least OK to use C# and XNA? I'm pretty familiar with C# and I did try to learn Managed DirectX a couple of years back which I believe is somewhat similar. And I'm familiar with the User Interface creation aspect of .Net with C#.

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

  3. Should I create my own rendering engine or use an existing one? Which do you recommend? I'm not entirely interested in creating my own engine so that I can learn. I'm sure I will eventually understand what's going on anyways, and I really don't want the rendering aspect to be a roadblock, especially if there's something out there that already exists that will be better than anything I can create in the immediate future. Still, of course, I will try to learn XNA; I'm not going to try to ignore it.

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

Thanks guys I really appreciate any input you can provide. Sorry if I was very vague. I have ideas for the specifics, but I wanted to ask the general questions for now, to give myself a sense of direction. Thanks again.

谢谢你们,我非常感谢你们提供的任何意见。对不起,如果我很模糊。我对具体细节有所了解,但我现在想问一般问题,给自己一个方向感。再次感谢。

EDIT: I want to emphasize that I have never worked on something of this magnitude from scratch. I literally don't know where to begin. I've never worked on 3D programming nor a complicated user interface which an editor would entail. I do have the drive and motivation to learn and do anything programming related, as I have proved to myself in the past, but I would appreciate any details and specifics you guys can provide as to where to begin.

编辑:我想强调一点,我从未从头开始做过这么大的事情。我字面上不知道从哪里开始。我从未从事过3D编程,也没有从事编辑工作所需的复杂用户界面。我确实有学习和做任何与编程有关的动力和动力,正如我过去向自己证明的那样,但我很感激你们可以提供的任何细节和具体细节。

For example, some of you say begin with the rendering engine, but can you provide any specifics? Are there any free and/or open source engines out there that will suffice? Are there any 3D topics in particular that I should look into that might be of interest to me considering what I'm pursuing? For example, I've read that some lasers might just be 3D meshes with shaders, or something, I'm not well versed in 3D programming apparently.

例如,有些人说从渲染引擎开始,但你能提供任何细节吗?是否有足够的免费和/或开源引擎?考虑到我正在追求的是什么,我应该考虑哪些3D主题?例如,我已经读过一些激光器可能只是带有着色器的3D网格,或者某些东西,我显然不熟悉3D编程。

I'm not looking into buying anything such as the rendering engine, at least in the immediate future. If I do, it will be once I have a core/base down which I can work upon.

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

Thanks guys, I really appreciate any insight you can provide, aside from what some of you have already done.

谢谢大家,我真的很感激你能提供的任何见解,除了你们已经做过的事情。

3 个解决方案

#1


I'm interested in your project because I used to be a laser show designer and control software developer.

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

First - sketch the design! It's interesting that you are thinking about implementation details like the rendering engine, while still overwhelmed by the scope of the project. Just imaging a rendering engine that will do anything you ask. Then when concepts firm up and you know the capabilities you need you can shop for one that fits your needs.

首先 - 草拟设计!有趣的是,您正在考虑像渲染引擎这样的实现细节,同时仍然被项目的范围所淹没。只需对可以执行任何操作的渲染引擎进行映像。然后,当概念确定并且您了解所需的功能时,您可以购买符合您需求的功能。

If you are unfamiliar with the system behaviors and use cases that would be associated with laser displays, I can definitely help you - I'll email ya.

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

#2


C# and XNA is a really good choice for a first 3D project. You won't have to write your own rendering engine, which is good news because it can be very time consuming. However it lacks GUI tools. There is no simple way (yet) to make menus, text boxes, labels, etc. However, there are some libraries out there than can help you.

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

I recommend you to take a look at Audio support to make sure the tools provided (especially XACT) are enough for what you want to do.

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

#3


Depending on your desired laser motion control, a USB micro controller might be more what you're looking for.

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

Here is one of my favorite USB devices that do this sort of thing (servo controls, motor controls, LEDs, analog/digital I/O, etc.): phidgets.com servo kit

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

Cross platform, excellent. For example, setting the position of a servo to halfway I could call to the driver:

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

servo1.setPosition(50);

So using C# with XNA combined with these .Net compliant servos, you could get something going quickly!

因此,使用C#和XNA结合这些.Net兼容的伺服器,您可以快速获得一些东西!

Good luck!

#1


I'm interested in your project because I used to be a laser show designer and control software developer.

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

First - sketch the design! It's interesting that you are thinking about implementation details like the rendering engine, while still overwhelmed by the scope of the project. Just imaging a rendering engine that will do anything you ask. Then when concepts firm up and you know the capabilities you need you can shop for one that fits your needs.

首先 - 草拟设计!有趣的是,您正在考虑像渲染引擎这样的实现细节,同时仍然被项目的范围所淹没。只需对可以执行任何操作的渲染引擎进行映像。然后,当概念确定并且您了解所需的功能时,您可以购买符合您需求的功能。

If you are unfamiliar with the system behaviors and use cases that would be associated with laser displays, I can definitely help you - I'll email ya.

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

#2


C# and XNA is a really good choice for a first 3D project. You won't have to write your own rendering engine, which is good news because it can be very time consuming. However it lacks GUI tools. There is no simple way (yet) to make menus, text boxes, labels, etc. However, there are some libraries out there than can help you.

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

I recommend you to take a look at Audio support to make sure the tools provided (especially XACT) are enough for what you want to do.

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

#3


Depending on your desired laser motion control, a USB micro controller might be more what you're looking for.

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

Here is one of my favorite USB devices that do this sort of thing (servo controls, motor controls, LEDs, analog/digital I/O, etc.): phidgets.com servo kit

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

Cross platform, excellent. For example, setting the position of a servo to halfway I could call to the driver:

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

servo1.setPosition(50);

So using C# with XNA combined with these .Net compliant servos, you could get something going quickly!

因此,使用C#和XNA结合这些.Net兼容的伺服器,您可以快速获得一些东西!

Good luck!