PDA

View Full Version : Problem with <node3d>.center


hachilab
07-01-2011, 01:14 AM
Hello everyone,

I have a problem with the command <node3d>.center which sets the origin of an object.

object.center(x,y,z)
The setting of y value doesn't work.

Only x and z is ok...

Do you have the same problem?

Jeff
07-01-2011, 11:20 AM
Can you post some example code that shows your problem?

In the following example the center of the ball on the left is changed in the y value which affects it's rotation:
import viz
import vizact
viz.go()

ball = viz.addChild('ball.wrl',pos=[-0.5,1.5,4])
ball.center(0,0.25,0)

ball2 = ball.copy(pos=[0.5,1.5,4])

spin = vizact.spin(1,0,0,90)
ball.addAction(spin)
ball2.addAction(spin)

hachilab
07-03-2011, 10:39 PM
Thank you Jeff.

It works for 'spin'.
Infact, I was tring to change the position of an object/avatar.

import viz
import vizact
viz.go()

ground = viz.add('roughground.wrl')
ball = viz.add('ball.wrl')
ball.center(0,1,0)
move = vizact.walkTo([1,ground,1], walkAnim = None, walkSpeed = 0.5)
vizact.onkeydown('1', ball.addAction, move)

I tried to move the ball along a rough surface. However, using above lines, the ball was not "above" but "partially inside" the ground. I tried to set the level of the ball by [1,gound+1,1], but it seems an invalid command. So, I tried to set the "built-in position" by "ball.center(0,1,0)". It doesn't work. Sorry for the confusion.

Best Regards

Jeff
07-05-2011, 01:49 PM
You can use the <node3D>.setPosition command to set the ball at ground level:
import viz
import vizact
viz.go()

ground = viz.addChild('tut_ground.wrl')
ball = viz.addChild('ball.wrl')
ball.setPosition([-2,0.5,7])
move = vizact.moveTo([2,0.5,7],speed=1)
vizact.onkeydown('1', ball.addAction, move)

hachilab
07-06-2011, 01:25 AM
Thanks Jeff.
In fact the ground is not a flat surface. The level changes according to different positions.