Announcing Panda3D Studio

Hi everybody :slight_smile: !

Are you sometimes frustrated by problems related to the export-import pipeline from your modelling program to Panda3D?
Perhaps you don’t even really like to use any of the modelling programs out there, because they’re too expensive (3dsmax, Maya, …), have too steep a learning curve, or because it’s confusing that certain object properties don’t match Panda3D’s representation (e.g. material attributes in the modelling program vs. render attributes in Panda3D)?

Wouldn’t you rather just create your game assets right inside of Panda3D itself, using a nice graphical frontend that allows comfortable modelling, texturing and animating, without having to worry how it will all end up looking in your actual project?
If this is something you are longing for, then your pipeline nightmare may soon turn into a pipe dream come true :smiley: !

Ladies and gentle panda’s, may I present to you a project made with Panda3D for Panda3D:

Panda3D Studio!

Here are some recent videos:

Panda3D Studio - Model creation and editing
Panda3D Studio - The History Editor
Panda3D Studio - Materials and textures
Panda3D Studio - Milestones in History Editor
Panda3D Studio - Multitexturing

…and some older videos:

Panda3D Studio - Sphere creation
Panda3D Studio - Fun with transforms
Panda3D Studio - The grid
Panda3D Studio - Materials

This is a personal project of mine that I started a long time ago and that I would like to share with this community in the near future. At the moment it’s still very limited (it looks like it won’t even start on Linux, because of some problems I’m having with wxPython) and it’s sorely lacking some features that I probably don’t have the skill to implement myself, so it would be nice if more experienced members of this community could contribute to it (which is why I will try to put it on GitHub).

As soon as I’ve cleaned up the code a bit and managed to get it onto GitHub I’ll create a new topic for it in the Showcase forum.
In the meantime, feel free to use this announcement topic to share your thoughts about this project.

Now I do realize that most people will stick to Blender or whatever they’re using, but even if Panda3D Studio will never be able to compete with such programs, it could still be used to fix up some errors in your models caused by export problems, for example.
My personal goal is to just have a nice, easy to use editor for the creation of relatively simple models, but it could potentially grow into something much more powerful.

If you want to know if this can be used as a level editor, then I’d have to say that for me personally it’s more of an afterthought right now, although I do have some vague ideas of how I’d like that to work. With a few tweaks it could already serve as a basic object placement editor, though.

Here’s a list of some already implemented features:

  • creation of primitive objects (box, sphere, cylinder);
  • creation of helper objects (axis tripod, texture projector);
  • transformation of objects;
  • choice of coordinate spaces (world, screen, local, picked object);
  • choice of transform centers (selection center, coordinate space origin, local origin, picked object origin);
  • subobject editing (creating, transforming, deleting) at vertex, edge and polygon level;
  • polygon smoothing: un/smooth the currently selected polys together as a group, or adjust their smoothing by adding or subtracting the smoothing applied to another polygon;
  • the normal direction and, to some degree, the triangulation of a new polygon can be controlled during its interactive creation;
  • textures (and everything related, from filtering to transforms to multitexturing) and basic Panda material properties are merged into one Material class, allowing the user to create such a material once (in a library) and add it to any number of objects afterwards;
    it is however also possible to simply load a texture from file and apply it to the selected object(s); it will be added to an implicitly created material that can be extracted from the object selection afterwards for further editing;
    similarly (using the Material Toolbar), any (basic) material property can be changed for the material(s) already set on the object selection;
  • texture coordinates can be edited in a dedicated UV Editor (at the vertex, edge and polygon level);
  • entire UV sets can be copied and pasted, while any UV set can be exported as a template;
  • every user action can be undone and redone, because of a non-linear, branching history system; when entering the History Editor, the user is presented with a simple list of events, therefore not immediately burdened by the added complexity of a hierarchy; each “node” is represented by a dropdown box where each entry is the start of a different timeline;
    to make navigation a lot easier, events can be given a user description and marked as a “milestone” that can be jumped to by selecting it in (yet another) dropdown box; this system makes it possible to store several different versions of a scene into a single file;
    additional management tools are provided to keep the hierarchy small and tidy: events can be merged down and entire branches of currently undone events can easily be deleted.

Happy holidays, everyone :slight_smile: !

This topic was created to formally introduce my project before I made it publicly available on GitHub; it should not be used to discuss the project in its current state.
The information in this post is also outdated and will not be updated here.
Please see the topic in the Showcase forum for updates and further comments.
Thank you.

1 Like

This looks exciting! What a nice Christmas present. :slight_smile:

It would be really cool to have a model editing program designed around Panda3D. I think that especially if this is extended to be able to serve as a level editor, it would be a welcome addition to the tools already available for Panda3D.

Even when using another modelling program, I think it is useful to have a program that can directly operate on the exported models to fix export issues or add Panda3D-specific attributes that an exporter does not support, rather than having to manually edit .egg files.

I do want to emphasise the importance of building good scene editor tools; many people feel that Panda’s biggest flaw is the lack of a full-featured dedicated scene editor, and it would be a shame to pass up the opportunity to let Panda3D Studio fill this gap. :slight_smile:

This is really, really cool.

Even if you don’t do the actual modelling in Panda3D Studio it will greatly help to setup scenes and preview them.

Great work, it’ll be interesting to see where it goes.

That looks very interesting. Are you also planing to add rigging/skinning (adding bones/joints and weights for them) and animations? And how about some more advanced modeling tools (extrude, bevel, weld, cut,mirror, shell, tesselate, paint deformation)?

Thanks for the nice comments, guys :slight_smile: !

Sure, I’m always happy to accept patches :stuck_out_tongue: .
Seriously though, I am willing to work on level editor functionality, but you’ll have to be patient since this will be a lot of extra work and I don’t have that much free time.

Thank you. Your level editor is quite impressive also :slight_smile: .

That is something I do plan to implement, yes.

Those are the things I’m hoping to work on soon, since modelling is indeed very important to me (he said, as he blundered off the catwalk).
Extrude, bevel and inset will likely become one single operation since they are quite related.
Tesselation (mesh smoothing) is one of those things I’d really love to see, but I’m not sure I can implement that myself. Perhaps tobspr could help with this (a catmull-clark tesselation shader would probably fit the bill, but that is way beyond me).
Paint deformation and shape modifiers like bend, taper, spherify etc. would also require some very advanced algorithms.

So yeah, still a lot to be done, but I’m just going to try and enjoy it (it’s still a hobby project after all :wink: ) and I’ll see how far I get.

Would be happy to help!

Hell, that looks awesome!

I’m a very bad 3D designer myself. I always used Art of Illusion, very great and easy to use program, but lacking the function to export animations. I’m also vouching for a Bevel function!

It would be so nice to just hit the export function and just use the generated .egg files as they are!

Happy New Year everybody!

Finally, the project is up on GitHub :slight_smile: !

There are still many things that are somewhat broken or simply not implemented yet, so don’t try to do anything serious with it for the time being. For example, transforming subobjects can only be done interactively; the input fields on the Transform Toolbar can only be used for toplevel objects at the moment. Other things, like setting a coordinate system or center of transform, or applying material properties, cannot be done at the subobject level yet.

Anyway, do try to have some fun with it :slight_smile: .
(Please note that if you’re on Linux, the program will most likely fail to start up due to a Sizer error in wxPython; perhaps someone will be willing to help figure this out?)

As a special New Year’s resolution, I have decided to give up on using camelCase in favour of snake_case; as it turns out, I do see now that in several ways it does make the code look more consistent and some names are more readable. So thank you, rdb, for converting me so I can convert my code :wink: .
Besides: “Python” and “snake”_case, that just can’t be wrong, right :smiley: ?
And of course, I now use Panda3D’s alternative snake_case names for methods and enumerators as well.
But I wonder: will parameter names (like “makeCamera” in ShowBase.open_window) be converted as well eventually?

In fact, after a discussion with rdb I’ve decided to export to .bam instead, which will mean less work for me and even more fidelity for you.

Thank you in advance :slight_smile: !

I got some problems running it, to be honest I didn’t take a look at the code to see what’s wrong (yet), but here’s a trackback:

Traceback (most recent call last):
  File "", line 36, in <module>
  File "", line 29, in __init__
    core.setup(viewport_data, eventloop_handler)
  File "C:\panda3dstudio-master\src\core\", line 32, in setup
    self.__create_window(size, handle)
  File "C:\panda3dstudio-master\src\core\", line 113, in __create_window
    self.open_default_window(props=wp, name="")
AttributeError: Core instance has no attribute 'open_default_window'

Sorry to hear that you got bitten by a snake_case :mrgreen: .
It looks like you are using a version of Panda3D older than Panda3D-SDK-1.10.0pre-dafe48a :wink: .

The need for such a recent version is not only for naming style reasons, but especially because it has an enhanced version of GeomVertexData.transform_vertices, which now alternatively accepts a SparseArray of arbitrary vertex indices instead of a single range. This basically means much faster transforms, as I no longer depend on GeomVertexWriters :slight_smile: .

Well it’s a good reason to update panda :wink:

Will .bam be the only import/export option? Obj would be a simple and welcome addition for anyone who wants to use 3rd party programs for different tasks (like Sculptris/Mudbox/Z-brush for sculpting or xNormal for baking textures).

The .obj format does look straightforward enough, so I’ll give it a try.

Furthermore, rdb told me about the possibility to hook into Panda’s assimp loader to support importing from a large range of formats; not sure how to do that yet, but it sounds promising :slight_smile: .

Now that Panda3D Studio has been formally introduced, I would like to invite you over to its new topic in the Showcase forum, where it can be discussed in more detail, in terms of basic concepts, implementation, and ideas for future development.

See you there :slight_smile: !

Yes, as long as Panda3D is built with assimp support, loading model formats that assimp supports can be loaded with loader.loadModel (including .obj, .fbx, .dae, .dxf, .lwo, etc.), after adding this to Config.prc:

load-file-type p3assimp

We do not currently build with assimp on Windows. It’s on my todo list.

Is this a virus, or was it a false alarm?

Did this project fall off a cliff? There is not much happening in this forum, so I wonder…

The project is still very much being worked on, but this topic was not really meant to discuss its development; please go here to learn about recent updates.
I’ve now edited the first post to make this more clear, sorry for the confusion.