PDA

View Full Version : Cooperation of things within the Virtual world


Patrick
01-19-2017, 05:33 AM
Hello,

So i wrote a Program where i implemented a STL-Data (Basicly a Matlab created cuboid that should simulate a heating system).
Recently i started to use physics in my Program.

viz.setMultiSample(4)
vizconnect.go('vizconnect_hand_vive.py')
viz.phys.enable()
viz.collision(viz.ON)

ground = viz.addChild('ground_gray.osgb')
ground.collideplane()
Heizung = viz.addChild('heiz2.osgb')
Heizung.collideBox()

I set the ground as bottom and enabled the Heizung for physics via the CollideBox command.
The problem that i have now is that the cuboid (who is higher than he is wide) just drops over to the front. What i want it to do tho is to fix that cuboid at the bottom so it basicly simulates an imobile machine. So the question is can i attach that Child to the ground level and make it kinda "heavy" as if a massive metal block would stand there.

And on top of that i wanted to figure out a way to attach smaller boxes to it. Basicly if i take a generated box and put it at a certain point of the Big block it gets attached to that point.

box1 = vizshape.addCube(size=0.2, pos=[0,1.45,5.4],alpha=1)
box1.collideBox()

So if i take that Box and put it at a certain point (that i defined before) somewhere on the side of my "Heizung" it gets attached to that automatically and stays at that point? But if i grab it again i want to be able to remove it again aswell.

Thanks in Advance

Jeff
01-23-2017, 12:45 PM
Reducing the bounce of the box may help prevent it from falling over after it's dropped. Here's an example:

'''
Press spacebar to enable physics and drop the box
'''

import viz
import vizact
import vizshape
import vizinfo

viz.go()
vizinfo.InfoPanel()

viz.clearcolor(viz.SLATE)
ground = viz.add('ground.osgb')
ground.collidePlane()

box = vizshape.addBox(size=(.4,2,0.4),pos=[0,20,8])
shape = box.collideBox()
shape.setBounce(0.01)

vizact.onkeydown(' ',viz.phys.enable)

If you want objects to snap into place after colliding try handling the collision event and then animate or directly place the object where you want it to go.

Patrick
01-24-2017, 04:15 AM
The problem is not that the boxes drop but the osgb i imported

The Heizung Attribute is a STL data i implemented and edited it with the inspector. The boxes i implemented work perfectly fine they drop and lay staticly on the ground after they fell but the heiz1.osgb (a picture of it is attached) just drops over and i dont know why it does that in first place when i enable the phisycs

Patrick
02-02-2017, 03:37 AM
Hey,

just a quick question to the topic above again.
I think i found the problem. Like the Screenshot shows, the center of gravity is at the down left front corner of the object. so i think the physics apply at that point and thats why the object drops so weird on the ground.
I found sth about the pivot point in the documentary which defines the the turn axe of the object. Does that point also determines where the physics apply?
So i just had to move the point in the screenshot to the center of the object and i guess the problem would be solved. I found the solution in the documentary but all these functions are not shown in my instructor, so my question is how do i move that center of gravity?
Sorry to bother you so much but thanks for the help in advance

Patrick
02-02-2017, 05:30 AM
Forgot to attach the Screenshot
here we go

Jeff
02-02-2017, 05:12 PM
The node.setCenter (http://docs.worldviz.com/vizard/#commands/node3d/setCenter.htm) command will change the object's center of rotation. I'm not sure but it might also help in this case.