General Category > ASL Scripts

Spline exporting

(1/1)

csf:
Is it possible to export spline data in an export script? Or is only mesh data assessable?

Kubajzz:
Spline data is accessible. If you give me a description of the export format, I can write that script for you.

csf:
Its called .modxml its a custom xml format, which supports models, textures, animations, and spline data. It was designed for use with the roller coaster tycoon 3 custom scenery importer.

Here is an example of the spline part of the format

--- Quote ---<spline name="peepPath02" cyclic="0">
      <node>
         <position x="6.822311" y="-0.024619" z="0.000000"/>
         <controlPrev x="7.822311" y="-0.024619" z="0.000000"/>
         <controlNext x="5.822311" y="-0.024619" z="0.000000"/>
      </node>
      <node>
         <position x="1.481718" y="0.000000" z="0.000000"/>
         <controlPrev x="1.981718" y="0.011800" z="0.000000"/>
         <controlNext x="2.322913" y="-0.016683" z="1.335551"/>
      </node>
      <node>
         <position x="1.999660" y="-0.003365" z="4.988674"/>
         <controlPrev x="2.499660" y="0.008435" z="4.988674"/>
         <controlNext x="1.292751" y="-0.020048" z="6.324225"/>
      </node>
   </spline>
--- End quote ---

Thank you for any help you can provide.

Kubajzz:
I gave it a shot and I think I found a possible solution.

Your export format requires 2 things: the node positions and the tangent handles information.

As far as I know neither of these can be directly accessed using ASL and there's no reasonable way to get this data in a script. However if you save your .an8 file and open it in a text editor, you can get all you need. This "manual format conversion" is probably the easiest way, although it's not very comfortable. It's not worth writing a converter unless you need to export a lot of splines...

Here is a sample spline saved in the .an8 format:


--- Code: ---pathcom {
  name { "path01" }
  extendable { }
  bezier {
    closed { }
    knot { (-34.513 -1.8584 0) (-4.3659 11.74 0) (21.652 0.64896 0)
      corner { }
    }
    knot { (-9.9115 20.088 0) (10.334 0.14643 0) (-10.334 -0.14643 0) }
    knot { (30.442 0.08848 0) (-6.1504 -5.4866 0) (6.1504 5.4866 0) }
  }
}

--- End code ---

If you compare it to the .modxml sample you posted, it's not very difficult to figure out how to convert the formats:

* every "knot" row represents one "node"
* the first 3 numbers stand for the position of the node in the (x y z) format
* the following 2 sets of coordinates represent the "controlPrev" and "controlNext" tangent data in the (x y z) format
* if the "closed { }" row is present, the value of "cyclic" in the "spline" tag should be "1" (I guess...)
* all other data (such as "corner { }" and "extendable { }") can be ignored
This is what I figured out by reading the .modxml sample you posted and the an8 format specification, maybe there are more things you have to pay attention to...

I guess I didn't help you much, if you really need to speed up the process and you don't mind waiting several days, I can try writing an external converter for you.

csf:
Thanks for the information. I had a feeling this would not be possible to make with ASL looking at the spline commands we have to work with.

Thanks for the offer on an external converter, but I really don't need you to go through the trouble. Also if I really need it I could just make a simple one on my own.

I am actually thinking about working on making a program over the summer (right now during the semester I just don't have enough time) that would read and write a few 3D file formats including the ability to go from anim8or to modxml (I also know ASL does not support animation which I can get out of the anim8or file). My goal would be to make the program do allot more then just file conversions but I have to start some where :)

Navigation

[0] Message Index

Go to full version