저는 aframe과 ECS 모델링 기술에 익숙하지 않아 아키텍처를 어떻게 사용해야하는지 완전히 이해하지 못했을 것입니다.aframe에서 복잡한 모델을 구현하는 방법
로보트 팔과 같은 모델을 만들고 싶습니다. 단순화 된 버전은 기본이며, 로테이터와 팔 자체 위에 있습니다. 모델은 단일 json 파일에서로드되며 여러 부분에 대해 여러 개의 중첩 된 오브젝트로 구성됩니다.
서로 다른 자유도를 독립적으로 제어하려는 경우 (객체 자체의 다른 하위에 object.rotation
값을 설정하는 것을 의미 함) 어떻게 프레임 워크에서 구현 될 수 있습니까?
내가 생각한 한 가지는 모델 파일을 하나의 구성 요소로로드하고 각 자유도를 별도의 구성 요소로 구현하는 것이 었습니다. 그래서 기본적으로 이런 식으로 뭔가 :
<a-entity robot-model="..." base-rotation="123" arm-pitch="10" />
또는 그것을 이런 식으로 뭔가를 registerPrimitive
를 사용하는 더 좋은 방법이 있을까요? 그것은 다음과 같습니다에
나의 첫번째 의견 : 당신이 이미 생성 블렌더, 마야, 또는 Cinema4D 같은 소프트웨어를 사용하여 3D 모델을 리깅 한 있으리라 믿고있어
registerComponent('robot', {
schema: {type: 'asset'},
update() {
// - load and parse model using THREE.ObjectLoader
// - once ready, assign property this.parts with the various
// parts of the robot-arm
}
});
registerComponent('dof-1', {
schema: {type: 'number'},
dependencies: ['robot'],
init() {
this.robot = this.el.components.robot;
},
tick(t, dt) {
if (!this.robot.parts) { return; } // not ready yet
// update values (left out here: acceleration etc)
this.robot.parts.dof1.rotation.x = this.data;
}
});
// more parts/dof implemented likewise
다음은 통해 노출 될 수 있습니다 -틀. 저는 장비, 뼈, 관절과 같은 경험이 없지만이를 지원하는 모델 형식 + three.js 로더를 찾습니다. – ngokevin
@ngokevin 감사합니다! 그게 내가 생각한 것인데, 나는 three.js에서 aframe으로의 바인딩이 어떻게 "올바르게"구현되었는지 궁금해합니다. –
내가 오해했을 수도 있습니다. 사실 나는 ObjectLoader에 대해 많이 모른다. ECS에서 사용자 지정 조작을 구조화하는 데 좋은 시작일 수 있습니다. – ngokevin