3dsMax (COLLADAMax)

From COLLADA Public Wiki
Revision as of 01:18, 9 July 2007 by Elf (talk | contribs) (input Remi's text from email)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Product summary

This page is a work in progress. Do not hesitate to give a hand.

COLLADAMax is a COLLADA import and export plug-in for Autodesk 3ds Max.

Technical information

Software bugzilla]

  • forum:

[http://www.feelingsoftware.com/component/option,com_smf/Itemid,86/lang,en/ Feeling Software Forum]

==ColladaMax 3.03 has been released== 18:18, 8 July 2007 (PDT)

It improves the compliance with regards to standard materials, support for scrolling UV animations of bitmaps and a slew of other bug fixes. New versions of ColladaMaya and FCollada were posted as well. Please read the changelog for more information. Registered users can download Feeling Software's COLLADA Tools on our website's Downloads section. Registration is free.

Please note that previous versions of Feeling Software's COLLADA tools had a compliance issue with regards to the transparency factor within standard material. This issue is now corrected, but:

Data exported with previous versions of our COLLADA tools may import with inverted transparency in ColladaMax 3.03 and ColladaMaya 3.03.

ColladaMax 3.02 has been released

It includes a bunch of bug fixes. Please read the newly merged changelog for more information. Registered users can download Feeling Software's COLLADA Tools on our website's Downloads section. Registration is free.

Feeling Software is pleased to announce that ColladaMax 3.01 has been released. This new release includes a wide range of bug fixes, support for the latest version of 3ds Max, etc. Full details can be found below.

ColladaMax 3.01 has been released

  • 4062 by staylor
    • Extension to Bug311 && Bug293: Skinned animation BakeMatrix export is

kinda screwy... The bake matrices export had inconsistencies in the way mesh matrices were evaluated. In some cases, the matrix is evaluated with GetObjectTMAfterWSM, and in others GetNodeTM. This causes animations to be thrown out of wack when ObjTM is not identity. Also, bones should NEVER use ObjTM, as skin & physique use NodeTM, so ObjTM has no visual effect. The transform export has been updated to evaluate each node and export the relevant transform

  • 4012 by staylor
    • fix rotation sampling import. Instead of creating a euler directly

and trying to set frames on it, create and populate a hybrid interp controller (as before) then create a euler controller, copy the hybrid. This fixes flipping issues in the data.

  • 3995 by staylor
    • Fixed bad comparison that stopped derived objects (skins and morphs)

from assigning their materials.

  • 3973 by staylor
    • Fixed: Re-initing ColladaAttrib for instanced objects. Fixed

Load/Save of SimpleAttrib parameter block descriptions, moved the functions into ClassDesc. This is consistent with the Max method of obtaining pb descs. On load, it is important that we do not assign memory for max objects, if max free's it, it has to assign it. Fixed SimpleAttrib parameter block ID assignments. (Finally) Fixed extremely anoying heap corruption error on reset (or deleting the wrong objects). It is EXTREMELY important that NO data objects deleted by Max are created in Collada code. This WILL cause all sorts of memory faults.

ColladaMax 3.0 has been released

  • 3892 by staylor
    • Fixed bad #if statements causing wrong vector definition to be

compiled in Max version < 9

  • 3830 by staylor
    • ColladaMax: Added code to clean filename of XML characters on HLSL

import (as this is an extra URL attribute, it gets no special treatment on load, leaving us with raw XML characters). FUtils: exposed XmlToString

  • 3743 by staylor
    • SimpleAttrib has been updated to manage its (and derived classes)

param block descs. This should have been in an earlier commit, I dont know why its here again. Emitter export/import no longer relies on the mutation queue objects being present in the scene graph. Morphers no longer force target nodes to be exported, instead they create the needed geometry if it is not already present. The scene graph exports object hierarchies correctly, regardless of whether the parent nodes are exported. What this essentially means is that forced nodes do NOT export geometry. If an entity needs to force geometry. FCollada: FCDParticleComplex emitters now completely manage their mutation queue geometry instances. They will delete them on destruction. DO NOT set in visual scene instances (clone instead) FRenderer: FRControllerInstance has been updated to handle morph targets without scene graph instances. In this case, the controller instance will create new FRMeshs. TODO: Fix the FRMesh instance leak on object destruction?

  • 3725 by glaforte
    • ColladaMax: Fixed the export of XRef materials that was missing its

polygons set symbol.

  • 3719 by glaforte
    • ColladaMaya/ColladaMax: Fixed the skin object inter-operability

between Max and Maya. Had some issues with the generation of pivot points and their usage within the plug-in.

  • 3709 by staylor
    • (For the last commit too) Possible fix for 3ds maxs triggering

breakpoints on file reset. Added code for properly managing ParamBlockDesc2 items in the ColladaAttrib ClassDesc2. As each instance of the class creates a unique ParamBlockDesc2 desc it is the responsibility of the class to ensure that this description is deregistered and deleted from the ClassDesc

  • 3703 by claforte
    • Implemented export of particle instance of mesh geometry. Can now

import in GB successfully.

  • 3694 by staylor
    • Fixed incorrect export of disabled maps
  • 3546 by staylor
    • ColladaMax: Fixed export of look-at even when KeyMatrices option is

set Non PRS controllers now default to sampling the matrix. Added support for exporting World space modifiers when keying matrices. Added support for exporting non-std material textures, through both parameter name matching and the max function StdIDToChannel.

  • 3532 by staylor
    • Touch up animation export to correctly fall back to baking matrices

on non-prs controllers. This will correctly export link constraints or scripted transforms

  • 3517 by glaforte
    • COLLADA Tools: Follow the recent changes to FUError and to the

Material library.

  • 3490 by staylor
    • Fixed particle rotation scaling
  • 3483 by staylor
    • ColladaMax: Removed all traces of any references to non-max

attributes from the Particle System import/export - including the looping parameters on FCDEmitterParticle.

  • 3477 by staylor
    • Added TYPE_TIMEVALUE type support to ExportProperty, and added an

FUAssert(type is supported) to these functions for a quick feedback when an export does not work. Fixed export of Drag start/end time values

  • 3439 by staylor
    • Replaced several SetReference calls with ReplaceReference (this

ensures max's reference system pointers are initialized) Fixed export/import of Particle Speed chaos scale.

  • 3429 by glaforte
    • ColladaMax: Implemented the export of the start/end-time from the

animation timeline. FCollada: Re-implemented the writing out of the start/end-time.

  • 3425 by staylor
    • ColladaMax: TODO: Mutlimaps on standard particles can fail to import.

Also moved FCDConversionDiffFunctor out of FCDAnimationCurve.h into ConversionFunctions.h

  • 3420 by glaforte
    • ColladaMax: Fixed up the units/factors of a few force-related values.
  • 3409 by glaforte
    • ColladaMax: Added the export of force objects and the fields binding

them to emitters. The exported force fields are still parameter-less, though. Added the ForceExporter class to ColladaMax.

  • 3407 by staylor
    • ColladaMax: Completed import and export of all particle systems, with

the exception of MutationList import on PCloud and PArray FCollada: Support for particle systems is complete. Support for forces is coming.

  • 3384 by glaforte
    • ColladaMax: A couple of project fix-ups in order to get the project

to compile in Release Max 9.

  • 3380 by sli
    • Supported material color animation
  • 3378 by glaforte
    • ColladaMax: Modified the animation-related export options. Removed

the "single-anim" option. Added a "create-clip" option that pushes all the animations in one animation clip on export. Added a "enable-animations" option that enables/disables the export of animations. COLLADA Tools: Small typo interface change in FCDAnimation.

  • 3375 by staylor
    • ColladaMax: Basic particle import/export Includes support for spray,

snow, and blizzard. Other changes include standardizing import/export scaling functors using the FCDConversionFunctor super class. Removed the auto-delete of passed in Functors in favour of a static list of commonly used functors and local objects. Fixed potential issue of creating objects that are not already loaded (deferred plugin load issue) TODO: Refactoring on blizzard to subclass all common parameters, creating a import/export and class heirarchy similar to the simple particle class. This will make adding support for PArray, SuperSpray and PCloud trivial. TODO: Just noticed some times are not constant through export/import. This should be checked out.

  • 3358 by glaforte
    • ColladaMax: Fixed regression in the export of morph targets whose

instances have been deleted.

  • 3341 by glaforte
    • ColladaMax: Fixed the export of bump maps in the standard Blinn material.
  • 3307 by staylor
    • Bug 251: Images always export relative, regardless of export

settings. Fixed by applying ForceAbsoluteFlag on FUFileManager. Also fixed (recent) error exporting std materials.

  • 3299 by glaforte
    • ColladaMax: Public Bugzilla#264: ColladaMax doesn_t import all

textures. Fixed the detection of the NV_import mechanism that was exiting early. Ensure that the _valid_node_ flag gets set correctly when creating child nodes for the multiple instance special case. Allow for the finalization of 3dsMax node with no attached FCollada node.

  • 3296 by glaforte
    • ColladaMax: A first step to extra/id preservation. Refactored the

custom attributes for clarity and re-use: ColladaAttrib is now based on SimpleAttrib XRefCustomAttribute was replaced with ColladaAttrib. Re-organized the 4 class description classes.

  • 3288 by glaforte
    • COLLADA Tools: FCDGeometryPolygonsInput::set is now a private member.

Also fixed private Bugzilla#404 about the retrieval of the texture-texture coordinate set matches when dealing with material instances.

  • 3283 by glaforte
    • FCollada: A bit of a container usage clean-up. On my own time, I'll

add a fm::ptr_vector type in order to reduce the executable size of FCollada (at the cost of debug info). Right now, the library size reduction is about 18%.

  • 3267 by ewhittom
    • ColladaMax (bug #232) Fixed the asset units' export. Max always uses

generic units internally, no matter what are the display preferences. Max's generic units are centimeters, so everything we export from Max is in centimeters. I included some commented code to fetch units preferences if we ever want to convert every number before writing them to the COLLADA file.

  • 3227 by glaforte
    • FCollada and COLLADA tools: Renamed

FCDGeometryInstance::GetMaterialInstanceList() to GetMaterialInstances() for consistency. Modified the export of lights, cameras, scene nodes and the entity's note in order to use FCDExtra rather than the <extra> element directly. ColladaMaya: Continued the extra preservation task: properly link the scene node instances with the entities. Re-use the material instance structures.

  • 3216 by staylor
    • Feeling Veiwer: Contains many changes: SceneNode render is broken

down to update and render loops. Every node updates every frame, but may not render. Transform Update is now a downstream process - this means that SceneNodes GET their transforms, instead of the transform objects SETting the values. GetLocalTransform should be used whenever local transform is required. A variety of optimizations have been implemented, and are conditionally compiled via a list of defines in DebugPerformance, a new class for measuring frame render times. Bounding boxes, skinning/morphing updates, vertex animations, are fixed. FRTransform resets have been eliminated. Fixed materials disabled on skins. Implemented skew matricies. Intersection tests are being moved to a seperate namespace, FRIntersect ColladaMax: Upgraded to be compatible with 3ds Max 9 Added name attribute to geometry exported from max. Recursive map export implemented, but much further work is required in this area to standardize non-blinn map export.

  • 3216 by staylor
    • ColladaMaya: Fixed -ve colour indices on export.
  • 3204 by glaforte
    • ColladaMax: Fixed regression in the assignment of the Max texture

channels into the FCollada texture channels: glossiness and specular level textures were switched channels on export.

  • 3185 by staylor
    • Removed ComposteMtl, as we now use CompositeTexture
  • 3179 by ewhittom
    • ColladaMax: (public bug#208) An attempt to fix the group

export/import. Valid only for in-Max export-import sequences.

  • 3177 by staylor
    • Bug: 228 Added support for Mix map type, by multiplying the export

"amount" value by the mix amount. Fixed scaling of "amount" values. TODO: Check animation values. Reworked the import of materials to use compositeTexMap, rather than CompositeMtl. All textures load through the composite tex map onto the default StdMtl, and all channels of the StdMtl are set to 100% effect. Individual textures are then modified by their "Output" parameter for blending effects etc. TODO: Support correct amount export for textures.

  • 3165 by ewhittom
    • FCollada, ColladaMax, ColladaMaya, FViewer: Bug 225: Added the LINEAR

type for splines. Although LINEAR interpolation is a special case of BEZIER or NURBS interpolation, one could save a lot of space/memory by using the line spline type. I added the FCDLinearSpline class in FCollada. Max and Maya can now import lines by first converting them to a Bezier or NURBS representation. I tested the whole thing using Bezier curves generated by Max, changing their type to LINEAR, and comparing the linear result with its convex hull.

  • 3152 by ewhittom
    • FCollada, ColladaMax and ColladaMaya: Added PREMIUM_NURBS #ifdefs

excluding any NURBS surface related code from the non-premium build. Define the PREMIUM macro to enable any premium feature from FCollada.h.

  • 3138 by glaforte
    • COLLADA Tools: Fixed some ToPoint renamed to ToVector3. 3dsMax
  1. defines NEVER in the global namespace, so #undef it before using it in

our COLLADA enumerators.

  • 3129 by ewhittom
    • ColladaMax: Fixed NURBS surface import bug. Note: For the moment,

some exports containing NURBS surface data will not automatically work on the viewer. Try to re-import the scene back into Max, and then export it again and feed it to the viewer. In most cases it fixes the data. Same thing with Maya, except that instead of re-import/export, just select the incorrect surfaces and perform a default "Rebuild surface" on them.

  • 3115 by staylor
    • Fixed very recent bug of morphers failing to link
  • 3109 by glaforte
    • Everything: All the code should now use fm::string, fm::vector and

fm::map. These structures do not exist in the default namespace anymore.

  • 3095 by staylor
    • ColladaMax: Fixed import of bones based on SID. Bones support

multiple roots, and different bones on instanced skins. When loading a skinned object, on a 2nd finalize the SkinImporter will check the originally created skin modifier bones list against the bones list provided in the ControllerInstance. If the bones do not match, the Derived Obj referencing the skin is cloned, assigned back to the node, and the import is finalized again onto the new instance. Exporting works in all tested cases. ColladaMaya: to do FCollada: Implemented sub id reading/searching etc. Implemented LinkExport/LinkImport on ControllerInstance in order to hook up local versions of bone lists, based on <skeleton> tag etc

  • 3050 by ewhittom
    • Implemented a "best effort" approach to the NURBS texture problem.

Max and Maya do not seem to give a lot of importance to NURBS texture since in both documentations NURBS are viewed only as a mean of generating smooth polygon meshes. ColladaMax: I had two choices of data formats for NURBS textures: user defined (raw) and chord length parameterization (CLP) data formats, the later using the CV hull to give a better, more natural, texture coordinate information. Max does not take back its own data, despite what the documentation says. Wether I use raw or CLP format, Max screws the texture information, so I chose not to import it anymore and use the default setting. I'll contact Autodesk to see what's going on in there. The Viewer handles CLP data correctly, but Maya will not be able to import it (the rotation angle is ok, but the offsets and scales are incorrect due to CLP output). ColladaMaya: Added correct texture surface export. NURBS texture information is stored in the material's place2dTexture node. At export time, I build a default texture surface and transform it using the node's simplified rotation, translation and scale parameters.

  • 3050 by ewhittom
    • Since these parameters are exported as extra children in the effect's

texture element, I don't need to do anything at import time if these parameters are imported as well. Still, I added some logic to get back the parameters from the texture surface if they're missing. FViewer: I added some code to disable the use of placement matrices in FRTexture when the texture is bound to a NURBS surface. Bottom line: Max -> Export works, import does not. Maya -> Export works, import works for all Maya-generated files and some isolated cases of Max-generated files. Viewer -> Can display the export data of both Max and Maya.

  • 3040 by glaforte
    • ColladaMax: FS Public Issue #219: Wrong sampled animation start time.

Implemented the patch provided by Cory McWilliams.