From: Guillaume L. <gla...@fe...> - 2005-10-28 17:32:42
|
Hello everyone, This new weekly development build focuses once again on COLLADA 1.4. Christian has done quite a bit of work on merging the experimental physics project with the main ColladaMaya project. He's also been adding the export of the NIMA physical entities. I upgraded the export to export the strongly-typed elements for lights and cameras. For the import of COLLADA 1.4, we will start, soon, to integrate the technology built in conjunction with Autodesk and FSCView, to save programming effort. I would also like to welcome Jian Zhang to the project. He will focus mainly on the export and import of ColladaFX. ColladaFX has not yet been ratified, so his work is mostly prototyping, at this point. Stay tuned for a full export/import of the CG profile of ColladaFX. As well, I've added a "curve-constrain" sampling export option, on a user's request. This new export options enforces the export of sampled values within their animation curve's values. This export options doesn't work very well with "bake matrices", but will work nicely with all variable sampling functions. On a side note, last week's Development Build saw the split of the importer and the exporter. The reason for this was to have independent options for both. In order to split the importer and the exporter, we had to create new file-type identifiers for each. If Maya complains that it cannot find the "COLLADA" file type, you will need to access the export or import options dialog at least once to force Maya to update its cache. You can download this new build here: http://prdownloads.sourceforge.net/colladamaya/ColladaPluginForMaya-0.79.zip?download Have a good week-end! Regards, Guillaume Laforte Feeling Software Inc. http://www.feelingsoftware.com <Currently migrating to the @feelingsoftware.com domain, please update your address books!> _______________________________________________________________________________ Recent Changes: 28/10/05 (Release 0.79) (gla...@fe...) Curve-Constrain Sampling: This is a request from the SF board: to constrain the sampled times to a curve's range. Implemented curve-constrain sampling for simple curves. Updated the documentation. COLLADA 1.4: Exporter upgrade. Upgrade the export of the camera library to COLLADA 1.4. Upgrade the export of the light library to COLLADA 1.4. Refactored the export of general, animated, parameters by abstracting out a few common code repetition. Upgrade the export of the skin controller, once more. Upgrade the export of the morph controller. 27/10/05 (cla...@fe...) Physics: Fixed both Native and Nima so that it exports the rigid body position and orientation as expected. Somehow the code had been disabled during the recent refactoring. Verified that both now work as expected. Physics: Implemented basic export of rigid constraint for Nima, including sharing of a bunch of functions with Native. 26/10/05 (zh...@fe...) CG FX: Textures, sampler2D, and samplerCUBE are now supported. CG FX: Replace material library with effect library. Export cgfxshader node while string, float, and color parameters are supported. (cla...@fe...) Nima physics: Unlike the Native rigid bodies, Ageia rigid bodies are derived from transforms, and they contain visual nodes. When visiting an Ageia rigid body, we must export the rigid body definition and instance, *and* export it as a transform so that the corresponding visual node and children are properly added to the visual scene. Nima physics: Export physics material for each rigid body. Also moved includePhysicsMaterial() method in the base class since its definition is identical across Ageia and Native. Nima physics: Continued sharing code between Nima and Native export. Nima export of physics scenes (including common params) and rigid body instances is now working. Verified that Native export has no regression. Physics: Corrected export of angular velocity, which wasn't fetching the right attributes and was exported in radians instead of degrees. Physics: Never export the "nimaInternalPhysics" group, since it's only used by Nima to work-around a Maya bug. Physics: Shared findRegularShapesForRigidBody. Verified that Native scenes have no regression. Physics: Shared a lot more code. Now exporting physics and regular shapes, including their transforms. Physics: Export Nima mass and density. 25/10/05 (gla...@fe...) COLLADA 1.4: <COLLADA> and <scene> elements: Changed the version from '1.4' to '1.4.0'. Added the <asset><created>. The same date as <modified> is currently exported. Export the visual scene library. Import and export the visual scenes, with backward compatibility for COLLADA 1.3. Allow for multiple visual scene libraries and look for the correct visual scene by id. (cla...@fe...) Physics: Added a class to handle export of Ageia/Nima physics. Currently, this is mostly a stub that is not yet enabled. Physics: Call the Ageia/Native includeRigidBody functions during traversal of the scene. 23/10/05 (cla...@fe...) Physics: Create <shape>, <dynamic>, <mass>, <density> and <mass_frame> in common technique, instead of directly under <rigid_body>. Also refactored code to share with Nima. Physics: Refactored the way rigid constraints attachments were created. They now get created under <physics_model><rigid_constraint>. Use "body" attribute on attachment for rigid body attachment, or "target" attribute on <instance_rigid_constraint> for visual node attachment. Added a DAE_AddElement that takes a bool as input. Physics: Moved rigid constraint limits and other parameters under the common technique where they belong. Also fixed <interpenetrate> to use boolean instead of numerical value. Physics: Updated most of the common-profile parameters for rigid constraint to the latest spec, e.g. <limits><linear><min>0 0 0</min><max>0 0 0</max><limits>. Physics: Updated spring element to latest spec. Physics: Extensive refactoring of the way shapes are handled, to reuse as much code as possible with Nima export. Also removed some code paths that were not supported or were so rarely used that they were not worth the maintenance hassle. 22/10/05 (cla...@fe...) Physics: Refactored Collada physics code, in preparation for Nima export support: created a base library class (DaeBaseLibrary), from which two new libraries are derived: DaePhysicsModelLibrary and DaePhysicsSceneLibrary. Created a new DaePhysicsScene abstract class from which two engine-specific scene classes will be derived: DaeNativePhysicsScene (for Maya native rigid body dynamics) and DaeAgeiaPhysicsScene (for Ageia/Novodex/Nima). Also continued updating the code for Collada Physics 1.4: Define rigid bodies in a <physics_model> inside its library. Physics: Moved code to export physics scene's common-profile technique in base scene class, so it can be reused for Nima export. No longer use parameter multi-representation for stuff inside technique, i.e. use <gravity>0 -9.8 0</gravity> instead of <gravity><float3>0 -9.8 0</float3></gravity>. Use lowercase "gravity", "timestep" instead of uppercase. Physics: Moved code to export physics material common-profile technique in base scene class, so it can be reused for Nima export. No longer use parameter multi-representation for that either. Use lowercase element names. Use <restitution>, not <elasticity>. Physics: Added physics material library. Removed COLLADA_X_SEMANTIC, *XY* since the anisotropic friction won't be supported in Collada Physics 1.4. Physics: Use the physics material library instead of the regular material library. Physics: Use <linear_velocity>20. 0 0</linear_velocity> instead of <INITIAL_LINEAR_VELOCITY><float3>20. 0 0</float3></INITIAL_LINEAR_VELOCITY>. Same for angular velocity. Also, put that stuff in a technique, but only if that technique will contain non-default parameters. Otherwise we'd end up wasting space. Eliminate utility functions to export in parameter-multi-representation, since only the prototype physics code was using it and it's no longer part of the spec. Physics: No longer use <instance/> node. Instead, instance rigid bodies and constraints directly under <instance_physics_model>. Also, use <instance_rigid_body> and <instance_rigid_constraint> instead of <rigid_body> and <rigid_constraint>. Also, <instance_rigid_body> doesn't need id attribute, and uses body attribute instead of url to refer to a rigid body definition. Extracted rigid body export code in base class for reuse when exporting Nima. Physics: <rigid_body> has an sid, not an id. Use relative addressing when instancing: <instance_rigid_body body="./someRigidBody" target="#someVisualNode">. Since we're using relative addressing, we can now keep the names shorter since they don't need to be unique. (They just need to be unique within rigid bodies and constraints in a given physics model.) Reorganized the utility methods in the base scene class, for consistency. Physics: <rigid_constraint> has an sid, not an id. Use relative addressing when instancing: <instance_rigid_constraint constraint="./someConstraint">. 21/10/05 (cla...@fe...) Physics: The "Physics" plug-in has been removed from ColladaMaya. The only usefulness of that plug-in was the physics shape, that allowed a user to create a capsule, ellipsoid, etc. Nima (Novodex for Maya) has a much improved physics shape, so the ColladaMaya physics project is completely obsolete. Nima is free, open-source and actively maintained, unlike the old physicsShape which hasn't been updated in months. Note that the protope Physics export support is still functional and will be updated to the (almost) final Collada 1.4 physics spec over the next week or so. Physics: In the long term, a lower-level dll should be used to bridge translation units with ColladaMaya. It would allow a different plug-in (e.g. Nima) to register callbacks for a given node type (e.g. "nxRigidBody?, and to fill some XML node with extra data. Likewise, it could eventually be used during import. Right now, Ageia's import/export library isn't fully functional yet, so there is not much point in designing or implementing such a mechanism immediately. Physics: In the short term, I'm planning to make an abstract class for some of the physics functionality, and to derive one version for Maya native and one for Nima. Only the regular methods to read attribute values will be used, so ColladaMaya will not have a direct dependency on Nima. Physics: Removed colladaPhysics scripts. Physics: Started updating Collada physics to latest spec. Use <library_physics_scene> instead of <library type="PHYSICS">. Use <physics_scene> instead of <physics_environment>. Physics: Use <instance_physics_model> instead of <physics_environment>/<node>. Physics: Renamed DaePhysicsLibrary.[h/cpp] to DaePhysicsNativeScene. |