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?
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
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.
vBulletin® v3.8.7, Copyright ©2000-2024, vBulletin Solutions, Inc.