From 1816e73b0a0a423a126ee4974d13baef1ad62d19 Mon Sep 17 00:00:00 2001 From: granzuglia Date: Fri, 3 Nov 2006 13:09:15 +0000 Subject: [PATCH] some minor changes --- wrap/io_trimesh/export_dae.h | 114 +++++++++++++++++++++++++++++++++-- 1 file changed, 109 insertions(+), 5 deletions(-) diff --git a/wrap/io_trimesh/export_dae.h b/wrap/io_trimesh/export_dae.h index d6120c58..b4f80cf0 100644 --- a/wrap/io_trimesh/export_dae.h +++ b/wrap/io_trimesh/export_dae.h @@ -21,7 +21,7 @@ public: AdditionalInfoDAE* inf = static_cast(in); InfoDAE* info = inf->dae; QDomNodeList scenelst = info->doc->elementsByTagName("scene"); - //removeChildNode(scenelst,"instance_visual_scene"); + removeChildNode(scenelst,"instance_visual_scene"); for(int vsscn = 0;vsscn < scenelst.size();++vsscn) { QString url = scenelst.at(vsscn).toElement().attribute("url"); @@ -31,15 +31,119 @@ public: vsnode.setAttribute("url","#vcg-scene-node"); scenelst.at(0).appendChild(vsnode); + QDomNodeList vsscene = info->doc->elementsByTagName("library_visual_scenes"); + assert(vsscene.size() == 1); + QDomElement vslnode = info->doc->createElement("visual_scene"); + vslnode.setAttribute("id","vcg-scene-node"); + vslnode.setAttribute("name","vcg-untitled"); + + QDomElement vcgnode = info->doc->createElement("node"); + vcgnode.setAttribute("id","vcg-node"); + vcgnode.setAttribute("name","vcg-untitled"); + + QDomElement vcginst = info->doc->createElement("instance_geometry"); + vcginst.setAttribute("url","#vcg-mesh-lib"); + vcgnode.appendChild(vcginst); + vslnode.appendChild(vcgnode); + vsscene.at(0).appendChild(vslnode); + QDomNodeList geolib = info->doc->elementsByTagName("library_geometries"); assert(geolib.size() == 1); - removeChildNode(geolib.at(0)); - + //removeChildNode(geolib.at(0)); /*QDomElement mshnode; mshnode.setTagName("mesh");*/ - QDomElement mshnode = info->doc->createElement("mesh"); - geolib.at(0).appendChild(mshnode); + QDomElement geonode = info->doc->createElement("geometry"); + geonode.setAttribute("id","vcg-mesh-lib"); + geonode.setAttribute("name","vcg-mesh"); + + QDomElement meshnode = info->doc->createElement("mesh"); + + QDomElement srcposnode = info->doc->createElement("source"); + srcposnode.setAttribute("id","vcg-mesh-positions"); + srcposnode.setAttribute("name","vcg-mesh-positions"); + + QDomElement arrayposnode = info->doc->createElement("float_array"); + arrayposnode.setAttribute("id","vcg-mesh-positions-array"); + QString countst; + arrayposnode.setAttribute("count",countst.number(m.vert.size() * 3)); + QString arrp; + QString arrn; + for(SaveMeshType::VertexIterator it = m.vert.begin();it != m.vert.end();++it) + { + QString x,y,z; + arrp.append(x.number(it->P().X()) + " " + y.number(it->P().Y()) + " " + z.number(it->P().Z())); + arrn.append(x.number(it->N().X()) + " " + y.number(it->N().Y()) + " " + z.number(it->N().Z())); + } + QDomText ap = info->doc->createTextNode(arrp); + + QDomElement technode = info->doc->createElement("technique_common"); + QDomElement accnode = info->doc->createElement("accessor"); + accnode.setAttribute("source","#vcg-mesh-positions-array"); + accnode.setAttribute("count",countst.number(m.vert.size())); + accnode.setAttribute("stride","3"); + + QDomElement parxnode = info->doc->createElement("param"); + parxnode.setAttribute("name","X"); + parxnode.setAttribute("type","float"); + QDomElement parynode = info->doc->createElement("param"); + parynode.setAttribute("name","Y"); + parynode.setAttribute("type","float"); + QDomElement parznode = info->doc->createElement("param"); + parznode.setAttribute("name","Z"); + parznode.setAttribute("type","float"); + + accnode.appendChild(parxnode); + accnode.appendChild(parynode); + accnode.appendChild(parznode); + technode.appendChild(accnode); + arrayposnode.appendChild(ap); + srcposnode.appendChild(arrayposnode); + srcposnode.appendChild(technode); + + meshnode.appendChild(srcposnode); + geonode.appendChild(meshnode); + geolib.at(0).appendChild(geonode); + + QDomElement srcnmnode = info->doc->createElement("source"); + srcnmnode.setAttribute("id","vcg-mesh-normals"); + srcnmnode.setAttribute("name","vcg-mesh-normals"); + + QDomElement arraynmnode = info->doc->createElement("float_array"); + arraynmnode.setAttribute("id","vcg-mesh-normals-array"); + arraynmnode.setAttribute("count",countst.number(m.vert.size() * 3)); + + QDomElement technode2 = info->doc->createElement("technique_common"); + QDomElement accnode2 = info->doc->createElement("accessor"); + accnode2.setAttribute("source","#vcg-mesh-positions-array"); + accnode2.setAttribute("count",countst.number(m.vert.size())); + accnode2.setAttribute("stride","3"); + + QDomElement parxnode2 = info->doc->createElement("param"); + parxnode2.setAttribute("name","X"); + parxnode2.setAttribute("type","float"); + QDomElement parynode2 = info->doc->createElement("param"); + parynode2.setAttribute("name","Y"); + parynode2.setAttribute("type","float"); + QDomElement parznode2 = info->doc->createElement("param"); + parznode2.setAttribute("name","Z"); + parznode2.setAttribute("type","float"); + + QDomText an = info->doc->createTextNode(arrn); + + + accnode2.appendChild(parxnode2); + accnode2.appendChild(parynode2); + accnode2.appendChild(parznode2); + technode2.appendChild(accnode2); + arraynmnode.appendChild(an); + srcnmnode.appendChild(arraynmnode); + srcnmnode.appendChild(technode2); + + meshnode.appendChild(srcnmnode); + + + QString st = info->doc->toString();