1
안녕하십니까, Panda3D에서 조작 된 메쉬 모델을 조작 할 때 문제가 발생했습니다. 나는 두 개의 adjoint 뼈 (하나는 손바닥에, 하나는 네 손가락의 집합을 위해 하나의 색인, 중간, 반지와 새끼 손가락)으로 구성된 뼈대 수정자를 가지고 있는데, 이는 original unchanged hand model과 비슷하다. 배우의 'controlJoint'방법을 사용하여 네 개의 손가락을 안쪽으로 접히도록 후자의 뼈 (관절)를 변형시킵니다. 여기 코드 : Panda3D에서 연결 각도를 회전시킨 후 리지 드 모델의 꼭지점에 액세스
geomNodeCollection = self.handActor.findAllMatches('**/+GeomNode')
geomNodePath = geomNodeCollection[ 0 ]
geomNode = geomNodePath.node()
geom = geomNode.getGeom(0)
vData = geom.getVertexData()
reader_vertex = GeomVertexReader(vData, 'vertex')
reader_normal = GeomVertexReader(vData, 'normal')
vertexList = list()
normalList = list()
for i in xrange(2000) :
vertex = reader_vertex.getData3f()
normal = reader_normal.getData3f()
vertexList.append(vertex)
normalList.append(normal)
가 그럼 난에 기대 웃는 구 이들 각각의 위치를 표시 : 나는 다음과 같은 코드 더불어, 현재의 변형 메쉬의 정점 정보에 액세스 다음
self.handActor = Actor(r'/d/3DModels/TestHand.egg')
self.handJoint1 = self.handActor.controlJoint(None,
'modelRoot',
'Bone1'
)
self.handJoint2 = self.handActor.controlJoint(None,
'modelRoot',
'Bone2'
)
self.handJoint2.setP(90)
기형적 인 손 주위에 꼭 맞는이 스마일의 구름을 보아라. 그러나, 나는 다음과 같이 평평한 원래 손 모양의 점 구름을 가지고 있습니다.
deformed hand model and vertices obtained shown a point cloud 변형 된 핸드 메쉬와 정확히 일치하는 꼭지점 위치를 얻는 방법에 대해 알고 싶습니까? 감사!
vData = geom.getVertexData().animateVertices(True, Thread.getCurrentThread())
팬더가 자동으로 애니메이션 GeomVertexData를 캐시합니다 :
고맙습니다. rdb! 당신 말이 맞아요. 나는 당신이 제안한대로 노력했고 효과가있었습니다. 이 외에도, 나는 "PartBundle.forceUpdate()"의 호출이 어떤 관절을 회전 한 직후에 필요하다는 것을 발견했다. –
예, 일반적으로 씬에 캐릭터를 배치하면 팬더가 자동으로'character.update()'를 호출합니다.하지만 직접 도형을 추출하면 직접 호출해야합니다. 내 대답이 마음에 들면 동의 함 버튼을 클릭하여이 대답을 수락하십시오. – rdb
감사! 끝났다! 이러한 함수는 유용하지만, Panda3D의 문서를 탐색하는 데 시간이 걸립니다. 당신 같은 전문가로부터 답을 얻은 행운이 있습니다, 다시 한번 감사드립니다! –