C# XNA,WPF灯光显示可视化仪
大家好 我正在开发一个控制灯光秀的软件(通过DMX协议),我使用C#和wpf来开发我的主软件(.net 4.0) 为了帮助人们预览他们的节目,我想制作一个实时三维可视化工具 首先,我认为我可以使用wpf 3D制作可视化工具,但我需要使用灯光 我的主要应用程序应该将属性(光束角度、方向(X,Y)、位置(X,Y)、笔刷(颜色、形状、效果))发送到3D可视化工具 但我希望能够在执行过程中通过鼠标移动灯光(场景中的位置),并获得相应的价值 所以 XNA是最简单的方法吗 你能帮我吗C# XNA,WPF灯光显示可视化仪,c#,wpf,xna,C#,Wpf,Xna,大家好 我正在开发一个控制灯光秀的软件(通过DMX协议),我使用C#和wpf来开发我的主软件(.net 4.0) 为了帮助人们预览他们的节目,我想制作一个实时三维可视化工具 首先,我认为我可以使用wpf 3D制作可视化工具,但我需要使用灯光 我的主要应用程序应该将属性(光束角度、方向(X,Y)、位置(X,Y)、笔刷(颜色、形状、效果))发送到3D可视化工具 但我希望能够在执行过程中通过鼠标移动灯光(场景中的位置),并获得相应的价值 所以 XNA是最简单的方法吗 你能帮我吗 生成灯光(方向,灯光
- 生成灯光(方向,灯光前面类似位图的过滤器)
- 使用鼠标动态移动对象并获取相应位置
- 动态添加或删除夹具
谢谢 XNA不包含任何管理“场景”的功能-您必须自己实现。例如:您可以创建一个
灯光
类,其中包含有关灯光的信息(位置、方向等),然后创建一个列表
,您可以自己更新和渲染这些信息
我现在假设您有一个“灯光”的3D模型(如:包含灯泡的金属盒)和一个舞台的3D模型。您可以了解如何渲染它们-XNA中有大量关于简单模型渲染的在线教程
所以你的第三个要求(“动态添加或删除装置”)应该是相当简单的,一旦你可以渲染东西。只需根据用户输入从灯光列表中添加和删除灯光即可。看
您的第二个要求(“使用鼠标动态移动对象并返回位置”)也应该很简单。如果希望用户通过单击和拖动来移动灯光,只需跟踪帧之间的鼠标位置,并将其应用于已单击灯光的位置(或旋转)的调整
要想知道用户首先点击的是哪个灯光,一个很好的起点是
我在这里假设用户将单击灯光(金属盒)本身来移动/旋转它。如果您希望让用户单击并拖动灯光的端点(它投射的光点)——这将更加困难。我想到的一个想法是:将光线与舞台相交,找到投影光斑的中心。在这一点上画一个虚拟的“手柄”对象(像一个球体),用户可以点击并拖动它。用户完成拖动后,确定灯光的新方向,使其成为新的中心
最后,您的第一个需求(“在灯光前生成灯光(方向,类似位图的过滤器)”)是一个棘手的需求。我的理解是,你想要一种在舞台模型上绘制光束端点的方法吗?如果是这样的话,你要找的就叫做。基本灯光可能会有一个圆形纹理,gobos可能会有其他纹理
快速而肮脏的方法是绘制舞台模型,每个灯光绘制一次,添加混合(这样每个灯光添加其他灯光和黑色都没有效果),将颜色设置为您想要的灯光颜色,并使用黑白纹理(黑色背景上的白色圆圈)使用TexturedDressMode.Clamp
绘制,该着色器使用投影纹理贴图绘制纹理,该贴图将灯光设置为投影点