作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 three.js 开发我的小项目,但我很难在 THREE.OBJLoader 加载的对象上映射纹理。 three.js内置geometry就没有这个问题。我现在真的很困惑......
// Load the model from obj file [teapot, 74KB]
var onProgress = function ( xhr ) {
};
var onError = function ( xhr ) {
};
//var oCubeMap = THREE.ImageUtils.loadTexture(imageNames);
var objTexture = new THREE.ImageUtils.loadTexture(textureImage);
var oMaterial = new THREE.MeshLambertMaterial( { map: objTexture } );
var ooMaterial = new THREE.MeshPhongMaterial( { color: 0x99CCFF } );
var thisTexture = THREE.ImageUtils.loadTexture( textureImage, {}, function() {
renderer.render(scene, camera);
} );
var loader = new THREE.OBJLoader();
loader.load(teapot, function (object) {
object.position.set(8, -5, -25);
object.scale.set(0.04, 0.04, 0.04);
object.rotation.set(0, 180 * Math.PI / 180, 0);
// object.color = '0x99CCFF';
object.material = ooMaterial;
// object.texture = thisTexture;
scene.add(object);
}, onProgress, onError);
如您所见,我已经尝试了多种方法,例如颜色、 Material 和纹理,但到目前为止都没有效果。谁能告诉我如何将纹理应用到这个对象上?
最佳答案
OBJLoader
返回一个带有子对象的对象。将以下内容添加到您的加载程序回调函数中:
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material.map = texture;
}
} );
确保您的模型几何体具有 UV,否则不支持纹理。
three.js r.73
关于javascript - 如何在 OBJLoader 加载的对象上应用纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809423/
我是一名优秀的程序员,十分优秀!