NURBS Surface as "psurface" element


So I’m writing this COLLADA importer using COLLADA DOM. I’m using Feeling Software’s ColladaMaya to generate a simple NURBS taurus as a test case.

When I look at the DAE code, the surface is encoded as a <psurface> element instead of a <spline> as it does for NURBS curves.

<geometry id=“nurbsTorusShape1-lib” name=“nurbsTorusShape1”>
<psurface name=“nurbsTorusShape1” udegree=“3” vdegree=“3” closed_u=“0” closed_v=“0”>
<source id=“nurbsTorusShape1-lib-0-cvs”>




What are <psurfaces>? Where can they be found in the COLLADA documentation? Does COLLADA DOM parse them?

Also, can someone explain the current state of support for NURBS surfaces in COLLADA?


OK, This is weird…I just downloaded the new ColladaMaya, and it doesn’t export NURBS surfaces anymore.

To be more precise, I get the local transform (under <library_visual_scene> ), but curiously, the geometry library is missing.

Is it a bug or I forgot something?

<?xml version=“1.0” encoding=“utf-8”?>
<COLLADA xmlns=“” version=“1.4.1”>
<authoring_tool>Maya 7.0.1 | ColladaMaya v3.00 | FCollada v3.0</authoring_tool>
<comments>Collada Maya Export Options: bakeTransforms=0;exportPolygonMeshes=1;bakeLighting=0;isSampling=0; curveConstrainSampling=0;exportCameraAsLookat=0; exportLights=1;exportCameras=1;exportJointsAndSkin=1; exportAnimations=1;exportTriangles=0;exportInvisibleNodes=1; exportNormals=1;exportTexCoords=1;exportVertexColors=1;exportTangents=0; exportTexTangents=0;exportConstraints=1;exportPhysics=1;exportXRefs=1; dereferenceXRefs=0;cameraXFov=0;cameraYFov=1</comments>
<unit meter=“0.010000” name=“centimeter”/>
<physics_scene id=“MayaNativePhysicsScene”>
<gravity>0 -980.000000 0</gravity>
<visual_scene id=“VisualSceneNode” name=“untitled”>
<node id=“nurbsTorus1” name=“nurbsTorus1” type=“NODE”>
<rotate sid=“rotateZ”>0 0 1.000000 0</rotate>
<rotate sid=“rotateY”>0 1.000000 0 0</rotate>
<rotate sid=“rotateX”>1.000000 0 0 0</rotate>
<scale sid=“scale”>4.970612 4.970612 4.970612</scale>
<technique profile=“FCOLLADA”>
<instance_physics_scene url="#MayaNativePhysicsScene"/>
<instance_visual_scene url="#VisualSceneNode"/>

OK. Problem solved. There’s no NURBS support in ColladaMaya. Anyway, NURBS are not explicitly part of the standard…yet.

There is nothing preventing the Maya exporter to export Nurb geometry as a Maya specific profile, such as it is the case with many other Maya specific extensions.
You should ask Feeling Software about this, <psurface> (patch surface) could most probably be made available this way.

You are right. Nothing prevents them, but in the end, I believe that NURBS should be explicitly included in the COLLADA standard, just like th e<mesh> element.

The fact is that NURBS are a very good generalization for Bezier, B-Splines as well as other basis. The math is well known and they have been implemented in various systems since around 1983. So, this is not like too cutting-edge.

Plus, they are super-easy and economical to parse - way more than polygons.

Please add them to the standard: they are not just a Maya special case. Then, Feeling can put them back in their plugins and everyone will be the happier :wink:


Sure, this will make it way to the standard one of those days. I was just saying that if you are in a hurry you can get it sooner as a valid extension to the current specification (That’s why COLLADA is designed extensible)

And if you do so, then you can provide feedback to how this new feature should best be implemented in COLLADA.

… or, you can stay passive and wait.


Good point :wink: Indeed, I should just get the FCollada source and add what I need.

I think a good place to start is to match the NURBS implementation that currently exist in the Wavefront OBJ format - which includes trimming curves.

The big danger in exporting NURBS surfaces from Maya is to handle the trim curves properly.

I’ll see if & when I can get started on this…