【发布时间】:2016-04-28 05:39:54
【问题描述】:
我成功地将纹理应用于立方体几何体:
var geometry = new THREE.CubeGeometry(10, 10, 10);
var meshMaterial = new THREE.MeshPhongMaterial({ transparent: false, map: THREE.ImageUtils.loadTexture('/app/images/wood.jpg') });
meshMaterial.side = THREE.DoubleSide;
var mesh = new THREE.Mesh(geometry, meshMaterial);
有了这个,我得到了一个像这样的漂亮纹理立方体:
现在我想将相同的纹理(512x512 jpg 图像)应用于我从 STL 加载的自定义模型,这就是我得到的(在本例中为金字塔):
这是代码:
loader.load(jsonParam.url, function (geometry) {
var meshMaterial = new THREE.MeshPhongMaterial({ transparent: false, map: THREE.ImageUtils.loadTexture('/app/images/wood.jpg') });
meshMaterial.side = THREE.DoubleSide;
var mesh = new THREE.Mesh(geometry, meshMaterial);
mesh.castShadow = false;
mesh.receiveShadow = true;
scene.add(mesh);
});
为什么没有应用纹理,而我只得到纹理颜色的平均值?
【问题讨论】:
-
你的模型有 UV 坐标吗?
-
@2pha 不,它是 STL 模型,我需要 UV 映射吗?
-
是的。如果没有 UV 贴图,着色器不知道图像的哪一部分应该放在模型的哪个位置。
-
@2pha 如何在 Three.js 中加载 UV 贴图?