Hello! I have been tinkering with Panda3D for some time now and have put together a teaser trailer for a game I am working on. I thought you might find it interesting.
I am trying to create an atmospheric experience, which I showcase in the teaser. Feedback is of course very welcome, both to the teaser, game graphics and the source code
The teaser is beautiful! I downloaded the codebase from GitHub, and got it running - there’s a hardcoded path the the egg files that was a very slight problem for me - but I did bring up ‘prototype.py’. Are there resources not checked into the project? I can walk around the world, but it’s all grey except for the clothes and door.
Anyway, I am just learning about Panda3D and appreciate your sharing with us!
(I have a game in mind - more of a VR training thing that a game, really - that would also take place in snow!)
Thank you! I am glad you find it interesting Oops, the prototype.py should not even be there. It is really old and I forgot everything about it. The file to run is main.py.
The textures are probably from when I exported them from Maya… Hmm, perhaps I need to apply the textures when loading them, so they do not have hardcoded paths. I did not think that would be an issue. Thanks for notifying me!
One brown rectangle floating in space…? That must be a door. The word “TEST” sounds right, though. Hmm… It would make sense, if the textures were just missing. Does the console give any output? Do you have the interior.egg in the models folder?
rob@ScreamerIV:/mnt/d/proj/panda-examples/Omicron35-master$ ppython main.py
Known pipe types:
wglGraphicsPipe
(all display modules loaded.)
:collide(error): Invalid attempt to detect collision from CollisionCapsule into CollisionRay!
This means that a CollisionCapsule object attempted to test for an
intersection into a CollisionRay object. This intersection
test has not yet been defined; it is possible the CollisionRay
object is not intended to be collidable. Consider calling
set_into_collide_mask(0) on the CollisionRay object, or
set_from_collide_mask(0) on the CollisionCapsule object.
Something is missing
That last “Something is missing” happens when I click the mouse on the mysterious “door”.
I can dump the list of that egg file’s contents, thusly:
I guess I should tell you that I’m running this on a Windows box, but using WSL (aka Ubuntu for Windows) for my shell. Perhaps I should boot into straight-up Linux and make sure this isn’t a Windows thing…
Alrighty, then! My bad. I think my bash-fu isn’t as powerful as I would have thought… or maybe it’s WSL… but anyway, running on for-real Linux (Ubuntu 20.04), it works fine.
Never mind, and thanks again for a great demo! I look forward to seeing more. (Or maybe even I will be posing my work here soon… one can dream!)
Sorry I didn’t get back to you sooner - I just upgraded my box to Ubuntu 20.10, and had a couple little issues I had to deal with (no networking or USB!) but now I am back.
I ran the demo again and note two missing textures, perhaps:
The clothing - all three items hanging in the entryway are white. (I suppose they share the same texture?) The first attached image shows this (I stupidly clicked once before I got the screen shot, so one item disappeared, but it was white before I clicked.)
The shower curtain is also texture-less. (image 2)
No errors were thrown to the console, which I have included below.
Note that I am getting some texture-not-found messages because game time went into “night”, which I had not encountered before. I’ll see if I can fix (ie workaround) them the way I did the others, and let you know.
rob@ScreamerIVu:/media/rob/DataSSD/proj/panda-examples/Omicron35-master$ python3 main.py
Known pipe types:
glxGraphicsPipe
(all display modules loaded.)
:pnmimage:png(warning): iCCP: known incorrect sRGB profile
:pnmimage:png(warning): iCCP: cHRM chunk does not match sRGB
:pnmimage:png(warning): iCCP: known incorrect sRGB profile
:pnmimage:png(warning): iCCP: cHRM chunk does not match sRGB
:collide(error): Invalid attempt to detect collision from CollisionCapsule into CollisionRay!
This means that a CollisionCapsule object attempted to test for an
intersection into a CollisionRay object. This intersection
test has not yet been defined; it is possible the CollisionRay
object is not intended to be collidable. Consider calling
set_into_collide_mask(0) on the CollisionRay object, or
set_from_collide_mask(0) on the CollisionCapsule object.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane4 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane3 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane2 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane1 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/suticases.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/suticases.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/out:pTorus6 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/wadrobe.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/wadrobe.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/wardrobe found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/blanket2ShapeOvercast.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/blanket2ShapeOvercast.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interactive_objects/bed.egg found.
A question for you, Maxwell - did you hand-write the code here? Or is it generated by something, or from some template?
I ask, not to criticize at all, but I’m just learning Panda3D and am somewhat put off at the prospect of writing >2000 lines of code, as you seem to have done here, just to wander thru a scene! (Which, again, is quite beautiful and extremely cool!)
I think that, if you start with just the basics and build up from there one element at a time, you might be surprised at how those two-thousand lines build up.
Or put another way, you don’t have to write two-thousand lines all at once–instead, you may write ten to start with, and then another twenty for this feature, and fifteen for that, and maybe there’s a larger one that takes fifty lines, and so on. And so the lines accumulate.
Thank you so much for your reports. I’ll look into the missing textures - all the missing textures are individual objects, not a part of the house, so it narrows down the problem. Also, I think you are right about some misspelled file paths
Do I really have over 2000 lines of code? But yes, I have manually coded everything you see in the .py files. But I have also spent lots of time trying to make code, which makes life easier for me - lots of modules for working with models, scenes, functions, triggers and so on the way I find it useful. Some of the scripts (especially colliders.py) were hardcoded in an ugly way, taking up a lot of space.
So you do not need this many lines just to walk through the scene. I believe I have lots of code which does not visibly affect the scene.
I am still working on this project, albeit quite slowly. The environments have been improved and I recently added a very simple developer console, that I wanted to show off.