RIGID_SHAPE_TYPE='rigid_shape_type'
RIGID_PROCESS_TYPE='rigid_process_type'
RIGID_BONE_NAME='rigid_bone_name'
-CONSTRAINT_A='constraint_a'
-CONSTRAINT_B='constraint_b'
+#RIGID_LOCATION='rigid_loation'
+RIGID_GROUP='ribid_group'
+RIGID_INTERSECTION_GROUP='rigid_intersection_group'
+RIGID_WEIGHT='rigid_weight'
+RIGID_LINEAR_DAMPING='rigid_linear_damping'
+RIGID_ANGULAR_DAMPING='rigid_angular_damping'
+RIGID_RESTITUTION='rigid_restitution'
+RIGID_FRICTION='rigid_friction'
+CONSTRAINT_A='const_a'
+CONSTRAINT_B='const_b'
+CONSTRAINT_POS_MIN='const_pos_min'
+CONSTRAINT_POS_MAX='const_pos_max'
+CONSTRAINT_ROT_MIN='const_rot_min'
+CONSTRAINT_ROT_MAX='const_rot_max'
+CONSTRAINT_SPRING_POS='const_spring_pos'
+CONSTRAINT_SPRING_ROT='const_spring_rot'
+
###############################################################################
# import
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.location[0]
- rigidBody.position.y=obj.location[2]
- rigidBody.position.z=obj.location[1]
+ #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[2]
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=0
- rigidBody.target=0
- rigidBody.weight=1
- rigidBody.linearDamping=0
- rigidBody.angularDamping=0
- rigidBody.restitution=0
- rigidBody.friction=0
+ 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]
constraint.setName(obj.name[1:].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]
# 書き込み
print('write', path)
RIGID_SHAPE_TYPE='rigid_shape_type'
RIGID_PROCESS_TYPE='rigid_process_type'
RIGID_BONE_NAME='rigid_bone_name'
-CONSTRAINT_A='constraint_a'
-CONSTRAINT_B='constraint_b'
+#RIGID_LOCATION='rigid_loation'
+RIGID_GROUP='ribid_group'
+RIGID_INTERSECTION_GROUP='rigid_intersection_group'
+RIGID_WEIGHT='rigid_weight'
+RIGID_LINEAR_DAMPING='rigid_linear_damping'
+RIGID_ANGULAR_DAMPING='rigid_angular_damping'
+RIGID_RESTITUTION='rigid_restitution'
+RIGID_FRICTION='rigid_friction'
+CONSTRAINT_A='const_a'
+CONSTRAINT_B='const_b'
+CONSTRAINT_POS_MIN='const_pos_min'
+CONSTRAINT_POS_MAX='const_pos_max'
+CONSTRAINT_ROT_MIN='const_rot_min'
+CONSTRAINT_ROT_MAX='const_rot_max'
+CONSTRAINT_SPRING_POS='const_spring_pos'
+CONSTRAINT_SPRING_ROT='const_spring_rot'
+
###############################################################################
# import
meshObject[CONSTRAINT_A]=io.rigidbodies[c.rigidA].getName()
meshObject[CONSTRAINT_B]=io.rigidbodies[c.rigidB].getName()
+ meshObject[CONSTRAINT_POS_MIN]=bl.VtoV(c.constraintPosMin)
+ meshObject[CONSTRAINT_POS_MAX]=bl.VtoV(c.constraintPosMax)
+ meshObject[CONSTRAINT_ROT_MIN]=bl.VtoV(c.constraintRotMin)
+ meshObject[CONSTRAINT_ROT_MAX]=bl.VtoV(c.constraintRotMax)
+ meshObject[CONSTRAINT_SPRING_POS]=bl.VtoV(c.springPos)
+ meshObject[CONSTRAINT_SPRING_ROT]=bl.VtoV(c.springRot)
for meshObject in reversed(constraintMeshes):
bl.objectMakeParent(container, meshObject)
bone_name=bone.getName()
meshObject[RIGID_BONE_NAME]=bone_name
+ #meshObject[RIGID_LOCATION]=bl.VtoV(rigid.location)
+ meshObject[RIGID_GROUP]=rigid.group
+ meshObject[RIGID_INTERSECTION_GROUP]=rigid.target
+ meshObject[RIGID_WEIGHT]=rigid.weight
+ meshObject[RIGID_LINEAR_DAMPING]=rigid.linearDamping
+ meshObject[RIGID_ANGULAR_DAMPING]=rigid.angularDamping
+ meshObject[RIGID_RESTITUTION]=rigid.restitution
+ meshObject[RIGID_FRICTION]=rigid.friction
+
for meshObject in reversed(rigidMeshes):
bl.objectMakeParent(container, meshObject)