+ # rigid body
+ rigidNameMap={}
+ for i, obj in enumerate(self.oneSkinMesh.rigidbodies):
+ rigidBody=io.addRigidBody()
+ rigidBody.setName(obj.name.encode('cp932'))
+ rigidNameMap[obj.name]=i
+ boneIndex=boneNameMap[obj[RIGID_BONE_NAME]]
+ if boneIndex==0:
+ boneIndex=0xFFFF
+ bone=self.builder.bones[0]
+ else:
+ bone=self.builder.bones[boneIndex]
+ rigidBody.boneIndex=boneIndex
+ #rigidBody.position.x=obj[RIGID_LOCATION][0]
+ #rigidBody.position.y=obj[RIGID_LOCATION][1]
+ #rigidBody.position.z=obj[RIGID_LOCATION][2]
+ rigidBody.position.x=obj.location.x-bone.pos[0]
+ rigidBody.position.y=obj.location.z-bone.pos[2]
+ rigidBody.position.z=obj.location.y-bone.pos[1]
+ rigidBody.rotation.x=-obj.rotation_euler[0]
+ rigidBody.rotation.y=-obj.rotation_euler[2]
+ rigidBody.rotation.z=-obj.rotation_euler[1]
+ rigidBody.processType=obj[RIGID_PROCESS_TYPE]
+ rigidBody.group=obj[RIGID_GROUP]
+ rigidBody.target=obj[RIGID_INTERSECTION_GROUP]
+ rigidBody.weight=obj[RIGID_WEIGHT]
+ rigidBody.linearDamping=obj[RIGID_LINEAR_DAMPING]
+ rigidBody.angularDamping=obj[RIGID_ANGULAR_DAMPING]
+ rigidBody.restitution=obj[RIGID_RESTITUTION]
+ rigidBody.friction=obj[RIGID_FRICTION]
+ if obj[RIGID_SHAPE_TYPE]==0:
+ rigidBody.shapeType=pmd.SHAPE_SPHERE
+ rigidBody.w=obj.scale[0]
+ elif obj[RIGID_SHAPE_TYPE]==1:
+ rigidBody.shapeType=pmd.SHAPE_BOX
+ rigidBody.w=obj.scale[0]
+ rigidBody.d=obj.scale[1]
+ rigidBody.h=obj.scale[2]
+ elif obj[RIGID_SHAPE_TYPE]==2:
+ rigidBody.shapeType=pmd.SHAPE_CAPSULE
+ rigidBody.w=obj.scale[0]
+ rigidBody.h=obj.scale[2]
+
+ # constraint
+ for obj in self.oneSkinMesh.constraints:
+ constraint=io.addConstraint()
+ constraint.setName(obj[CONSTRAINT_NAME].encode('cp932'))
+ constraint.rigidA=rigidNameMap[obj[CONSTRAINT_A]]
+ constraint.rigidB=rigidNameMap[obj[CONSTRAINT_B]]
+ constraint.pos.x=obj.location[0]
+ constraint.pos.y=obj.location[2]
+ constraint.pos.z=obj.location[1]
+ constraint.rot.x=-obj.rotation_euler[0]
+ constraint.rot.y=-obj.rotation_euler[2]
+ constraint.rot.z=-obj.rotation_euler[1]
+ constraint.constraintPosMin.x=obj[CONSTRAINT_POS_MIN][0]
+ constraint.constraintPosMin.y=obj[CONSTRAINT_POS_MIN][1]
+ constraint.constraintPosMin.z=obj[CONSTRAINT_POS_MIN][2]
+ constraint.constraintPosMax.x=obj[CONSTRAINT_POS_MAX][0]
+ constraint.constraintPosMax.y=obj[CONSTRAINT_POS_MAX][1]
+ constraint.constraintPosMax.z=obj[CONSTRAINT_POS_MAX][2]
+ constraint.constraintRotMin.x=obj[CONSTRAINT_ROT_MIN][0]
+ constraint.constraintRotMin.y=obj[CONSTRAINT_ROT_MIN][1]
+ constraint.constraintRotMin.z=obj[CONSTRAINT_ROT_MIN][2]
+ constraint.constraintRotMax.x=obj[CONSTRAINT_ROT_MAX][0]
+ constraint.constraintRotMax.y=obj[CONSTRAINT_ROT_MAX][1]
+ constraint.constraintRotMax.z=obj[CONSTRAINT_ROT_MAX][2]
+ constraint.springPos.x=obj[CONSTRAINT_SPRING_POS][0]
+ constraint.springPos.y=obj[CONSTRAINT_SPRING_POS][1]
+ constraint.springPos.z=obj[CONSTRAINT_SPRING_POS][2]
+ constraint.springRot.x=obj[CONSTRAINT_SPRING_ROT][0]
+ constraint.springRot.y=obj[CONSTRAINT_SPRING_ROT][1]
+ constraint.springRot.z=obj[CONSTRAINT_SPRING_ROT][2]
+