编辑:我已经决定将纹理应用到球体的一部分是正确的方法,但不知道如何实现它.我打算开一个新问题,但觉得后人更好地解决这个问题,以便其他人得到帮助.
看这里的原始问题 ......
我正在使用一个使用Canvas元素创建的纹理作为它的图像.将此纹理应用于整个球体很简单,但我尝试将此纹理仅应用于球体的一部分.
我已经能够通过增加画布的大小来实现这一点,使用透明空间与我的图像接壤.然而,这也将纹理的尺寸增加到不可接受的尺寸.透明空间也占用纹理内存,大多数客户端无法处理创建的纹理的大小...特别是当我尝试制作非常小的高分辨率纹理时; 因为纹理越小越好,我必须将其包裹得越透明......
无论如何,显然3D Graphics中有一些叫做"UVs"的东西,只允许这样做......我不知道如何在THREEJS中实现这样的解决方案.
这就是我制作纹理/材质的方法:
scene = new THREE.Scene();
geometry = new THREE.SphereGeometry(500, 50, 50);
texture = new THREE.Texture(document.getElementById('myCanvas'));
texture.needsUpdate = true;
material = new THREE.MeshBasicMaterial({
map: texture
});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
Run Code Online (Sandbox Code Playgroud)
如何更改它以使纹理仅适用于球体的某个部分?
我已经看过:如何将纹理图像映射到球体的一部分,或者如何切割(交叉)球体表面的矩形?
但是我对3D图形的经验不足让我无法理解答案......
在继续这个项目之前,我应该更多地了解Shader编程吗?
我做了一个JSFiddle概述了这个问题:http://jsfiddle.net/RCmBU/
如何将黑色画布仅应用于红点所指示的球体部分?
任何有关这个问题的帮助将不胜感激.谢谢!