【问题标题】:Why does THREE.BoundingBoxHelper not display?为什么不显示 THREE.BoundingBoxHelper?
【发布时间】:2021-08-29 14:15:05
【问题描述】:

我之前设法显示了该框,但是在这里,我已经剥离了所有内容,以便通过定位 collada 模型来尝试扩展框,该框不会显示。

function loadObjects(){
  cobj = new THREE.Group();
  cobj.name = "5";
  scene.add(cobj);
  pobj = cobj;
  collada("14",pobj);
  collada("7",pobj);
  function collada(key,pobj){
    var nn,file,path,loader,dae,s;
    ns = nset[key].shared;
    model = ns.Product;
    source = ns.Source;
    ext = ns.Extension;
    path = source +model +ext;
    loader = new THREE.ColladaLoader();
    loader.load(path,function (collada) {
      dae = collada.scene;
      dae.name = key;
      sc = 25.4;
      dae.scale.set(sc,sc,sc);
      pobj.add(dae);
    });
  }
  obj = scene.getObjectByName("5");
  console.log(obj);
  helper = new THREE.BoundingBoxHelper(obj,0xff0000);
  helper.update();
  scene.add(helper);
  sc = 0.1;
  scene.scale.set(sc,sc,sc);
  requestAnimationFrame( animate );
  renderer.render( scene, camera );
  $("canvas").show();
}

【问题讨论】:

    标签: three.js collada


    【解决方案1】:

    首先,BoundingBoxHelper 现在是BoxHelper。看来您使用的是非常旧的 three.js 版本。

    此外,您的 collada() 函数不是同步的。执行collada("14",pobj);collada("7",pobj); 后,资产尚未加载,这意味着您正在计算空组对象的边界框。

    我建议您等到通过 THREE.LoadingManager 加载 Collada 模型,然后将助手添加到您的场景中。

    或者,确保在动画循环中调用 helper.update()。但是,如果对象是静态的并且不改变,这种方法是浪费的。所以最好使用加载管理器的onLoad() 回调。

    【讨论】:

    • 从第 79 版为王时恢复的项目!但原理相同。右侧的 TBA 接口决定关系;模型、组和 BoxHelper 设置定位。因此,您的建议促使我重做 Rev 129 +。谢谢。
    • 但是下载链接提示three.js-master.zip无效
    • 我可以毫无问题地在 macOS 上下载和解压缩文件。您是否尝试过其他解压缩工具?
    • 完成 - 过分热心的安全软件
    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 2012-06-29
    • 2015-12-07
    • 2021-01-15
    • 2013-02-04
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多