我可以毫无问题地将纹理应用于使用indexedfaceset
制作的对象,但是当我尝试将纹理应用于使用extrusion
制作的对象时,它就像对象的面不存在一样。例如:
左边的图是应用普通颜色的结果,右边是应用纹理。
以下是应用纹理时的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Castle</title>
<script type='text/javascript' src='x3dom-full.js'>
</script>
<link rel='stylesheet' type='text/css' href='x3dom.css' />
</head>
<body>
<x3d width="512px" height="512px">
<scene>
<switch whichChoice="-1">
<extrusion id="wall" convex="true"
crossSection="
-1 -0.5
-0.7 -0.4
-0.4 -0.35
0 -0.3
0.4 -0.35
0.7 -0.4
1 -0.5
1 0.2
0.7 0.3
0.4 0.35
0 0.4
-0.4 0.35
-0.7 0.3
-1 0.2
-1 -0.5"
spine="
0 -1 0
0 0 0"
scale="
1 1
1 1">
</extrusion>
</switch>
<transform translation="0 0 0" scale="1 1 1">
<shape>
<Appearance>
<ImageTexture url="castle_walls.jpg">
</ImageTexture>
</Appearance>
<x3dgeometrynode use="wall"></x3dgeometrynode>
</shape>
</transform>
</scene>
</x3d>
</body>
</html>
任何帮助都将不胜感激。
答案 0 :(得分:1)
纹理坐标由拉伸节点自动生成。贴图进行映射,以使U方向的坐标范围沿横截面曲线从0到1(0对应于横截面的第一个点,1对应于最后一个点),而V方向的范围沿脊柱曲线(从0到1)( 0对应于第一个列出的书脊点,1对应于最后一个书脊点。如果存在endCap或beginCap,则将对CrossSection曲线进行均匀缩放和平移,以使较大的横截面尺寸(X或Z)产生的纹理坐标范围为0.0到1.0。 beginCap和endCap纹理的S和T方向分别对应于定义横切面坐标的X和Z方向。