three.js 开发中遇到的坑

  1. 材质动态更新中应该注意的问题

    在第一创建Matrial对象的时候需要先给Material的map赋值,可以赋予一个不携带
    url的Texture对象。如果你不赋值,等到第一次render之后,及时你再次给map赋 值一个Texture对象,这时候也是不会正确显示材质的
    (除非你手动指定material的needsUpdate为true)

//下面给出代码示例:
var start = new GSThree.StartNB();
    start.autoRender();
    var scene = start.newScene("main");
    new GSThree.LightConfig(scene).addAmbientLight().addDirectionLight();

    var box = new THREE.BoxBufferGeometry(100, 100, 100);
    var material = new THREE.MeshStandardMaterial({
//            map: new THREE.Texture()//如果不初始化的话,也不指定needsUpdate的话,后面及时设置了map的值,材质也不会更新
        }
    )
    var mesh = new GSThree.Mesh(box, material)
    scene.add(mesh);

    function updateTextureMap() {
        var texture = new THREE.TextureLoader().load("../../../resource/UV_Grid_Sm.jpg")
        material.map = texture;
        console.log("call update texture map")

        material.needsUpdate = true;//材质会更新
    }

setTimeout(updateTextureMap, 500);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值