I'm having trouble in recreating the same object over the Z axis, it's giving the wrong space between them and I'm not seeing where is the problem.
I want no space between the objects.
Here is the code of the object Tabua.wrl
#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
}
}
]
}
And here is the code to create the repetition of the object.
quant = how many times the object will repeat
compri = space jump
#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;
}
}
}
"
}
And the image of what is doing.
I would suggest using a PROTO
instead of Browser.createVrmlFromURL
because you're re-downloading the external .wrl file five times whereas this would download it only once.
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
}
}
}
}
Main scene:
#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);
}
"
}