Yep. Another scene editor...


#1

Hey all,

We’re probably getting a bit saturated with these things now, but here’s my attempt: http://thetechartist.com/?p=279 It uses the gizmo module I cooked up, as well as coppertop’s ODE Middleware module for the “game”. All UI stuff is done with wxPython.


How to create a complex 3D scene ?
Making a GUI for Panda3D
Level Editor
Panda speed bumps - what to look out for
#2

looks pretty decent for yet another scene editor. keeping it alive will be a bit of work. maybe you can beat the odds. would be nice.


#3

Looks good!

Easy to use, fairly powerful, and it sounds like it’s fun to make. :slight_smile:

I love making editors and have made many in DarkBASIC, but my next one I want to try making with Panda. I’m not entirely sure how to go about it though. :stuck_out_tongue:


#4

Hey all, still working hard on my scene editor. My latest post goes on about how I’m attaching scripts to objects like Unity.

It’s a bit code heavy at the moment, don’t worry - pretty pictures will be added soon :slight_smile:

http://thetechartist.com/


#5

This might be “yet another” scene editor, but as far as I know none of the rest got/is finished.
So I’m really looking forward to this.

If you’ll ever want a html/pdf documentation for your editor, let me know.


#6

Hi Preusser,

To my knowledge there are still a few users developing editors: Coppertop for one. I’m still trying to spend any and all available time developing this one however :slight_smile:

Will hopefully put a usability test video up soon for you to have a gander!


#7

Looking forward to it.
Any estimated release date?


#8

None currently. Most of the base functionality is there though, so I suppose I could release a base version soon.

The Unity-style functionality is a bit more complex as it has a heavy influence on how you code your game; plus it starts getting into “that’s not how I would have done it” territory - potentially limiting the user base.

I would rather get a simpler but solid framework out sooner which does not include this, but including the appropriate hooks so that people can easily add functionality suitable to their project.


#9

That sounds like a good idea.
Though I haven’t really used editors like these myself so I don’t really know how a general (non game-genre specific) editor can get into the “that’s not how I would have done it” territory.


#10

Hey all,

I’ve just finished a major overhaul of my code and am gearing up for a first release. It’s going to be pretty light on features but should contain most of the basics:

  • Adding / transforming nodes
  • Editing node properties
  • Saving / Loading
  • Project management
  • Build to P3D option
  • Plugin system

Is this something people would be interested in using? Is this something people would be interested in contributing to? I’m trying to put the code together as simply as possible and am hoping that the plugin system will allow the core to remain light, solid and project agnostic while encouraging users to expand functionality for their individual needs. I’d be interested to hear people’s thoughts :slight_smile:


#11

How is the workflow planned? How do you attach your code to the nodes?
I’m trying hard at doing a level editor myself and i borrowed many ideas from Unity. So yeah, the demand is there, but the editor would need to be multiplatform, very well documented and stable. If the ideas and paradigms behind it are clear, then it shouldn’t be too hard to extend, so yes, you can expect collaboration in that case.


#12

Like you I’m taking my cues from Unity. Currently a user attaches a script to a node my dragging and dropping it over the node in the viewport. The script is attached to the node path using a “hook” object (the circular reference kind).

Perhaps we should join forces?


#13

I don’t know. It might be a bit late, since we both already have quite some code, which most probably follows different ideas (we only have the UI in common). And I doubt anybody is willing to abandon his project in favor of another one.


#14

Hi all,

I’ve decided to make an initial release of the editor in order to get some opinions and feedback. I’s pretty light-weight on features at the moment but hopefully you should be able to gauge where the project is heading: https://github.com/Derfies/panda3d-editor

I haven’t updated for a while, but the dev-dairy is here: http://thetechartist.com/

Linux users might run into some trouble at the moment as I’m running into the familiar GetHandle() returning 0 when trying to embed a panda viewport into a wx panel. If anyone knows the workaround I would love to hear it ( might be as simple as dropping my homebrew wxPandaPanel in favour of the support available in 1.8 ).

Usage

To give the editor a spin, try the following:

  • Create a new project
  • Import some models (.egg or .bam)
  • Middle mouse drag them into the scene
  • Translate, rotate and scale them as your desire
  • Set up some lights with the Create menu
  • Save the scene as test.xml
  • Build your project (File -> Build)

You should now have a p3d file which runs your scene.

Keys

4 - Wireframe view
5 - Shaded view
6 - Textured view
Q - Select
W - Translate
E - Rotate
R - Scale
Z - Undo
Shift-Z - Redo
F - Frame selection
Backspace - Delete
Ctrl-D - Duplicate
Arrow up - Select parent
Arrow down - Select child
Arrow left - Select previous child
Arrow right - Select next child
Mouse left - Pointing and selecting
Middle mouse - Your “doing” button. Use then to reparent nodes in the scene graph, or drag-drop models into the scene.

Requires

  • wxPython

There’s still a lot to do, but if you’re interested in the project then please leave your opinions below. Thanks!


#15

I run into the GetHandle() issue. My workaround is the following:

self.GetTopLevelParent().Bind(wx.EVT_SHOW, self._onShow)

(...)

    def _onShow(self, event):
        if event.GetShow() and self.GetHandle():
            # M$ Windows makes problems when initializing here. Call it after this function.
            if os.name == "nt":
                wx.CallAfter(self.initialize)
            # All other OSes should be okay with instant init.
            else:
                self.initialize()
        event.Skip()

in initialize() I always had a handle this way.


#16

Hello!

Just tried to run, got this error:

:display:wgldisplay: Attempt to create pbuffer failed.
:display:wgldisplay: Attempt to create pbuffer failed.
:display:wgldisplay: Attempt to create pbuffer failed.
:display: wglGraphicsBuffer wouldn't open; abandoning.
:ShowBase(warning): Unable to open 'none' window.
Traceback (most recent call last):
  File "main.py", line 7, in <module>
    app = pandaEditor.App( redirect=False )
  File "C:\Panda3D-1.8.0\python\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 7981, in __init__
    self._BootstrapApp()
  File "C:\Panda3D-1.8.0\python\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 7555, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "D:\Derfies-panda3d-editor-b0e8f1e\src\pandaEditor\app.py", line 37, in OnInit
    ShowBase( self.frame.pnlGameView, self.frame.pnlEdView )
  File "D:\Derfies-panda3d-editor-b0e8f1e\src\pandaEditor\showBase.py", line 14, in __init__
    self.SetupEdWindow( wxGameWin, wxEdWin )
  File "D:\Derfies-panda3d-editor-b0e8f1e\src\pandaEditor\showBase.py", line 65, in SetupEdWindow
    wxGameWin.Initialize()
  File "D:\Derfies-panda3d-editor-b0e8f1e\src\p3d\wxPanda.py", line 87, in Initialize
    base.openDefaultWindow( props=wp, gsg=None )
  File "C:\Panda3D-1.8.0\direct\showbase\ShowBase.py", line 884, in openDefaultWindow
    self.openMainWindow(*args, **kw)
  File "C:\Panda3D-1.8.0\direct\showbase\ShowBase.py", line 920, in openMainWindow
    self.openWindow(*args, **kw)
  File "C:\Panda3D-1.8.0\direct\showbase\ShowBase.py", line 675, in openWindow
    raise StandardError, 'Could not open window.'
StandardError: Could not open window.                                                                                          

My system:
win 7, radeon hd6470m, panda 1.8, wxPython 2.8, python 2.7

wxPython with panda works on this machine with some samples from forum

Thanks for any help


#17

If I were you, I would not use the path used by Unity to create * Object-scripts* like.
For example, I am passed from Unity to Panda3D for this reason, because I think that the Classes are easier to manage when the code is more complex.


#18

@crolli: I think I know what might be going on. I’ll see if I can get a patch in tonight. Thanks for testing it.

@adanf: The first iteration of the editor does not include this feature: ive moved that functionality into a plugin which I will release later. At that stage you can choose to use it or just use the editor to build your scenes - whatever works best for you.


#19

However, I would bet on more of a * Class-script * method like.
For example, for the class that support a model, you can drag and drop the script over 3d model and it become automatically a class object.
You can also make a variable like “class-instance” that automatically makes all 3d model instances (of the specified model above) part of the same class.
Therefore, if you have a 3d model of a tank (in a model list box or in the 3d editor) from an hypothetical RTS, with a simple drag and drop you can instantiate under the same class all the 3d model like it.

p.s.: I would do it if I had more time, but at the moment I have another project in mind, so you’re free to copy my idea :smiley:

p.p.s.: Always remember that the problem in programming is not how you save the code, but the amount of code that a programmer must remember.


#20

@crolli: I think I’ve fixed the issue you were having earlier. Give it another try and let me know how it goes.

@Nemesis: I’m not sure I understand how your code fix works - or at least I think my code already creates the wx panel first and then starts ShowBase. Can you explain a little or even submit a patch?