WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   3D world editor (https://forum.worldviz.com/showthread.php?t=4219)

Ploep 04-27-2012 03:08 AM

3D world editor
 
Hello,

Im creating a 3D world editor with Vizard. I want to add a model, place it and be able to replace the models. The user can navigate through the world with wasd and click a model and replace it. So far so good, but i'm experiencing some problems with the object placement.

This is the code for a model to follow the mouse-cursor:
Code:

                # draw model on mouse position
                if(self.isDrawing):
                        line = viz.MainWindow.screenToWorld(viz.mouse.getPosition())
                        x,y,z = line.endFromDistance(6)
                        y = 0
                        self.model.setPosition([x,y,z])

It works but it is still hard to navigate objects in the world. Is there a better way to let models follow the mouse and put them in the 3D world?

Thanks!

Jeff 05-01-2012 06:52 AM

You could try using a viztracker.MouseTracker. Here's a simple example:
Code:

import viz
import viztracker
import vizact
viz.go()

gallery = viz.addChild('gallery.osgb')
ball = viz.addChild('soccerball.osgb')

#Move the object with mouse movements and mousewheel
mousetracker = viztracker.MouseTracker()
link = viz.link(mousetracker,ball)

#Disable the link and place the object with a mousepress
vizact.onmousedown(viz.MOUSEBUTTON_LEFT, link.disable)

viz.mouse(viz.OFF)


Ploep 05-03-2012 02:25 AM

Thanks for your reply. I implemented the mousetracker and it is working better. When the user clicks the mouse i put the model on x,y=0,z so that the model is placed on the ground. I tried to catch a mouse_move event and set the position of the model to the ground so that the user can't move the object in the air or through the ground.

Code:

        def onMouseMove(self,e):
                if(self.isDrawing):
                        x,y,z = self.model.getPosition()
                        self.model.setPosition([x,0,z])

But this wont have any effect. Is it possible to adjust the mousetracker so that the models stick to the ground plane?

EDIT: I try to get some collision with the mousetracker model but I dont know how, can someone give me some hints? Thanks


All times are GMT -7. The time now is 06:21 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC