我有一个关于在3D模型上使用WPF中的纹理的问题。这是我第一次参加WPF 3D。
它确实成功地(有点)对地板平面做了同样的事情。它的作用是在模型上获得代表4个外墙的纹理,但它的完整拉伸和/或它显示为弯曲,如下图所示。
我认为问题在于模型有4个以上的点,它有8个精确,4个平面由2个三角形构成。
我真的不知道我做错了什么。它可能与纹理坐标有关,但我无法弄清楚是什么。已经在纹理坐标上尝试了一些其他值,但这没有多大帮助。
如果有人可以帮助我解决这个问题,或者至少让我指向正确的方向,那就太棒了。
我的模型的XAML代码:
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="20,0,0 20,0,3 20,20,3 20,20,0 0,20,3 0,0,0 0,20,0 0,0,3"
TriangleIndices="0 1 2 3 0 2 4 5 6 4 7 5 0 5 1 1 5 7 6 3 4 4 3 2"
TextureCoordinates="0,0 0,1 1,0 1,1 0,0 0,1 1,0 1,1 0,1 0,1 1,0 1,1 0,0 0,1 1,0 1,1"/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<ImageBrush ImageSource="pack://siteoforigin:,,,/images/brick.jpg" />
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="Blue"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
答案 0 :(得分:1)
我以前是怎么做的:
points: 0,0,0 0,0,1 1,0,0 1,0,1 0,1,0 0,1,1
indices: 0 2 1 2 3 1 0 1 4 1 4 3
texture coordinates: 0,1 0,0 1,1 1,0 1,1 1,0
example how i fixed:
points: 0,0,0 0,0,1 1,0,0 1,0,1 0,0,0 0,0,1 0,1,0 0,1,1
indices: 0 2 1 2 3 1 4 5 6 7 6 4
texture coordinates: 0,1 0,0 1,1 1,0 1,1 1,0 0,1 0,0
这可能是最有效/最好的溶剂,但它是一种解决方案,对我有用。