【问题标题】:isometric perspective in silverlightSilverlight 中的等距透视
【发布时间】:2011-03-03 23:19:01
【问题描述】:

如何在 Silverlight 中获得完美的等距透视?

我想在 Silverlight 中创建一个 3D 环境,它必须是等距透视图。 如果我使用平面投影,我可以使网格类似于等轴测透视,但它不是一个完美的等轴测透视,因为网格单元不相等。

http://uwconcept.be/projects/uwconceptcity/grid_base_1.jpg

人们必须能够沿着网格“滚动”;即在其上向前、向后、向左和向右移动。您可以将其视为飞越网格,但始终保持正确的等轴测视角。将不会实现轮换(在第一个版本中)。而且即使实现了,旋转也正好是 90 度,以保持等轴测视角。

编辑: 我还注意到,当我尝试在 Silverlight 中重现透视图时,“正常”等距 x、y、z 坐标不适用。 “正常”转换显示在以下 Wikipedia 文章中:http://en.wikipedia.org/wiki/File:Wikipedia_isometric_cube_3.jpg

【问题讨论】:

  • 哇,好问题。相机位置会是静态的吗?
  • 说得好,@foson,我更新了我的问题。

标签: silverlight 3d isometric


【解决方案1】:

如果您可以等待 SL5 发布,它应该具有 3D API。 Silverlight 5 测试版于 2011 年上半年宣布发布(现在应该是任何一天)。最终版本计划于 2011 年底发布。

我假设 SL API 应该类似于 WPF 的 3D API。根据我的随意理解,您可以使用 OrthographicCamera(包含在 WPF 中)的正确角度创建等距投影。

【讨论】:

  • 好的,那我先搁置一下。感谢您的信息
【解决方案2】:

SL4 中内置的 3D 投影支持可能不足以满足您的需求。它非常有限,通常仅对旋转简单对象有用。

但是你还有另外两个选择:

  • 使用 3D 引擎并将其设置为以等距 3D 渲染。我认为 Balder 可以做到这一点,但可能不是开箱即用的。
  • 通过在正确位置绘制预渲染精灵来伪造等距 3D。我想您希望您的“游戏世界”由旋转以适应等距 3D 透视图的图块(正方形)组成。如果您以正确的角度预先渲染所有瓷砖,那么您可以计算放置它们的位置并获得所需的效果。使用此选项您不会在显示中获得任何深度,较远的瓷砖将与附近的瓷砖尺寸相同,但除此之外并不太难。

我曾经尝试自己做后者,只是为了好玩。绘制平坦的景观很容易,但是一旦你想要支撑斜坡,它就会变得更加困难。

如果你最终这样做了,那么我希望你开源这个项目,因为你可以用等距 3d 做很多有趣的事情:-)

【讨论】:

  • 非常感谢您提供的信息,是的,一旦我获得了良好的基础层,我将开源它。虽然我确实担心必须放置(即通过计算定位的 10,000 个图块)时的图形性能。
  • 10.000 个图块?这听起来有点过分,但我不知道你想做什么。即使您拥有合适的 ISO-3d 引擎,也必须进行计算。不同的是你看不到它。 SL 不支持太多硬件加速,因此无论您做什么,大部分计算都必须由 CPU 完成。
  • 我想从一开始就创建一个强大的平台,并牢记网格最终可能会增长到 100x100 瓷砖。在屏幕截图中,只有一个计算,我创建了一个带有 n x n 字段的网格,然后该网格通过平面投影转换为“等距”透视图
猜你喜欢
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多