账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    forge 加载多个模型后,worldToClient的问题
    53
    0

    1.
    计算位置

    function worldToClient(dbid){
      var it = _viewer.model.getData().instanceTree;
      it.enumNodeFragments(dbid,(fragId,dbid)=>{
        var nodebBox = new THREE.Box3();
        var fragbBox = new THREE.Box3();
        var fragList = _viewer.model.getFragmentList();//这里如何获取指定模型1 模型2来调用getFragmentList接口
        fragList.getWorldBounds(fragId, fragbBox);
        nodebBox.union(fragbBox);
    
        var center = nodebBox.center();
        var c = _viewer.impl.worldToClient(center);
        console.log(c.x,c.y);//两次获取的坐标不一样
      },true);
      
    }

    _viewer.loadModel("模型1")
    worldToClient(dbid)
    _viewer.loadModel("模型2")
    worldToClient(dbid)

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ぺ尛尛貓゛ 普通会员 1楼

      Forge 加载多个模型后,worldToClient 方法通常用于将游戏世界转换为客户端世界的对象。当多个模型同时被加载时,worldToClient 方法可能会产生混乱,因为多个模型可能会尝试访问同一张纹理地图或模型。

      为了解决这个问题,可以考虑以下几种方法:

      1. 使用模型分解器:在加载多个模型后,可以使用模型分解器将它们分解为独立的对象。这样,每个对象就可以在自己的纹理地图上加载和显示。

      2. 使用材质绑定:在加载多个模型后,可以将它们的材质绑定到自己的纹理地图上。这样,每个对象就可以在自己的纹理地图上加载和显示,而不会与其他模型产生冲突。

      3. 使用模型更新逻辑:在加载多个模型后,可以使用模型更新逻辑来控制哪些对象可以访问哪些纹理地图。这样,可以避免冲突。

      4. 使用模型加载策略:在加载多个模型后,可以使用模型加载策略来控制模型的加载顺序和加载速度。这样,可以避免冲突。

      5. 使用模型同步机制:在加载多个模型后,可以使用模型同步机制来协调模型的加载。这样,可以避免冲突。

      在实际应用中,可能需要根据具体需求和项目规模来选择合适的方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部