如果我有一个文本和图像的网格,如日历视图。如果我想让整个网格躺下45度,并且仍然能够响应手指点击/滚动,该怎么做?非常感谢!如何模拟2D 3D(放下)
-1
A
回答
2
好的,如果你在XNA中这样做,你会想要使用广告牌。恐怕我还没有广告牌需要,所以我不能给你具体细节,但像往常一样,这是一个Riemers Tutorial。现在,具体而言,您希望拥有带控件的互动广告牌。如果你以前从未有过3D体验,这将会很复杂。这里就是你会想做什么:
- 画出你的控制,你通常会用SpriteBatch,但GraphicsDevice的的渲染目标设置到一个新的渲染目标提前,保存所/文本。有关更改rendertarget的文档,请查看here。请记住在绘制控件后将其重新设置。
- 现在使用显式转换将RenderTarget转换为Texture2D:
Texture2D myTex = (Texture2D)myRenderTarget;
- 在广告牌上绘制此纹理。
- 现在出现棘手的部分:您需要使用名为“拣选”的技术来确定用户点击了3D空间中的哪个位置。应用程序中心有一些挑选教程,但它们适用于复杂的模型。由于广告牌只使用一个有两个三角形的平面,所以在这种情况下,它们将无法正确工作,这是您需要的。相反,我建议using Viewport.UnProject to pick on the plane。
从本质上讲,您将需要一个良好的系统来跟踪3D空间中广告牌上的可点击事件。如果你知道他们(我认为我在微积分III中学到了这些),你可以使用平面方程。如果您只需要基本功能,您可以使用这些方程式仅跟踪按钮的中心,然后执行半径测试以进行点击,但这并不完全准确,除非您的按钮是圆形。
如果您无法判断,当您尝试在3D世界中应用2D概念时,情况变得非常复杂。
4
有一个非常简单的解决方案。 如果使用Expression Blend打开项目,一旦选择了网格,转到属性选项卡,向下缩放到“变换”,应该有一个名为“旋转”的属性,只需更改X:Y:Z:直到网格旋转到您希望的样子。它的行为完全如你所期望的那样。
这里的XAML代码:
<Grid.Projection>
<PlaneProjection RotationX="-43"/>
</Grid.Projection>
相关问题
- 1. 在2D中模拟3D空间
- 2. 如何模拟2D水面?
- 3. 如何创建3D模拟?
- 4. 将2D图像,3D模型
- 5. 2D虚拟3D引擎/库<canvas>
- 6. 模拟3D旋转
- 7. 使C++模拟类与2D和3D矢量一起工作
- 8. 如何在XNA中获取2D模型的3D模型?
- 9. 如何在开放模式下模拟后得到变量值?
- 10. Python lmfit:拟合2D模型
- 11. 在2D中模拟运动
- 12. 在3D上下文中绘制2D点
- 13. OpenGL的2D水模拟
- 14. 程序模拟3D头
- 15. 如何下载模拟器?
- 16. 如何模拟按下ARC
- 17. 将3D模型转换为2D图像
- 18. 将2D图像转换为3D模型
- 19. 如何将2D转换为3D饼图?
- 20. 如何在2D平面上投影3D?
- 21. Canvas使用2D和3D上下文的3D绘图
- 22. 3D数学/ 2D旋转计算:分割/切割3D模型?
- 23. 3D到2D匹配
- 24. Three.js - 2D + 3D网格
- 25. matplotlib 3d回到2d
- 26. 结合3D/2D图
- 27. 如何模拟HTML5拖放和硒的webdriver下降的JavaScript
- 28. 如何释放VSPACE在Android模拟器
- 29. 如何模拟呼叫开放 - uri
- 30. 如何模拟浏览器缩放
我想我写的“XNA”的主题,但不知何故消失了。我一直在努力使用XNA或silverlight。但我觉得使用XNA更加舒服,因为它非常简单。 Silverlight可以动态地在网格中添加控件吗?在网格控制中绘制文本和图像?轮转能动态变化吗?可以处理网格内新增控件的点击事件?请指教!非常感谢! – thsieh
不确定创建控件,因为我自己没有这样做,但是是绘制文本和图像,是的,以动态更改旋转,不确定是否处理新创建的控件的事件。您是否尝试过关于Silverlight控件的MSDN文章? –