[Soc-2009-dev] Weekly report - Collada module

Sebastian sebastian at opencollada.org
Mon Jun 15 21:42:18 CEST 2009


Chingiz, the patch should apply against sf.net's trunk without any 
problems. We have our own internal clone of the repository that we 
update against sourceforge after additional tests. You just peek into a 
future version ;)

Sebastian


Chingiz Dyussenov wrote:
> I'm sorry but I can't apply the patch the latest revision in 
> https://opencollada.svn.sourceforge.net/svnroot/opencollada/trunk is 568 
> and the diff is against 587.
> 
> Now I am going switch to coding a basic importer, so this can wait.
> 
> Chingiz
> 
> On Mon, Jun 15, 2009 at 10:01 PM, Sebastian <sebastian at opencollada.org 
> <mailto:sebastian at opencollada.org>> wrote:
> 
>     patch attached ;) not tested yet.
>     sebastian
> 
> 
>     Chingiz Dyussenov wrote:
> 
>         Hi, Sebastian,
> 
>         I've got a problem. I can't create <bind_vertex_input> in
>         <instance_material> with OpenCollada. I need this to make the
>         connection between the <texture>’s texcoord attribute and the
>         mesh’s texture coordinate array.
> 
>         Chingiz
> 
>         On Tue, Jun 9, 2009 at 10:32 PM, Sebastian
>         <sebastian at opencollada.org <mailto:sebastian at opencollada.org>
>         <mailto:sebastian at opencollada.org
>         <mailto:sebastian at opencollada.org>>> wrote:
> 
>            Hi Arystan,
> 
>            thanks a lot for the bug report! We precompiled the regular
>         expressions
>            by intention to remove dependency to "pcre_compile" and to
>         speed up
>            overall processing time. I must admit that this sounds a
>         little bit like
>            an overkill but the code generation for XSD Schema automatically
>            generates the statements.
> 
>            We have to check why the precompiled statements failed :(
> 
>            Sebastian
> 
> 
>            Arystan Dyussenov wrote:
>             > Hi, Sebastian,
>             >
>             > I'm Arystan, Chingiz's elder brother. I'm helping him a
>         bit with
>             > OpenCollada studying. Recently we've stumbled upon a bug in
>            OpenCollada.
>             >
>             > The following code resulted in an empty URL on his Intel
>         Celeron:
>             >
>             > COLLADABU::URI(COLLADABU::Utils::EMPTY_STRING, "#id")
>             >
>             > On my AMD Athlon 64 however it worked ok. We're both using
>         Linux.
>             > Debugging revealed that regexp matcher didn't accept a
>         correct URI
>             > ("#something") on his computer. The problem turned out to
>         be in
>            compiled
>             > regexps.
>             >
>             > I'm attaching the diff of the fix, regexps are now compiled on
>            runtime
>             > only once on demand. Although correctness of regexps needs
>         to be
>            checked.
>             >
>             > Arystan
>             >
>             > On Sun, May 24, 2009 at 10:40 PM, Sebastian
>            <sebastian at opencollada.org <mailto:sebastian at opencollada.org>
>         <mailto:sebastian at opencollada.org
>         <mailto:sebastian at opencollada.org>>
>             > <mailto:sebastian at opencollada.org
>         <mailto:sebastian at opencollada.org>
> 
>            <mailto:sebastian at opencollada.org
>         <mailto:sebastian at opencollada.org>>>> wrote:
>             >
>             >     Great to hear about that! The most complete examples
>         are the
>            3ds Max and
>             >     Maya converters itself, though they might be difficult in
>            some areas as
>             >     they use the specific max/maya APIs, too.
>             >
>             >     I already started (in my spare time) a native c++
>            Importer/Exporter for
>             >     Blender. I liked the performance of the native
>         VRML/STL/DXF
>             >     importer/exporter that are available at
>             >      
>          https://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/blenkernel/intern/exotic.c
>             >
>             >     They fit in perfectly while implementing a sax based
>         importer
>            or a
>             >     stream based exporter.
>             >
>             >     If you have any specific questions don't hesitate to
>         contact
>            me, i'm
>             >     happy to support you.
>             >
>             >     Sebastian
>             >
>             >
>             >     Chingiz Dyussenov wrote:
>             >      > Thanks, Sebastian.
>             >      >
>             >      > I am interested. I was just going to start coding, so
>            switching to
>             >      > OpenCollada is ok. I'll use Ogre example to learn
>         how to do
>             >     things with
>             >      > OpenCollada. If there are other free examples,
>         please share.
>             >      >
>             >      > Chingiz
>             >      >
>             >      >
>             >      >
>             >      
>          ------------------------------------------------------------------------
>             >      >
>             >      > _______________________________________________
>             >      > Soc-2009-dev mailing list
>             >      > Soc-2009-dev at blender.org
>         <mailto:Soc-2009-dev at blender.org>
>         <mailto:Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>>
>            <mailto:Soc-2009-dev at blender.org
>         <mailto:Soc-2009-dev at blender.org>
>         <mailto:Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>>>
> 
>             >      > http://lists.blender.org/mailman/listinfo/soc-2009-dev
>             >     _______________________________________________
>             >     Soc-2009-dev mailing list
>             >     Soc-2009-dev at blender.org
>         <mailto:Soc-2009-dev at blender.org>
>         <mailto:Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>>
>            <mailto:Soc-2009-dev at blender.org
>         <mailto:Soc-2009-dev at blender.org>
>         <mailto:Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>>>
> 
>             >     http://lists.blender.org/mailman/listinfo/soc-2009-dev
>             >
>             >
>             >
>             >
>          
>          ------------------------------------------------------------------------
>             >
>             > _______________________________________________
>             > Soc-2009-dev mailing list
>             > Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>
>         <mailto:Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>>
>             > http://lists.blender.org/mailman/listinfo/soc-2009-dev
>            _______________________________________________
>            Soc-2009-dev mailing list
>            Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>
>         <mailto:Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>>
>            http://lists.blender.org/mailman/listinfo/soc-2009-dev
> 
> 
> 
>         ------------------------------------------------------------------------
> 
>         _______________________________________________
>         Soc-2009-dev mailing list
>         Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>
>         http://lists.blender.org/mailman/listinfo/soc-2009-dev
> 
> 
>     Index: include/COLLADASWConstants.h
>     ===================================================================
>     --- include/COLLADASWConstants.h        (revision 587)
>     +++ include/COLLADASWConstants.h        (working copy)
>     @@ -46,7 +46,8 @@
>             static const String CSW_ELEMENT_BLINN;
>             static const String CSW_ELEMENT_BIND;
>             static const String CSW_ELEMENT_BIND_MATERIAL;
>     -        static const String CSW_ELEMENT_BIND_SHAPE_MATRIX;
>     +               static const String CSW_ELEMENT_BIND_SHAPE_MATRIX;
>     +               static const String CSW_ELEMENT_BIND_VERTEX_INPUT;
>             static const String CSW_ELEMENT_BORDER_COLOR;
>             static const String CSW_ELEMENT_CAMERA;
>             static const String CSW_ELEMENT_CAMERA_ORTHOGRAPHIC;
>     @@ -219,7 +220,9 @@
>             static const String CSW_ATTRIBUTE_END;
>             static const String CSW_ATTRIBUTE_FACE;
>             static const String CSW_ATTRIBUTE_ID;
>     -        static const String CSW_ATTRIBUTE_INDEX;
>     +               static const String CSW_ATTRIBUTE_INDEX;
>     +               static const String CSW_ATTRIBUTE_INPUT_SEMANTIC;
>     +               static const String CSW_ATTRIBUTE_INPUT_SET;
>             static const String CSW_ATTRIBUTE_MATERIAL;
>             static const String CSW_ATTRIBUTE_METER;
>             static const String CSW_ATTRIBUTE_METHOD;
>     Index: include/COLLADASWInstanceMaterial.h
>     ===================================================================
>     --- include/COLLADASWInstanceMaterial.h (revision 587)
>     +++ include/COLLADASWInstanceMaterial.h (working copy)
>     @@ -22,14 +22,61 @@
>      namespace COLLADASW
>      {
> 
>     +    class BindVertexInput
>     +       {
>     +       private:
>     +               /** Which effect parameter to bind. Required.*/
>     +               String mSemantic;
>     +
>     +               /** Which input semantic to bind. Required.*/
>     +               String mInputSemantic;
>     +
>     +               /** Which input set to bind. Optional. -1 if not set.*/
>     +               int mInputSet;
>     +       public:
>     +
>     +               BindVertexInput(const COLLADASW::String& semantic,
>     const COLLADASW::String& inputSemantic, int inputSet = -1)
>     +                       : mSemantic(semantic),
>     mInputSemantic(inputSemantic), mInputSet(inputSet){}
>     +
>     +               /** Which effect parameter to bind. Required.*/
>     +               const COLLADASW::String& getSemantic() const {
>     return mSemantic; }
>     +
>     +               /** Which effect parameter to bind. Required.*/
>     +               void setSemantic(const COLLADASW::String& semantic)
>     { mSemantic = semantic; }
>     +
>     +               /** Which input semantic to bind. Required.*/
>     +               const COLLADASW::String& getInputSemantic() const {
>     return mInputSemantic; }
>     +
>     +               /** Which input semantic to bind. Required.*/
>     +               void setInputSemantic(const COLLADASW::String&
>     inputSemantic) { mInputSemantic = inputSemantic; }
>     +
>     +               /** Which input set to bind. Optional. -1 if not set.*/
>     +               int getInputSet() const { return mInputSet; }
>     +
>     +               /** Which input set to bind. Optional. -1 if not set.*/
>     +               void setInputSet(int inputSet) { mInputSet = inputSet; }
>     +
>     +       private:
>     +               /** Set this class a friend, so it can call the
>     add() method.  */
>     +               friend class InstanceMaterial;
>     +
>     +               /** Add all the instance materials, added using
>     push_back(), to the stream*/
>     +               void add( StreamWriter* sw);
>     +
>     +       };
>     +
>     +
>         class InstanceMaterialList;
> 
>         /** A class that holds informations of an @a
>     \<instance_material\> element*/
>         class InstanceMaterial
>         {
>     -
>     +       private:
>     +               /** List of all the BindVertexInput*/
>     +               typedef std::list<BindVertexInput> BindVertexInputList;
>         private:
> 
>     +               BindVertexInputList mBindVertexInputList;
>             String mSymbol;
>             URI mTarget;
> 
>     @@ -43,17 +90,22 @@
>             : mSymbol ( symbol ), mTarget ( target ) {}
> 
>             /** Returns the symbol*/
>     -        const String & getSymbol() const
>     -        {
>     -            return mSymbol;
>     -        }
>     +        const String & getSymbol() const {return mSymbol; }
> 
>             /** Returns the target*/
>     -        const URI & getTarget() const
>     -        {
>     -            return mTarget;
>     -        }
>     +        const URI & getTarget() const { return mTarget; }
> 
>     +               /** Adds @a input to list of inputs that should be
>     added*/
>     +               void push_back ( const BindVertexInput& input ) {
>     mBindVertexInputList.push_back ( input ); }
>     +
>     +       private:
>     +               /** Set this class a friend, so it can call the
>     add() method.  */
>     +               friend class InstanceMaterialList;
>     +
>     +               /** Add all the instance materials, added using
>     push_back(), to the stream*/
>     +               void add( StreamWriter* sw);
>     +
>     +
>         };
> 
>         /** A class that hold a list of instances of InstanceMaterial
>     and writes it to stream*/
>     @@ -70,16 +122,10 @@
>             virtual ~InstanceMaterialList() {}
> 
>             /** Adds @a input to list of inputs that should be added*/
>     -        void push_back ( InstanceMaterial input )
>     -        {
>     -            mList.push_back ( input );
>     -        }
>     +        void push_back ( const InstanceMaterial& input ) {
>     mList.push_back ( input ); }
> 
>             /** Return true, if the list of material bindings is empty,
>     false otherwise*/
>     -        bool empty() const
>     -        {
>     -            return mList.empty();
>     -        }
>     +        bool empty() const { return mList.empty(); }
> 
>         private:
> 
>     Index: src/COLLADASWConstants.cpp
>     ===================================================================
>     --- src/COLLADASWConstants.cpp  (revision 587)
>     +++ src/COLLADASWConstants.cpp  (working copy)
>     @@ -38,7 +38,8 @@
>         const String CSWC::CSW_ELEMENT_BLINN = "blinn";
>         const String CSWC::CSW_ELEMENT_BIND = "bind";
>         const String CSWC::CSW_ELEMENT_BIND_MATERIAL = "bind_material";
>     -    const String CSWC::CSW_ELEMENT_BIND_SHAPE_MATRIX =
>     "bind_shape_matrix";
>     +       const String CSWC::CSW_ELEMENT_BIND_SHAPE_MATRIX =
>     "bind_shape_matrix";
>     +       const String CSWC::CSW_ELEMENT_BIND_VERTEX_INPUT =
>     "bind_vertex_input";
>         const String CSWC::CSW_ELEMENT_BORDER_COLOR = "border_color";
>         const String CSWC::CSW_ELEMENT_CAMERA = "camera";
>         const String CSWC::CSW_ELEMENT_CAMERA_ORTHOGRAPHIC = "orthographic";
>     @@ -209,7 +210,9 @@
>         const String CSWC::CSW_ATTRIBUTE_END = "end";
>         const String CSWC::CSW_ATTRIBUTE_FACE = "face";
>         const String CSWC::CSW_ATTRIBUTE_ID = "id";
>     -    const String CSWC::CSW_ATTRIBUTE_INDEX = "index";
>     +       const String CSWC::CSW_ATTRIBUTE_INDEX = "index";
>     +       const String CSWC::CSW_ATTRIBUTE_INPUT_SEMANTIC =
>     "input_semantic";
>     +       const String CSWC::CSW_ATTRIBUTE_INPUT_SET = "input_set";
>         const String CSWC::CSW_ATTRIBUTE_MATERIAL = "material";
>         const String CSWC::CSW_ATTRIBUTE_METER = "meter";
>         const String CSWC::CSW_ATTRIBUTE_METHOD = "method";
>     Index: src/COLLADASWInstanceMaterial.cpp
>     ===================================================================
>     --- src/COLLADASWInstanceMaterial.cpp   (revision 587)
>     +++ src/COLLADASWInstanceMaterial.cpp   (working copy)
>     @@ -19,11 +19,32 @@
>         {
>             for ( List::iterator it = mList.begin(); it != mList.end();
>     ++it )
>             {
>     -            mSW->openElement ( CSWC::CSW_ELEMENT_INSTANCE_MATERIAL );
>     -            mSW->appendAttribute ( CSWC::CSW_ATTRIBUTE_SYMBOL,
>     it->getSymbol() );
>     -            mSW->appendURIAttribute ( CSWC::CSW_ATTRIBUTE_TARGET,
>     it->getTarget() );
>     -            mSW->closeElement();
>     +                       it->add( mSW );
>             }
>         }
> 
>     +
>     +      
>     //---------------------------------------------------------------
>     +       void InstanceMaterial::add( StreamWriter* sw )
>     +       {
>     +               sw->openElement ( CSWC::CSW_ELEMENT_INSTANCE_MATERIAL );
>     +               sw->appendAttribute ( CSWC::CSW_ATTRIBUTE_SYMBOL,
>     getSymbol() );
>     +               sw->appendURIAttribute ( CSWC::CSW_ATTRIBUTE_TARGET,
>     getTarget() );
>     +               for ( BindVertexInputList::iterator it =
>     mBindVertexInputList.begin(); it != mBindVertexInputList.end(); ++it)
>     +               {
>     +                       it->add( sw );
>     +               }
>     +
>     +               sw->closeElement();
>     +       }
>     +
>     +      
>     //---------------------------------------------------------------
>     +       void BindVertexInput::add( StreamWriter* sw )
>     +       {
>     +               sw->openElement ( CSWC::CSW_ELEMENT_INSTANCE_MATERIAL );
>     +               sw->appendAttribute ( CSWC::CSW_ATTRIBUTE_SEMANTIC,
>     getSemantic() );
>     +               sw->appendAttribute (
>     CSWC::CSW_ATTRIBUTE_INPUT_SEMANTIC, getInputSemantic() );
>     +               sw->appendAttribute ( CSWC::CSW_ATTRIBUTE_INPUT_SET,
>     getInputSet() );
>     +               sw->closeElement();
>     +       }
>      } //namespace COLLADASW
> 
>     _______________________________________________
>     Soc-2009-dev mailing list
>     Soc-2009-dev at blender.org <mailto:Soc-2009-dev at blender.org>
>     http://lists.blender.org/mailman/listinfo/soc-2009-dev
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Soc-2009-dev mailing list
> Soc-2009-dev at blender.org
> http://lists.blender.org/mailman/listinfo/soc-2009-dev


More information about the Soc-2009-dev mailing list