#1
|
|||
|
|||
vizact move action
Hi,
I have a problem with using the move action in Vizard 4&5. the simple use case is i am navigating with the MainView through actions. I have viz.MainView.collision( viz.ON ) so that i don't go through walls, and in case of collision i cancel the current action and clear the action list. but i still move backwards (sometimes), away from the collision point. i looked a lot in the documentation and a bit in the vizact source code and i don't find a way to prevent this. on the contrary, i found a confirmation of the behavior in the VizMoveAction class. how can i solve this? i want to keep things simple and not necessarily realistic, that's why i'm avoiding physics. Best, Andrei |
#2
|
|||
|
|||
no that i think of it, the problem is maybe less related to vizact and more to the model i'm using. i mentioned vizact because there i can see more clearily what's happening and it's where i spend my last hopes of solving the problem by myself. but i get the same behavior while navigating with the mouse. the model i have is a valid collada model and the normals are ok. i don't have the bounce back effect if the collision surface is aligned along the x/z axes, which i find really strange...
|
#3
|
|||
|
|||
me again.
i stripped down my code to the very basic and still didn't find a solution. i can't see how anything could be wrong in the usage, but i posted the code below anyway. i also tried different models from 3D Warehouse and i could reproduce the problem. attached is a very simple collada model i generate myself(rename to .dae). the normals are ok, but i still have the bumping effect when the wall is oblique. i think the problem is somewhere in the Vizard navigation code and has something to do with vector decomposition, otherwise i cannot explain why it's not happening when the wall is parallel with an axis... Code:
import viz viz.setOption('viz.model.apply_collada_scale',1) world = viz.addChild('.\\..\\configs\maze3D.dae') world.collideMesh() env = viz.addEnvironmentMap('sky.jpg') sky = viz.addCustomNode('skydome.dlc') sky.texture(env) viz.disable(viz.LIGHTING) viz.MainView.collision(viz.ON) viz.MainView.setPosition(3.02036, 0.00000, -0.08363) viz.MainView.eyeheight(0.11) viz.go() |
#4
|
|||
|
|||
Hi there,
i've been trying to different geometries, i've tried to use physics, nothing seems to work. can anyone tell me what am i doing wrong? is this bounce made by design? isn't there any way to avoid it? i can split the move commands in smaller ones and manage to hide a bit the behavior, but still doesn't solve the problem. any ideas? suggestions? |
#5
|
|||
|
|||
I ran your example code with model and notice the viewpoint bounces when colliding with the edge of a wall. Is that what you are describing or does it occur at other times as well?
|
#6
|
|||
|
|||
Does changing the collision buffer affect the bounce you see?
|
#7
|
|||
|
|||
hi Jeff,
a few details about the test/problem - i am getting towards the wall until collision. then i try to advance oblique against the wall. what i expect is to slide along. instead i slide and bounce at the same time. it happens on the whole length of the wall, as long as the wall is not parallel with one of the axis. i already did try to change the collision buffer, but with no success. did it work for you? with what value? |
#8
|
|||
|
|||
since the problem is still not solved i thought to come with my latests feedback. i have an even simpler script to reproduce it:
Code:
import viz viz.MainView.collision(viz.ON) viz.MainView.collisionBuffer(1) world = viz.add('lab.osgb') #commenting this line makes the bouncing effect dissapear world.setEuler(30, 0, 0) viz.go() or maybe i'm wrong... any other ideas? thank you, andrei |
#9
|
|||
|
|||
Thanks for the simple example. I'll check with a developer about this.
|
#10
|
|||
|
|||
thank you for support. looking forward for the solution.
don't hesitate to contact me in case you need more details. |
#11
|
|||
|
|||
Sorry, I don't have a solution to provide here. This is a limitation of viewpoint collision.
|
#12
|
|||
|
|||
so what would you suggest?
|
#13
|
|||
|
|||
If the walls are only slightly off parallel from the XZ axes the following may be an option. Use two models, one for the visible geometry and another that's not rendered and used for collision detection. The collision model surfaces would need to be parallel to the XZ surfaces and there would be a displacement between the visible and collision meshes.
|
#14
|
|||
|
|||
i have no restrictions for the geometries, and actually very little knowledge about the model as a whole. the user can generate 3d content and use it, and therefore the walls can be anything.
|
Tags |
collision, vizact |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Using move() and spinTo efficiently | Shweta | Vizard | 3 | 07-29-2014 05:10 PM |
Hand Grab and Object Action | rmcconnell11 | Vizard | 2 | 04-30-2014 06:51 AM |
how to move seperately? | nasr | Vizard | 2 | 05-11-2009 01:57 AM |
move animated camera around corner question | nlfrnassimi | Vizard | 1 | 02-23-2009 09:45 AM |
How to make avatar's eyes to blink when speaking | michelcm3 | Vizard | 12 | 01-15-2008 08:48 AM |