THREE.js加载模型有时候贴图加载不出来,材质出现问题,整个模型为黑色,手动加载一个新的材质贴图即可,代码如下
var loader = new THREE.TextureLoader();
var texture = loader.load('xxx.png', function () { });
var material = new THREE.MeshStandardMaterial();
material.map=texture;
mainObjcet.material=material;
// 纹理贴图映射到一个矩形平面上
var geometry = new THREE.PlaneGeometry(204, 102); //矩形平面
// TextureLoader创建一个纹理加载器对象,可以加载图片作为几何体纹理
var textureLoader = new THREE.TextureLoader();
// 执行load方法,加载纹...
要注意的是,require的使用方法,直接使用 require(src)会报错,使用`folder${src}` 或者"folder"+src,就可以了。解决方法: 使用require。一般来说是贴图图片引入的问题。这样就可以正常显示了。
材质是黑色的原因不是丢贴图,也不是颜色错了,而是发光通道的问题,默认用的材质MeshPhongMaterial 或者fbx自己有指定 MeshLambertMaterial
这时候我也不知道为什么如果不开发光通道你的材质就会黑....
把发光颜色 强度 贴图 都换掉
直接贴代码
function _ChangeMaterialEmissive(parent) {
1、问题描述: 在three.js中加载图片作为纹理贴图时, 页面加载完后贴图不显示;触发一下鼠标事件后就显示出来了。
2、原因分析: 因为在renderer.render(scene, camera)执行在前,图片加载完成在后;所以图片纹理没有显示。使用了OrbitControls ,我们在触发一下鼠标事件后重新调用了 render 方法,所以图片纹理就显示出来了。
3、解决办法: 使用 requestAnimationFrame 循环调用 render 方法
render();
function ren
var gltfLoader = new THREE.GLTFLoader();
gltfLoader.load( 'assset/test/testgltf1.gltf', function ( gltf ) {
gltf.scene.position.set(0,2,3);
scene.add(...
在Three.js里面导入glb/gltf 不受光材质的模型
以带贴图的模型举例子,首先这次用的软件是一个国外的开源软件blender,因为它可以直接编辑glb模型并且可以对其进行一系列的操作。其实操作方法并不是很难,主要运用到的一个着色器就是“背景”如图
之后打开shading界面编辑模式,将材质图片拉到颜色栏,即可达到不受光的效果。最终效果图三
这里区别于普通的 原理化BSDF着色器,模型不会呈现任何受到光照之后的效果,但是可以调整透明度