reactjs - 如何在 3js 中对 GLTF 元素进行分组并拖放
问题描述
我可以拖放单个 GLTF 元素。但是我无法拖动的元素组。我正在使用以下代码
var loader = new THREE.GLTFLoader();
loader.load( 'W3030/W3030.gltf', ( gltf ) => {
gltf.scene.traverse( function( child ) {
if(child.type === "Group")
{
newObject = true;
GLTFobjects.push(child);
}
if ( child.isMesh ) {
child.receiveShadow = true;
child.castShadow = true;
child.material.transparent = true;
child.material.opacity = 1;
}
});
scene.add(GLTFobjects);
gltf.scene.scale.set(1, 1, 1);
});
解决方案
由于没有方法,恐怕Group
不支持的实例。DragControls
Group.raycast()
您可以通过用不可见的网格替换组来实施解决方法。但是,您不是设置Object3D.visible
为false
,而是为 执行此操作Material.visible
。否则,光线投射逻辑将不会执行相交测试。然后有必要使用足够大的几何图形来包含相应的孩子。
three.js R110
推荐阅读
- typescript - typescript 类装饰器:typescript 编译器无法识别抽象方法
- python - 使用 ansible 和 python 在 Oracle 中更改参数
- python - python如何将动态创建类转储到文件
- reactjs - 将标准化数据存储到 Redux
- visual-studio - 根据文件夹或显示文件夹路径设置 Visual Studio 文档选项卡颜色
- tfs - TFS中runid和testcase有什么联系?
- c++ - 用于内存优化的字符串编码
- ios - 如何使用 XMPP 获取登录用户的组列表?
- kubernetes - 用于移动用户代理的 Kubernetes-Ingress Server-Snippet 503
- sql-server - 处理 SQL server 数据库中的特殊字符,应该使用 varchar 还是 nvarchar?