Demomaster application framework with wxpython navigator

version 0.2 released, see the top post.

now that works (both oceandemo and oceandemo2) and I say it was worth the time spent 'cos is really awesome! very nice the addition of the nature-grass demo either.

just to not make you rest too much I gotta another bug to sendya, related to all the demos that concern the shadowcaster2 - here’s the traceback:

Traceback (most recent call last):
  File "demomaster.py", line 373, in <module>
    run()
  File "linuxroot/usr/share/panda3d/direct/src/showbase/ShowBase.py", line 2266, in run
  File "linuxroot/usr/share/panda3d/direct/src/task/Task.py", line 965, in run
  File "linuxroot/usr/share/panda3d/direct/src/task/Task.py", line 903, in step
  File "linuxroot/usr/share/panda3d/direct/src/task/Task.py", line 802, in __stepThroughList
  File "linuxroot/usr/share/panda3d/direct/src/task/Task.py", line 721, in __executeTask
  File "demomaster.py", line 197, in InitDemoLater
    demo.InitScene()
  File "./demo_ode/ode1.py", line 57, in InitScene
    self.LoadLights()
  File "./demo_ode/ode4.py", line 73, in LoadLights
    self.changeLightPos(None)
  File "./demo_ode/ode4.py", line 80, in changeLightPos
    self.sMgr.castercam.setPos(v[0],v[1],v[2])
AttributeError: ShadowManager instance has no attribute 'castercam'

That’s great to know that you can run it properly. Panda is very good in portability ! Well, I live in Hong Kong, my time is now 6:00 pm, too early to take a rest.

I am a bit lazy in porting the shadow manager class. It checks whether the hardware is capable to run it:

    def shaderSupported(self):
        return base.win.getGsg().getSupportsBasicShaders() and \
               base.win.getGsg().getSupportsDepthTexture() and \
               base.win.getGsg().getSupportsShadowFilter()

    def __init__(self, scene = base.render, fov = 40, near = 10, far = 100, hardness=0.2):
        if not self.shaderSupported():
            return

But I have not put the code to notify user about it. It is likely your hardware does not support ShadowFilter or DepthTexture ? So the castercam is not created. Can you verify ?

I will put more checking there.

it return me 0 but let me tellya that the other manager works and looks pretty nice and could be a reliable substitute

The second shadow manager can take a scene with auto shader, it is supposed to be more flexible. But I believe it need more fine tuning.

Sidenote: the shadows sample program and my version of the shadow manager do not require support for depth textures. Also, I believe they both don’t require the shadow filter either.

I see. I will fix the code in the coming release.

Version 0.3 released.

Sweet, good job! You might just wanna consider enabling anisotropic filtering for the grass, otherwise some nasty artifacts are visible.
Also, a better transparency mode for the trees wouldn’t be a bad idea.

it doesn’t run here very well. i get some strange artifacts on all samples, although the panda3d internal samples all run fine outside your app.

any chance to get your samples collection being independent of the surrounding WX stuff?

other bugs found so far:
-you can’t run it from any other directory. maybe this helps:

os.chdir(sys.path[0])

-the control window is not scalable in width
-closing it fails (you have to terminate the panda3D window instead)

my configuration:
-GNU/Linux
-Nvidia 7600GS with 180.29 drivers
-Panda 1.5.4
-Python 2.6.1
-wxpython/wxgtk 2.8.9.2

screenshots on request. maybe i’ve just overseen something…

man your demos rocks my socks more and more
all runs very good here, you’re doin’ an excellent job, I also like how’s growing the editor in your hands - by the way I added a search feature (the one in my package) so you may snatch it if you will
keep up the great job!

Thank you pro-rsoft. It is more of a copy cat from you guys demonstrations. Actually I am still not familiar these possible options. I will take a look to see how to improve it.

Thank you ! I am also thinking about searching features and also if possible to have all class,method,functions keywords of panda to make a searchable list for the searching.

Hi,

I have not tested my app on Linux machines. But I believe pro-rsoft, astelix and others have it run on Linux.

At the very beginning I decide to plug a wx framework on top of the demo. It is because I would like to change the panda objects and application object properties dynamically, so that I can see some of the effects easily. e.g. change the light color, light postion, the force to apply on the canon … etc. It is not easy to remove them now.

But you can try this:
demomaster.py f Ocean2Demo f
The second parameter specify a demo that you want to start. The last parameter specify that wxPython is not used. You will see the ocean demo but no other functions can be used. e.g. change sky box, scene graph, editor, set wire mode…

If you follow the logic, you can actually replace the wx framework with a tk framework, for example.

Can you give some screen shots of your problem ? May be it can be fixed easily by other Linux users ?

other bugs found so far:
-you can’t run it from any other directory.
== yes, you are right. I always run it from the same directory.

-the control window is not scalable in width
== what do you mean ? I hard code some of the screen width and height in the wx side. I know that it is not a good practice but I would like to focus on the Panda learning exercise…sorry about that.

-closing it fails (you have to terminate the panda3D window instead)
== The termination problem…I also have this problem at the beginning. But somehow it is gone in the later development stage. I believe my code to terminate the application is not correct.

Thank you for your report. I wish I make it more portable and your input is very important.

yea cheung, I’m already planning to do that - It’s very easy that my next release will got it

about that Nemesis are telling you that the wx window to the right do not adapt the subpanel sizes after a resize of the window - I forgot to mention in my former posts as well. Try to use the AUI manager to manage the whole thing I found it the best solution for my framework - dig it to see how

Grass demos 1 and 2 don’t work (without any warnings). The third demo works fine…
EDIT: I mean the grass is not displayed. The ground plane is there, but there is no grass on it.

There are 4 grass demo

  1. Grass Demo 1
  2. Grass Demo 1 with light shader
  3. Grass Demo 2
  4. Grass Demo 3 walking forever

Do you mean 1 and 2 are not working, 3 and 4 are working ? Or, which one is working ?

If you click “Toggle Grass Model” or “Toggle Tree Model” does it help ?

Toggling anything doesn’t help: no grass, neither in 1.5.4 nor in 1.6.0.
Don’t work:

  1. Grass Demo 1
  2. Grass Demo 1 with light shader
  3. Grass Demo 2
    Works:
  4. Grass Demo 3 walking forever

That’s interesting. Are you on Linux or Windows ?
In “Grass Demo 1”, can you see a big tree there ?

Try this if you can see anything.
In Attribute, select Grass Spacing, set it to 30.
Click “Toggle grass model” two times (now it is set to “White Debug Leaf”
Click “Basic”, click “Set Wired Mode”.
You can see some white wired rectangle, can you ?

WinXP.
I don’t see trees. I only see skybox and ground plane (+Panda walking and light on other demos).
Regarding the steps you suggested. This is the what I see:

This is default camera direction, I tried not to rotate it.

EDIT:
This is how it looks in normal mode: