【发布时间】:2016-04-29 17:22:55
【问题描述】:
来自this 问题我正在尝试使用 Three.js 为某些模型以编程方式生成 UV 映射,我需要这个,因为我的模型也是以编程方式生成的,我需要对它们应用简单的纹理。我已经阅读了here 并成功地为一些简单的 3D 文本生成了 UV 映射,但是当将相同的映射应用于更复杂的模型时它就不起作用了。
我尝试应用的纹理是这样的:
黑色背景在 PNG 图像中只是透明的。我需要将其应用于我的模型,它只是一种闪光效果,所以我不关心模型中的确切位置,有什么方法可以为这种情况以编程方式创建一个简单的 UV 贴图吗?
我正在使用来自链接问题的代码,该代码对平面模型非常有用,但不适用于非平面模型:
assignUVs = function( geometry ){
geometry.computeBoundingBox();
var max = geometry.boundingBox.max;
var min = geometry.boundingBox.min;
var offset = new THREE.Vector2(0 - min.x, 0 - min.y);
var range = new THREE.Vector2(max.x - min.x, max.y - min.y);
geometry.faceVertexUvs[0] = [];
var faces = geometry.faces;
for (i = 0; i < geometry.faces.length ; i++) {
var v1 = geometry.vertices[faces[i].a];
var v2 = geometry.vertices[faces[i].b];
var v3 = geometry.vertices[faces[i].c];
geometry.faceVertexUvs[0].push([
new THREE.Vector2( ( v1.x + offset.x ) / range.x , ( v1.y + offset.y ) / range.y ),
new THREE.Vector2( ( v2.x + offset.x ) / range.x , ( v2.y + offset.y ) / range.y ),
new THREE.Vector2( ( v3.x + offset.x ) / range.x , ( v3.y + offset.y ) / range.y )
]);
}
geometry.uvsNeedUpdate = true;
}
【问题讨论】:
-
如果只是一个闪光效果,是不是只创建一个着色器会更好?类似THIS
标签: three.js uv-mapping