aframe - A-frame:如何将对象附加到模型上的某个点(和/或其骨骼)
问题描述
我想将一个对象*附加到一个特定的骨头上,所以它会随着那个骨头移动(比如把帽子戴在角色的头上)。在 three.js 中,我可以执行以下操作:
mesh.skeleton.bones[someindex].add(mesh2)
在框架中执行此操作的最佳方法是什么?
另一种方法可能是将对象作为模型上特定顶点的父对象,但我也不知道该怎么做。
*:通过“对象”,我想我的意思是“具有位置和旋转的实体”在 A 框架术语中
解决方案
据我所知,a-frame只有一个小的 API 用于处理构建在Three.js
加载器上的模型。(+ Don McCurdys 动画混音器)。
我能想到的唯一“A-Frame”触摸是创建和访问基本模型。有:
<a-entity gltf-model="url(model.gltf)" foo>
您可以创建一个框架组件来抓取模型,并将新网格附加到骨骼:
AFRAME.registerComponent("foo", {
init:function() {
let mesh = this.el.getObject3D("mesh")
// or this.el.components["gltf-model"].model
let mesh2; // get create the model using any THREE loader
mesh.skeleton.bones[someindex].add(mesh2)
}
})
<a-element gltf-model="url(hat.gltf)">
如果您通过创建帽子并尝试setAttribute()
在每个渲染循环(在tick()
函数中)上使用它来定位和旋转它
,我想不出任何重大好处。
推荐阅读
- database - 如何在 SQL Server 2017 中定义用户定义类型(面向对象的数据库)?
- javascript - 如何在 Drupal 8 中更新我的视图而不滚动回顶部?
- magento - Ubuntu nginx 服务器上的 Elasticsearch 启动错误
- .net-core - .NET Core 3 预览数据在多个 .Includes 上为空错误
- java - 如何正确设计具有内部条件转换的游戏状态机
- javascript - 未捕获的 TypeError:无法在 Chrome 扩展中读取 null 的属性“classList”
- java - java中普通类对象和包装类对象有什么区别
- python - 如何将通过Matlab GUIDE获得的不同形状和颜色的文件名存储在一个位置
- file-upload - SIM800C GSM AT COMMAND 如何以编程方式上传 .amr 音频文件
- aws-codebuild - AWS CodeBuild 由非 root 用户使用 `run-as` 构建规范