Importers: Status, features, future

There is an built-in “.ase” importer in Xith3d. That’s nice. Also on the Xith-Toolkit page I read some more importers are basically there, like MD2, OBJ, etc. but they’re all marked as “draft”.

Is the Ase importer the most complete one for Xith3d? Will there be more importers in future?

Is there a list, which important features are being supported, which are still missing, and so on? (For example: animation, multi-texturing, …)
(Maybe the list could include Ase as well as the toolkit importers) ?

If the Ase importer is the most complete one for Xith3d: I could use some 3d models but they are not in Max/Ase format. I could (let) convert them however with a tool like Deepexplorer, which can read Ase but not export (just .asc). http://www.righthemisphere.com/products/dexp/formats.htm
So I suppose I’ve got a problem: would like to import some 3d models to Xith3d but it can’t read the format… :slight_smile:

What format are your models in? Could you write the importer and contribute it to Xith?

The MD2 loader, 3DS loader and OBJ loader are marked draft because they haven’t been through any rigourous testing or been used in any solid project to ensure quality. (I marked them that way).

The MD2 and OBJ should be complete to the format. The 3DS loader is missing a few relatively important chunks (transparency for one, environment maps/multitexturing being another). However I’ve not got enough time to get anything done, let alone the 3DS loader. The source is available in each of the downloads and making additions shouldn’t be too tricky.

Kev

[quote]What format are your models in? Could you write the importer and contribute it to Xith?
[/quote]
Various formats like Maya, Lightwave, …
I don’t think I’m smart enough to write importers for these formats.

[quote]The MD2 and OBJ should be complete to the format.
[/quote]
Ok thanks for the info. Also thanks for having developed these importers!

a maya loader would rock!. but i bet that is well tricky. they seem to change lots of stuff every update they make. maya5 loader would be sweet.

3ds loader is cool :slight_smile: duss animation. hope kev has time to tinker with it more :wink:

I heard some dude made a MD3 loader, I wonder where’d he go :stuck_out_tongue:

If anyone does fancy having a go at a Maya Loader, the ASCII format seems to be here:

http://caad.arch.ethz.ch/info/maya/manual/FileFormats/

Kev

How to make approved for model loaders? I coded a MD2 loader from my own , trying to keep code clean and optimized enough (load < 1sec) to be efficient. I’m currently designing it for xith.

It would be interesting to have a “wish list” to know what kind of model format is the most plebiscited :slight_smile:

[quote]It would be interesting to have a “wish list” to know what kind of model format is the most plebiscited :slight_smile:
[/quote]
Well, I’d vote for Maya and Lightwave. :wink:
I’ve been surprised how many (3d) artists using these applications I’ve met in industry. Interestingly enough, several times they used both: one to model, the other one to animate. I think several professional studios do this, too: Ground Control (1 - my favourite PC game ever) used Lightwave, and if I remember correctly the ID guys do currently do something similar (LW -> Maya, or such?)

Most important, however: not to have hundreds of importers to Xith3d, all with “draft” status (hey Kev, this one isn’t intended towards you, I’m more generally speaking :-), but a few very solid ones which include all “common” features.

Also let’s not forget the skeleton/animation stuff: if an importer misses this it could be a knock-out argument.

Thanks for metioning that, seem to be in an over-sensitive mood today :wink:

However, I disgree slightly with the not having lots of importers. From a commerical point of view its really important to get a couple just right but from a hobbiest view where you don’t have the money for the tools (or more annoyingly the artists) its important to support a large range of formats to make use of the free/community art around. I realise convertors can be used to switch between formats but there rarely do a clean conversion. (hmmm… idea, maybe I’ll write a model conversion tool at some point :slight_smile: )

Kev

[quote]If anyone does fancy having a go at a Maya Loader,
[/quote]
I already started with Maya loader and I have functional parser already. Parser is done with JavaCC, so it is very simple to code if you are familiar with BNFs, grammars, etc. But, anyway, for now it is very application-specific - I have to import animated characters to Xith3D, so this is not only Maya loading part, but alsi skeletal animations, vertex programming, etc. involved.

The best idea is to write full interpreter for MEL that will operate on Xith3D-style scenegraph, but for that we will have to make all Maya-compatible nodes. Writing interpreter is not so complicated, but the most complicated part (for me) is to reconstruct MEL execution environment. And, of course, I don’t want to re-invent Maya.

Yuri

P.S. When it will be ready? Have no idea for any public version for now.

[quote]The 3DS loader is missing a few relatively important chunks (transparency for one, environment maps/multitexturing being another).Kev
[/quote]
With the help of And and Javacooldude you’ve added transparency recently, isn’t it? :slight_smile: Sounds fine.
Will multi-texturing be included, too?
In case of that I think I could well use your loader, too.

Btw I’m not familiar with 3d-Studio:

  • .3ds is the 3D-Studio binary file format.
  • .asc is the ASCII version of that.
  • .ase is the 3D-Studio “ASCII Scene Export”. Aside ASCII, what’s the difference to .3ds please ?

Thanks. :slight_smile:

Should be nothing other than ascii.

Not sure about multitexture support, I didn’t find anything in the spec to describe it… but then the spec isn’t very good (at least the one I’ve got). I can try on next patch of time.

Kev

I see. Do William and you share some code when it comes to the task of transforming/computing the 3d-studio data to Xith3d? Or is it better to have two totally different loaders?

[quote]Not sure about multitexture support, I didn’t find anything in the spec to describe it… but then the spec isn’t very good (at least the one I’ve got). I can try on next patch of time.
[/quote]
Thanks a lot! Good importers help Xith3d a lot. :slight_smile: And of course the Xith3d users. :wink:

Currently the code bases are completely seperate, although there was a topic recently where we talked about combining bits and pieces.

Tbh, I view my loader as a stop gap, there’s a central code base for parsing 3DS files already in existence which I believe there is someone working on the Xith use of…

Kev

There’s a free plugin for Maya, which exports an ASE file. Not animated, I’m afraid…

It’s on the Epic game page. For Maya5 for example it’s named: ActorXTool_Maya50_230.zip Maya 5.0/5.0.1
Anyone maybe with experiences on this plugin?

Well, the task of loading 3d models to Xith is still a very tricky one when you depend on external 3d models (be it from (free) Web sites or from designer friends far away). However the task improves, slowly but steady. It’s very good to see Kevin’s nice 3DS loader improve over the time, as well as David’s and William’s ASE loader. (I read about in the forum, so far I’ve just used the 3ds loader).
Would it be a good moment to think about joining the efforts of Kevin’s and David/William’s loader?

I know a good importer is a very tough task and I’m just a importer user, so it’s easy for me to mutter about “let’s join forces” blabla. Btw. does anyone need a 50% finished Lightwave importer? :wink:
Basically what’s my “vision”: for example Kevin works on his animation support for 3DS files and voila - the support’s also there in the ASE loader. Because they share some kind of “xith importer base” or such, oh well.

It’s good that Maya exports ASE (is it the same format do you know or just the same extension?) The documents on ASE are very scarce, I had a fairly hard time finding something as trivial as the pivot point (and worked it out just by exporting two files and diff-ing them…).

It’s crazy that MAX doesn’t import ASE files too since it exports them.

Just how would the joint effort work exactally? Would there really much code that would be shared? The only code really in the Ase loader which is fairly generic is my TransformGroup chaining (the TG Trees) code. I was considering plonking that in a generic geom loader class but couldn’t see an immediate use for it (if there is one please tell me). Maybe any animation stuff would be more generic too although as you know it’s non-existant in the ASE loader.

I am all for defining some Loader interface which is actually used however - although that’s not exactlly sharing code just agreeing on a common way of accessing the data.

Cheers,

Will.

[quote]It’s good that Maya exports ASE (is it the same format do you know or just the same extension?)
[/quote]
The export is an ASCII file, starting with: *3DSMAX_ASCIIEXPORT

[quote]It’s crazy that MAX doesn’t import ASE files too since it exports them.
[/quote]
Yes, indeed. I read that Maya doesn’t export the .OBJ format properly, and it’s from Alias, like Maya is. :expressionless:
So now we found a free plugin for Maya to write static ASE files, and on the Maya homepage there’s a free plugin to read 3DS files. What’s missing is reading ASE files and writing 3DS files. So that you could tell all your 3dStudio and Maya friends: give me some ASE or 3DS file please and let me import it to Xith! :slight_smile:

[quote]Just how would the joint effort work exactally? Would there really much code that would be shared? The only code really in the Ase loader which is fairly generic is my TransformGroup chaining (the TG Trees) code. I was considering plonking that in a generic geom loader class but couldn’t see an immediate use for it (if there is one please tell me). Maybe any animation stuff would be more generic too although as you know it’s non-existant in the ASE loader.
[/quote]
Well, I’ve confess I don’t know the Java3d loaders. Maybe they already do something we should think of.

For a start it would be important that the loaders use the same interface, so that the user can really change them simply, like:


Loader3DS loader1 = new Loader3DS(flags);  // Like GenerateMipMap etc.
LoaderASE loader2 = new LoaderASE(flags);
LoaderLWO loader3 = new LoaderLWO(flags);
NodeLoaded node = loaderX.load("File.xzy");
...
node.nextAnimationFrame etc.

  • Animating a loaded model should basically work in the same way for the user, no matter of the loaded format. Or am I too optimistic about the complexity of animation?
  • NormalGeneration: we talked about in another thread. Ideally it would belong to the Xith core/utils package.
  • UV maps: don’t know how it’s handled in ASE and 3DS but for Lightwave (LW in short) you’ve to double vertex pairs and use new UV pairs when the UV pair isn’t the same for one vertex. This however can disturb the smoothing/vertex-normals information, so a general “magic” routine could be nice for all loaders needing such stuff. Comparable to the NormalGeneration one, but really just loader centric. :slight_smile:
  • Your nice TransformGroup chaining (TG trees) should be a common thing to loaders. I don’t know how far Kevin is with that topic on the 3ds loader front.

[quote]I am all for defining some Loader interface which is actually used however - although that’s not exactlly sharing code just agreeing on a common way of accessing the data.
[/quote]
Probably an interface would be a good starting point. To standardize the loading process for the user as a first step.
However sharing code could be nice, too. Having your TG-tree stuff in the 3DS loader would be as nice as having Kevin’s animation stuff in your ASE loader. And so on. :slight_smile:

One day there should be also support for “high tech” stuff like Multi-Textures. 3DS and ASE don’t know this feature? Lightwave does; but it’s the last activley used (by it’s modeler) format basing on geometry. While .MAX and .MB/.MA base on edit-command-history, so that it’s probably very difficult to read in a .MAX or .MB/.MA file directly for a general Xith loader. Commercial convertors like DeepExploration or PolyTrans always use the modeler’s DLLs to let do the edit-command-history to geometry building, so they only work on the artist’s machines…

In the OpenSource area the modeler named Blender is being used in nice ways. {Edit:} However so far I failed to import/export the basic 3DS format (the used plugin reported errors; however I read there are other plugins?).

So we see: not only we Xith users are keen on nice importers. :wink:

Have you think on just adding *.x format?

I’ll explain.I’m a 2d/3d artist. I have experienced good results with *.x (directx) format.

IMHO most weird and problems bringer feature in format conversions is animation. Even more when traslating bones and weights. For this, imho, best way to go is this format.

See, you are all talking about Max, Lightwavem, Maya…you are gonna need developing time for each…! and trust me, each version adds more functions, usually require heavy remake, so often importers stay tied to an old package version.

dx files, in what is mesh uvs, smoothing, keep compatible since lot of time. A dx5 , 7, etc mesh opens well in a dx8, 9 engine.

dx8 *.x format can be loaded with its bones, animation and weights, in any dx8, dx8.1 or dx9 engine. So it seems quite compatible, at least is in this file format…

Don’t take me wrong, I’m not a MS fan, is just this format as solved much issues for me. The format can be text or binary, and carries things like interpolation (spline or linear) , materials(several values of it), vertex colors , bones, weights, keyframes, etc, etc.

And as far as I know you don’t need to support all.

  • Maya has got a free plugin for export x. And it said to wrk very well. That’d do for character animations, but…also for objects, levels, etc :slight_smile:

-Max has panda exporter. version for Max 6 works pretty well. Anyway, the user needs to get used a pair of sessions with it, as there are tricks. But it works well. Also free.

-Lightwave has also a free dx8 exporter (I tend to thinkdx 8 version is the more standard)

-XSI also has a free one.

-3d canvas

-blender (soon)

-truespace 4 with free plugin. 6.6 with comercial plugin.

-Hash animation Master with cheap plugin…

-Milkshape, but as Milkshape do not support weights (for human type of joint blending) it’s seen not so nicely.

-free deled editor (this is only for level editing)

  • free zanooza modeller (objects, very good)

And there are several more. But don’t want to bore you…

Just i keep not understanding why engines make 3 times the effort to support 3 packages instead of this format and they’re done… :wink:

Just a comment.

:slight_smile:

btw, in what refers to character animation, if weights per bone is to performance wasting (it ws for old pc games) , stick with md2.

But…imho that one has several problems/limits (of course much more limited than *.x)

If were to add md2, I think first in sometype of interpolation between keyframe-meshes (like GameStudio does) , so the engine generates the interpolation between two OBJs. I know obj is generally supported in java, and is one of the best, if not the best static mesh format.

Of course, the way to use less memory is a bone based format instead of interpolated keyframe meshes (wether if you do with md2, or my idea of interpolated OBJs)

Bombadil…

Blender already even import/export md2 :slight_smile:

but also 3ds, OBJ (I have imported a 2000 tris character into blender, modelled in Wings3d) and several others.

animations, if bone based, are way mor ecomplex to add to a format.