3D Physics Rework, Other Stuff

-=-=-=-=-=-=-=-=-=-=-=-=-=-

3D Physics:
-Fixed "Bounce" parameter in 3D
-Fixed bug affecting Area (sometims it would not detect properly)
-Vehicle Body has seen heavy work
-Added Query API for doing space queries in 3D. Needs some docs though.
-Added JOINTS! Adapted Bullet Joints: and created easy gizmos for setting them up:
   -PinJoint
   -HingeJoint (with motor)
   -SliderJoint
   -ConeTwistJoint
   -Generic6DOFJoint
-Added OBJECT PICKING! based on the new query API. Any physics object now (Area or Body) has the following signals and virtual functions:
    -input_event (mouse or multitouch input over the body)
    -mouse_enter (mouse entered the body area)
    -mouse_exit (mouse exited body area)
   For Area it needs to be activated manually, as it isn't by default (ray goes thru).

Other:

-Begun working on Windows 8 (RT) port. Compiles but does not work yet.
-Added TheoraPlayer library for improved to-texture and portable video support.
-Fixed a few bugs in the renderer, collada importer, collada exporter, etc.
This commit is contained in:
Juan Linietsky
2014-09-15 11:33:30 -03:00
parent 5a2c3949e5
commit 14bc97998f

View File

@@ -317,14 +317,14 @@ class DaeExporter:
def export_mesh(self,node,armature=None):
if (node.data in self.mesh_cache):
return self.mesh_cache[mesh]
if (len(node.modifiers) and self.config["use_mesh_modifiers"]):
mesh=node.to_mesh(self.scene,True,"RENDER") #is this allright?
else:
mesh=node.data
if (mesh in self.mesh_cache):
return self.mesh_cache[mesh]
mesh.update(calc_tessface=True)
vertices=[]
vertex_map={}
@@ -519,7 +519,7 @@ class DaeExporter:
meshdata={}
meshdata["id"]=meshid
meshdata["material_assign"]=mat_assign
self.mesh_cache[mesh]=meshdata
self.mesh_cache[node.data]=meshdata
# Export armature data (if armature exists)
@@ -1094,7 +1094,14 @@ class DaeExporter:
mtx = posebone.matrix.copy()
if (bone.parent):
parent_posebone=node.pose.bones[bone.parent.name]
mtx = parent_posebone.matrix.inverted() * mtx
parent_invisible=False
for i in range(3):
if (parent_posebone.scale[i]==0.0):
parent_invisible=True
if (not parent_invisible):
mtx = parent_posebone.matrix.inverted() * mtx
xform_cache[bone_name].append( (key,mtx) )