Results 1 to 3 of 3

Thread: undefined name-attribute in param-element

  1. #1
    Friba77
    Guest

    undefined name-attribute in param-element

    Hi!

    I would need an example where the name of a param is undefined.
    Code :
    <source>
       <int_array name="values" count="9">
          1 0 1 2 0 2 3 0 3
       </int_array>
       <technique_common>
          <accessor source="#values" count="3" stride="3">
             <param name="A" type="int"/>
             <param type="int"/>
             <param name="B" type="int"/>
          </accessor>
       </technique_common>
    </source>
    int_array defines: 1 0 1 2 0 2 3 0 3
    but valid values are (because the name of the second <param> is undefined): 1 1 2 2 3 3

    I don´t know how a

    might look like. What are valid

    -values (if all offset-attributes of <input> are 0)?

    From 0 to 8 or
    from 0 to 5?

  2. #2
    Friba77
    Guest

    Re: undefined name-attribute in param-element

    Well, i wanted to program a collada-parser in javascript. Open source and free. But i can´t do that without any help.

    Example of a class:
    Code :
    function COLLADA_Input(node) {
       var offset;
       var semantic;
       var source;
       var set;
     
       if (node.nodeType != 1) // Element-Knoten
          throw new Error('CALLADA_INPUT');
     
       var functions = [];
       /**
        * Setzt semantic.
        * @param string value Node-Value
        * @throws Error
        */
       functions['semantic'] = function(value) {
          if (semantic != undefined)
             throw new Error('CALLADA_INPUT_SEMANTIC_NOT_UNIQUE');
          var semantics = [
             'BINORMAL',
             'COLOR',
             'CONTINUITY',
             'IMAGE',
             'INPUT',
             'IN_TANGENT',
             'INTERPOLATION',
             'INV_BIND_MATRIX',
             'JOINT',
             'LINEAR_STEPS',
             'MORPH_TARGET',
             'MORPH_WEIGHT',
             'NORMAL',
             'OUT_TANGENT',
             'POSITION',
             'TANGENT',
             'TEXBINORMAL',
             'TEXCOORD',
             'TEXTANGENT',
             'UV',
             'VERTEX',
             'WEIGHT'
          ];
          if (!ARRAY_inArray(semantics, value))
             throw new Error('CALLADA_INPUT_SEMANTIC_VALUE');
          semantic = value;
       };
       /**
        * Setzt source.
        * @param string value Node-Value
        * @throws Error
        */
       functions['source'] = function(value) {
          if (source != undefined)
             throw new Error('CALLADA_INPUT_SOURCE_NOT_UNIQUE');
          value = value.trim();
          if (value == '')
             throw new Error('CALLADA_INPUT_SOURCE_VALUE');
          source = value;
       };
       /**
        * Setzt offset.
        * @param string value Node-Value
        * @throws Error
        */
       functions['offset'] = function(value) {
          if (offset != undefined)
             throw new Error('CALLADA_INPUT_OFFSET_NOT_UNIQUE');
          if (!/^\d+$/.test(value))
             throw new Error('CALLADA_INPUT_OFFSET_VALUE');
          offset = Number(value);
       };
       /**
        * Setzt set.
        * @param string value Node-Value
        * @throws Error
        */
       functions['set'] = function(value) {
          if (set != undefined)
             throw new Error('CALLADA_INPUT_SET_NOT_UNIQUE');
          if (!/^\d+$/.test(value))
             throw new Error('CALLADA_INPUT_SET_VALUE');
          set = Number(value);
       };
     
       var attributes = node.attributes;
       var length = attributes.length;
       for (var j = 0; j < length; ++j) {
          var attribute = attributes[j];
          var key = attribute.nodeName;
          if (functions[key] == undefined)
             throw new Error('CALLADA_INPUT_INPUT_ATTRIBUTE_NAME');
     
          functions[key](attribute.nodeValue);
       }
     
       // must-Elemente:
       //if (offset == undefined)
       //   throw new Error('CALLADA_INPUT_INPUT_MISSING_OFFSET');
       if (semantic == undefined)
          throw new Error('CALLADA_INPUT_INPUT_MISSING_SEMANTIC');
       if (source == undefined)
          throw new Error('CALLADA_INPUT_INPUT_MISSING_SOURCE');
     
       /**
        * Gibt den offset zurück.
        * Bei dem Programm Blender gibt es einen Bug:
        *    In vertices gibt es auch ein input-Element. Dieses beinhaltet jedoch kein offset-Attribut.
        *    Habe den Bug an Blender gemeldet.
        * Aufgrund dieses Bugs habe ich hier einen Workaround programmiert:
        * Hier ist offset kein required Attribute. Die Methode kann also auch null zurückgaben.
        * @return null|int
        */
       this.getOffset = function() {
          return offset;
       };
       /**
        * @return string
        */
       this.getSemantic = function() {
          return semantic;
       };
       /**
        * @return string
        */
       this.getSource = function() {
          return source;
       };
       /**
        * @return null|int
        */
       this.getSet = function() {
          return set;
       };
    }
    /*
    // test:
    var xml = 
    '<?xml version="1.0" encoding="utf-8"?>'+
    '<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">'+
    '  <library_geometries>'+
    '    <geometry id="Plane-mesh" name="Plane">'+
    '      <mesh>'+
    '        <vertices id="Plane-mesh-vertices">'+
    '          <input semantic="POSITION" source="#Plane-mesh-positions"/>'+
    '        </vertices>'+
    '        <polylist count="1">'+
    '          <input semantic="VERTEX" source="#Plane-mesh-vertices" offset="0"/>'+
    '          <input semantic="NORMAL" source="#Plane-mesh-normals" offset="1"/>'+
    '          <vcount>4 </vcount>'+
    '          
     
    1 0 0 0 2 0 3 0</p>'+
    '        </polylist>'+
    '      </mesh>'+
    '      <extra><technique profile="MAYA"><double_sided>1</double_sided></technique></extra>'+
    '    </geometry>'+
    '  </library_geometries>'+
    '</COLLADA>';
    var parser = new DOMParser();
    var dom = parser.parseFromString(xml, 'text/xml');
    var nodes = dom.getElementsByTagName('input');
    var result = [];
    var length = nodes.length;
    for (var i = 0; i < length; ++i) {
       var node = nodes[i];
       result.push(new COLLADA_Input(node));
    }
    for (var i = 0; i < length; ++i) {
       var input = result[i];
       alert(input.getSemantic());
       alert(input.getSource());
       alert(input.getOffset());
       alert(input.getSet());
    }*/
    Comments are currently in german. This will change in future.

    But i really would need some help to program a perfect parser.'+
    '

  3. #3
    Junior Member
    Join Date
    Aug 2012
    Posts
    5

    Re: undefined name-attribute in param-element

    Looking at the SPEC (1.4.1) page 73 and 125 I am not sure what information you are missing

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •