【问题标题】:Texturing a Sphere C#纹理球体 C#
【发布时间】:2015-03-09 00:09:06
【问题描述】:

我目前正在开发基于 Managed DX 和 C# 的全景查看器。

我创建了一个球体网格,现在我想用地球地图纹理它。

我将 纹理 加载到 Texture 对象中,但是当我查看结果时,纹理会在经度和纬度上重复。

我认为我需要一个像素着色器,但我必须说我不知道​​如何创建一个。

有人可以帮我吗?

谢谢!

【问题讨论】:

  • 如何计算网格的纹理坐标?

标签: c# geometry texturing


【解决方案1】:

如果它有纹理但只是重复,那么这不是着色器问题。 您应该更正夹紧或 U/V 坐标。 着色器只是帮助您将材质质量添加到纹理渲染中,而不是修改纹理的布局 (U/V)。

这是一个关于如何相对于 flat 网格设置 UV 的粗略尝试:

Mesh
+----------+----------+----------+ V=1.00
|0        3|3        5|5        7|
| vertices |          |          |
|          |          |          |
|1        2|2        4|4        6|
+----------+----------+----------+ V=0.66
|          |          |          |
|          |          |          |
|          |          |          |
|          |          |          |
+----------+----------+----------+ V=0.33
|          |          |          |
|          |          |          |
|          |          |          |
|          |          |          |
+----------+----------+----------+ V=0.00
U=0        U=0.33     U=0.66     U=1.00

我希望这会有所帮助。如果您想在网格上放置地球地图,网格比纹理大。

顶点顺序和它们的连接方式无关紧要,我只是写了一些顶点索引来说明这只是一个完整的网格。

您使用的是一个不平坦的球体,因此有一个关于如何将非平坦表面投影到平坦表面上的完整理论。

这应该可以帮助您进一步:

Google for "Earth Spherical Texture Map"

出于好奇:您为什么使用 MDX?不是被XNA取代了吗?你试过Unity3D吗?这样的事情几乎是开箱即用的......只需将相机放在球体中并在编辑器中调整值......也许我错过了一些东西。我只是很好奇:)

【讨论】:

  • 您好,感谢您的回答。我使用 MDX 是因为我得到了规范。你的回答帮助了我!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多