三、JS,给纹理添加镜面反射(shine) [英] Three JS, add specularity (shine) to texture
本文介绍了三、JS,给纹理添加镜面反射(shine)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个纹理,我要应用到three.js 中的一个对象.我想给它添加一些镜面反射或光泽.
I have a texture I am applying to an object in three.js. I want to add some specularity or shininess to it.
我看到类似这样的例子
new THREE.MeshPhongMaterial( {
color: 0x996633,
specular: 0x050505,
shininess: 100
} );
但是,我的代码是这样的:
However, my code looks like this:
// texture
var texture = new THREE.Texture();
var imgLoader = new THREE.ImageLoader( manager );
imgLoader.load( 'assets/uv.png', function ( image ) {
texture.image = image;
texture.needsUpdate = true;
} );
// model
var loader = new THREE.OBJLoader( manager );
loader.load( 'assets/obj.obj', function ( object ) {
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material.side = THREE.DoubleSide;
child.material.map = texture;
}
} );
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
我不确定在哪里添加光泽度或镜面反射设置,因为我没有使用 THREE.MeshPhongMaterial
,或者如果我确实使用了 THREE.MeshPhongMaterial
,如何将它与 THREE.texture
结合起来.
I am not sure where to add the shininess or specular setting since I'm not using a THREE.MeshPhongMaterial
, or if I did use the THREE.MeshPhongMaterial
, how to combine it with THREE.texture
.
推荐答案
我建议您在加载对象时覆盖它的材质.
I would suggest you override the object's material when it's loaded.
var loader = new THREE.OBJLoader(manager);
loader.load('assets/obj.obj', function (object) {
object.traverse(function (child) {
if (child instanceof THREE.Mesh) {
child.material = new THREE.MeshPhongMaterial({
color: 0x996633,
specular: 0x050505,
shininess: 100,
map: texture,
side: THREE.DoubleSide
});
}
} );
object.position.y = - 95;
scene.add(object);
}, onProgress, onError);
这篇关于三、JS,给纹理添加镜面反射(shine)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文