Thanks to Robert Würfel from NextGen for helping to track this down.<br><br><div class="gmail_quote">On Mon, Oct 26, 2009 at 11:17 PM, Arystanbek Dyussenov <span dir="ltr"><<a href="mailto:arystan.d@gmail.com">arystan.d@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Revision: 24093<br>
          <a href="http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24093" target="_blank">http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24093</a><br>

Author:   kazanbas<br>
Date:     2009-10-26 18:17:46 +0100 (Mon, 26 Oct 2009)<br>
<br>
Log Message:<br>
-----------<br>
Bug fix in collada exporter: <light>s and <camera>s used the same ids as <node>s linked with them, this resulted in id duplication and produced invalid DAE. Now appending -light and -camera suffixes for <light> and <camera> id.<br>

<br>
Modified Paths:<br>
--------------<br>
    branches/soc-2009-chingachgook/source/blender/collada/DocumentExporter.cpp<br>
<br>
Modified: branches/soc-2009-chingachgook/source/blender/collada/DocumentExporter.cpp<br>
===================================================================<br>
--- branches/soc-2009-chingachgook/source/blender/collada/DocumentExporter.cpp  2009-10-26 16:48:23 UTC (rev 24092)<br>
+++ branches/soc-2009-chingachgook/source/blender/collada/DocumentExporter.cpp  2009-10-26 17:17:46 UTC (rev 24093)<br>
@@ -134,6 +134,16 @@<br>
        return id_name(ob) + "-mesh";<br>
 }<br>
<br>
+static std::string get_light_id(Object *ob)<br>
+{<br>
+       return id_name(ob) + "-light";<br>
+}<br>
+<br>
+static std::string get_camera_id(Object *ob)<br>
+{<br>
+       return id_name(ob) + "-camera";<br>
+}<br>
+<br>
 static void replace_chars(char *str, char chars[], char with)<br>
 {<br>
        char *ch, *p;<br>
@@ -1180,8 +1190,6 @@<br>
                node.setNodeId(id_name(ob));<br>
                node.setType(COLLADASW::Node::NODE);<br>
<br>
-               std::string ob_name(id_name(ob));<br>
-<br>
                node.start();<br>
<br>
                bool is_skinned_mesh = arm_exporter->is_skinned_mesh(ob);<br>
@@ -1221,13 +1229,13 @@<br>
<br>
                // <instance_camera><br>
                else if (ob->type == OB_CAMERA) {<br>
-                       COLLADASW::InstanceCamera instCam(mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, ob_name));<br>
+                       COLLADASW::InstanceCamera instCam(mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, get_camera_id(ob)));<br>
                        instCam.add();<br>
                }<br>
<br>
                // <instance_light><br>
                else if (ob->type == OB_LAMP) {<br>
-                       COLLADASW::InstanceLight instLa(mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, ob_name));<br>
+                       COLLADASW::InstanceLight instLa(mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, get_light_id(ob)));<br>
                        instLa.add();<br>
                }<br>
<br>
@@ -1574,7 +1582,8 @@<br>
        {<br>
                // XXX add other params later<br>
                Camera *cam = (Camera*)ob->data;<br>
-               std::string cam_id(id_name(ob));<br>
+               std::string cam_id(get_camera_id(ob));<br>
+               std::string cam_name(id_name(cam));<br>
<br>
                if (cam->type == CAM_PERSP) {<br>
                        COLLADASW::PerspectiveOptic persp(mSW);<br>
@@ -1582,7 +1591,7 @@<br>
                        persp.setAspectRatio(0.1);<br>
                        persp.setZFar(cam->clipend);<br>
                        persp.setZNear(cam->clipsta);<br>
-                       COLLADASW::Camera ccam(mSW, &persp, cam_id, cam_id);<br>
+                       COLLADASW::Camera ccam(mSW, &persp, cam_id, cam_name);<br>
                        addCamera(ccam);<br>
                }<br>
                else {<br>
@@ -1591,7 +1600,7 @@<br>
                        ortho.setAspectRatio(0.1);<br>
                        ortho.setZFar(cam->clipend);<br>
                        ortho.setZNear(cam->clipsta);<br>
-                       COLLADASW::Camera ccam(mSW, &ortho, cam_id, cam_id);<br>
+                       COLLADASW::Camera ccam(mSW, &ortho, cam_id, cam_name);<br>
                        addCamera(ccam);<br>
                }<br>
        }<br>
@@ -1612,25 +1621,26 @@<br>
        void operator()(Object *ob)<br>
        {<br>
                Lamp *la = (Lamp*)ob->data;<br>
-               std::string la_id(id_name(ob));<br>
+               std::string la_id(get_light_id(ob));<br>
+               std::string la_name(id_name(la));<br>
                COLLADASW::Color col(la->r, la->g, la->b);<br>
                float e = la->energy;<br>
<br>
                // sun<br>
                if (la->type == LA_SUN) {<br>
-                       COLLADASW::DirectionalLight cla(mSW, la_id, la_id, e);<br>
+                       COLLADASW::DirectionalLight cla(mSW, la_id, la_name, e);<br>
                        cla.setColor(col);<br>
                        addLight(cla);<br>
                }<br>
                // hemi<br>
                else if (la->type == LA_HEMI) {<br>
-                       COLLADASW::AmbientLight cla(mSW, la_id, la_id, e);<br>
+                       COLLADASW::AmbientLight cla(mSW, la_id, la_name, e);<br>
                        cla.setColor(col);<br>
                        addLight(cla);<br>
                }<br>
                // spot<br>
                else if (la->type == LA_SPOT) {<br>
-                       COLLADASW::SpotLight cla(mSW, la_id, la_id, e);<br>
+                       COLLADASW::SpotLight cla(mSW, la_id, la_name, e);<br>
                        cla.setColor(col);<br>
                        cla.setFallOffAngle(la->spotsize);<br>
                        cla.setFallOffExponent(la->spotblend);<br>
@@ -1640,7 +1650,7 @@<br>
                }<br>
                // lamp<br>
                else if (la->type == LA_LOCAL) {<br>
-                       COLLADASW::PointLight cla(mSW, la_id, la_id, e);<br>
+                       COLLADASW::PointLight cla(mSW, la_id, la_name, e);<br>
                        cla.setColor(col);<br>
                        cla.setLinearAttenuation(la->att1);<br>
                        cla.setQuadraticAttenuation(la->att2);<br>
@@ -1649,7 +1659,7 @@<br>
                // area lamp is not supported<br>
                // it will be exported as a local lamp<br>
                else {<br>
-                       COLLADASW::PointLight cla(mSW, la_id, la_id, e);<br>
+                       COLLADASW::PointLight cla(mSW, la_id, la_name, e);<br>
                        cla.setColor(col);<br>
                        cla.setLinearAttenuation(la->att1);<br>
                        cla.setQuadraticAttenuation(la->att2);<br>
<br>
<br>
_______________________________________________<br>
Bf-blender-cvs mailing list<br>
<a href="mailto:Bf-blender-cvs@blender.org">Bf-blender-cvs@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-blender-cvs" target="_blank">http://lists.blender.org/mailman/listinfo/bf-blender-cvs</a><br>
</blockquote></div><br>