2012-06-19 4 views
0

У меня возникли проблемы с воссозданием одного и того же объекта по оси Z, это создает неправильное пространство между ними, и я не вижу, где проблема.
Я не хочу пространства между объектами. Вот код объекта Tabua.wrlОбъект не умножается правильно по оси Z

#VRML V2.0 utf8 

Transform 
{ 
    translation 0 0 0 
    children 
    [ 
     Shape 
     { 
      appearance Appearance 
      { 
       texture ImageTexture 
       { 
        url "Imagens/madeira1.jpg" 
       } 
      } 

      geometry Box 
      { 
       size 2 0.05 0.5 
      } 
     } 
    ] 
} 

А вот код для создания повторения объекта.
квант = сколько раз объект будет повторять
COMPRI = пространство прыжок

#VRML V2.0 utf8 
Transform 
{ 
    rotation 0 1 0 3.14 
    translation 0 0 0 
    children 
    [ 
     DEF Ponte Group 
     { 

     } 
    ] 
} 

DEF pont Script 
{ 
    field SFNode pt USE Ponte 
    field SFNode me USE pont 

    field SFInt32 CTRL 0 
    field SFInt32 quant 5 

    field MFFloat compri 0.5 

    field MFString wrlTab "Tabua.wrl" 

    eventIn MFNode set_node 

    field SFBool inic TRUE 

    url "javascript: 
    function initialize() 
    { 
     Browser.createVrmlFromURL(wrlTab, me, 'set_node'); 
    } 

    function set_node (node, t) 
    { 
     node[0].translation[2]= -compri*CTRL; 
     pt.addChildren = node; 
     CTRL+=1; 
     if(inic) 
     { 
      if(CTRL < quant) 
      { 
       Browser.createVrmlFromURL(wrlTab, me, 'set_node'); 
      } 
      else 
      { 
       inic = false; 
      } 
     } 
    } 
    " 
} 

И образ того, что делает.
enter image description here

ответ

1

Я хотел бы предложить использовать PROTO вместо Browser.createVrmlFromURL, потому что вы повторно загружать Внешний .wrl файл в пять раз, тогда это было бы загрузить его только один раз.


Tabua.wrl:

#VRML V2.0 utf8 

PROTO Tabua[ 
    exposedField SFVec3f  translation  0 0 0 
]{ 
    Transform { 
     translation IS translation 
     children Shape { 
      appearance Appearance { 
       texture ImageTexture{ 
        url "Imagens/madeira1.jpg" 
       } 
      } 
      geometry Box { 
       size 2 0.05 0.5 
      } 
     } 
    } 
} 

Главная сцена:

#VRML V2.0 utf8 

Viewpoint { 
    position  1.888 1.912 4.417 
    orientation -0.652 0.735 0.185 0.679 
    fieldOfView 0.716 
} 

DEF Ponte Group {} 

Script { 
    field  SFInt32  quant    5 

    field  SFString protoDefinition  " 
     EXTERNPROTO Tabua [ 
      exposedField SFVec3f  translation 
     ] \"Tabua.wrl\" 
    " 

    field  SFNode  Ponte    USE Ponte 

    directOutput TRUE 
    url "javascript: 

    function initialize(){ 
     var vrml = protoDefinition; 
     for (var i = 0; i < quant; i++){ 
      var z = i * -0.5; 
      vrml += 'Tabua{translation 0 0 ' + z + '}'; 
     } 
     Ponte.addChildren = Browser.createVrmlFromString(vrml); 
    } 

    " 
} 
+0

Спасибо за совет, он работал хорошо. Но я до сих пор не понимаю, почему это не «чтение» переменной «compri». – CMCB

+0

Я думаю, это потому, что вы определили 'compri' как' MFFloat' вместо 'SFFloat' – wildpeaks

+0

О, не заметили, что D: – CMCB

0

Кажется, что это не «чтение» переменной «compri», поэтому я переключился со значениями и отлично работал.

#VRML V2.0 utf8 
Transform 
{ 
    rotation 0 1 0 3.14 
    translation 0 0 0 
    children 
    [ 
     DEF Ponte Group 
     { 

     } 
    ] 
} 

DEF pont Script 
{ 
    field SFNode pt USE Ponte 
    field SFNode me USE pont 

    field SFInt32 CTRL 0 
    field SFInt32 quant 5 

    #field MFFloat compri 0.7 

    field MFString wrlTab "Tabua.wrl" 

    eventIn MFNode set_node 

    field SFBool inic TRUE 

    url "javascript: 
    function initialize() 
    { 
     Browser.createVrmlFromURL(wrlTab, me, 'set_node'); 
    } 

    function set_node (node, t) 
    { 
     node[0].translation[2]= -0.5*CTRL; 
     pt.addChildren = node; 
     CTRL += 1; 
     if(inic) 
     { 
      if(CTRL < quant) 
      { 
       Browser.createVrmlFromURL(wrlTab, me, 'set_node'); 
      } 
      else 
      { 
       inic = false; 
      } 
     } 
    } 
    " 
} 

В результате я хотел в первую очередь. enter image description here

Смежные вопросы