javascript - 在 Three.js 中更改颜色和纹理

标签 javascript three.js

我正在尝试更改 Material 的颜色和图像,但我没有得到它,我正在使用以下代码:

elf.material = new THREE.MeshPhongMaterial({map:THREE.ImageUtils.loadTexture('3d/caneca/e.jpg')});

但是没有成功。 在我有 3 种 Material 的对象中,我想更改一种 Material 的颜色并替换另一种 Material 的纹理。

最佳答案

您可以在运行时更改对象的 Material 。您需要做的就是通过指定选项创建 Material 并将其分配给对象。 例如,以下代码将创建一个具有白色和其他 properties 的“MeshStandardMaterial” 按照指定。它还将具有您已加载的纹理。将“盒子”视为应附加 Material 的对象。

var material = new THREE.MeshStandardMaterial( { color: 0xffffff, side: THREE.FrontSide, opacity: 0.3, transparent: true, vertexColors: THREE.FaceColors, map : <THE TEXTURE YOU HAVE LOADED> } );

作为更好的方法,您可以使用 TextureLoader 加载纹理。 ,并在加载纹理时创建 Material 。以下代码解释了这一点。

var loader = new THREE.TextureLoader();

function onLoad( texture ) {
    var material = new THREE.MeshPhongMaterial( { map : texture, color : 0xff0000 } );
    box.material = material;
}

function onProgress( xhr ) {
    console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
}

function onError( xhr ) {
    console.error( 'An error happened' );
}

loader.load( 'assets/img/crate.png', onLoad, onProgress, onError );

您还可以更改 Material 的颜色和纹理,而无需创建新 Material

仅更改颜色,

box.material.color.setHex( 0xff0000 );// will set red color for the box

或者改变纹理,

var loader = new THREE.TextureLoader();

function onLoad( texture ) {
    box.material.map = texture;
}

function onProgress( xhr ) {
    console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
}

function onError( xhr ) {
    console.error( 'An error happened' );
}

loader.load( 'assets/img/Dice-Blue-5.png', onLoad, onProgress, onError );

关于javascript - 在 Three.js 中更改颜色和纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47686031/

相关文章:

javascript - jQuery如何比较几个div block 的高度,并应用更多?

javascript - 为什么我的 AJAX 调用会将 Web 主机作为 URL 前缀?

javascript - 如何使用 CSS/JS 在 Web 上居中裁剪图像

javascript - 如何从经过 Firebase 身份验证的用户那里获取提供商访问 token ?

three.js - Threejs 按 x 和 z 进行的旋转单独工作,但一起失败

Three.js 从 WebGLRenderTarget 检索数据(水模拟)

javascript - Three.js — 如何在加载器之外选择网格?

javascript - Javascript 网络应用程序的最佳解决方案

JavaScript 二维渲染库 [pixie.js vs three.js]

javascript - Three.js 3D模型在应用纹理后消失