panda3d-editor

In my opinion COLLADA is the best choice: standard, multi-purpose and with an existent Panda3D importer made by pror-soft. :wink:

you misunderstand the purpose of the worldeditor. the egg files it writes does not contain a real model. it doesnt contain any vertex informations at all. the only thing it does is linking existing models by using externalReferences (which is a feature collada cant provide). similar to a html page with links to pages that contain informations. it should be possible to link collada models into the scene as well, if panda can read those models.

the objecteditor part will make it possible to modify models. while collada might be a better option there, i rely on EggData to read and write models. a important part in this is writing… panda doesnt support collada writing, thus it’s currently not possible to edit models in any other format then egg.

Actually, COLLADA does support external references, and panda can write collada files (the egg2dae isn’t that far yet though.)
so it could be a good functionality. but .egg has more priority right now.

Hi Hypnos,

Triggers are not just the collision boxes. They are a sort of sensors. So, you need something to test and a way of communicating the result of the test.

Then, if you do not plan to add such features, why are you doing another simple editor? There are hundreds on Internet. Just take an open source and change the way of exporting the scenes or maps.
For me an editor has to provide more features than just putting an object over another object or painting the ground. It helps game designers to easily create scenes, rooms or games. For example:

  • Objects. Fixed or moveable. Can or cannot by taken, used, actioned, etc.
    Which key opens a door.
  • Herarchy of objects. Base and derivate classes
  • Triggers. When they are active or not. How to pass from one state to another. Different shapes; circle, rectangle, polygon. 2D or 3D
  • Meshes. Navigation mesh; where an avatar can walk. Collision mesh.
    Normal mesh. They have to be stored in separated files.
    Just my opinion.
    Regards,
    Alberto

Your ideas sound good, and IMHO it wouldn’t be a bad idea to have a mode where that’s possible and to save the scene as .py file.

i’ve made some progress in this week.

it’s now possible to paint terrain within the editor (using a shader)


it’s also possible to edit egg file parameters (of models) like collision settings etc.

the mayor time between the last update and the current state was due to a mayor reconstruction of the core system. it also took a while to get directgui interfaces setup i could use.

the wx-gui is currently broken in the cvs.

i’ve created a sample which shows, how a scene created with the editor, can be used:

the code is pretty simple:

#!/usr/bin/env python

''' sample showing the usage of the editor in scene loading
'''


from pandac.PandaModules import *

from direct.showbase.DirectObject import DirectObject


KEYBINDINGS = {
    'w': [Vec3(0,20,0), Vec3(0,0,0)],
    's': [Vec3(0,-20,0), Vec3(0,0,0)],
    'q': [Vec3(-10,0,0), Vec3(0,0,0)],
    'e': [Vec3(10,0,0), Vec3(0,0,0)],
    'a': [Vec3(0,0,0), Vec3(45,0,0)],
    'd': [Vec3(0,0,0), Vec3(-45,0,0)],
}

class Player(DirectObject):
  def __init__(self):
    self.terrain = modelIdManager.getObjectByName('terrain.png')[0]
    #self.terrain.terrainNode.setRenderModeWireframe()
    self.playerNode = render.attachNewNode('playerPos')
    self.playerNode.setPos(0,0,0)
    self.focalPoint = self.playerNode.attachNewNode('focalPoint')
    self.focalPoint.setPos(0,100,0)
    base.camera.reparentTo(self.playerNode)
    base.camera.setPos(0,-25,50)
    base.camera.lookAt(self.playerNode, Point3(0,0,10))
    base.camLens.setFar(2000)
    taskMgr.add(self.update, 'update')
    
    self.pressedKeys = dict()
    for key in KEYBINDINGS.keys():
      self.accept(key, self.keyPress, [key, True])
      self.accept(key+"-up", self.keyPress, [key, False])
  
  def keyPress(self, key, state):
    self.pressedKeys[key] = state
  
  def update(self, task):
    dt = globalClock.getDt()
    for key, state in self.pressedKeys.items():
      if state:
        mov, rot = KEYBINDINGS[key]
        self.playerNode.setPos(self.playerNode, mov*dt)
        self.playerNode.setHpr(self.playerNode, rot*dt)
    
    # get elevation of the player on the terrain
    playerPos = self.playerNode.getPos(self.terrain.terrainNode)
    terrainZ = self.terrain.terrain.getElevation(playerPos[0], playerPos[1])
    playerZ = render.getRelativePoint( self.terrain.terrainNode, Vec3(0,0,terrainZ) )
    self.playerNode.setZ(render, playerZ.getZ() + 3)
    
    # set the focal point
    focalPos = self.focalPoint.getPos(self.terrain.terrainNode)
    self.terrain.terrain.setFocalPoint(focalPos)
    self.terrain.terrain.update()
    
    return task.cont

if __name__ == '__main__':
  from direct.directbase import DirectStart
  from core.pMain import *
  
  #base.disableMouse()
  
  editor = EditorClass(render)
  editor.loadEggModelsFile("examples/mytestscene.egs")
  
  player = Player()
  
  print "all objects"
  for obj in modelIdManager.getAllObjects():
    print "  -", obj.getName()
  
  run()

and that’s a movie from running this sample:

http://public.nouser.org/~rspoerri/tmp/editor-game.mpv

the whole scene was created with the editor, (not the models itself, but placement etc.) the particle systems can be placed, also the particle editor open when you select a particel system, thus you can modify it (watch changes in the editor). The terrain painting and height deformation work quite well now.

the scene is not yet optimized to look very well, the texture modes could be improved, as well as the textures themself. the terrain popping is because i am using a very low detail on the geomipterrain.

Hey _Hynos:

I tried to contact you in the chat room but you were afk. I got your editor running after I uninstalled 1.5.3 and installed 1.5.4.

My offer still stand.

Some intial questions.

Does it only load .egg files.
Does it load .py files.

Why don’t you try and see?

Afaik, it does not support .py files. Only .egg and .egs (extended .egg format, I believe)

Hello, yes i forgot to logout this night.

It’s best if you update the cvs again. i have added some better example last night.

It’s possible to load:

  • egg files: you can modify (limited possibilities) a model (setting collision settings on parts of the model etc.)
  • egs files (egg scene files): you can add all possible types of objects into this type of file.

be aware that those are 2 completely different editing modes when loading a egg file vs loading a egs file. unfortunately the gui interface doesnt show this yet. so in egg-editing you cannot add any new type of nodes (lights etc.) actually you can but it wont save it.

I was wondering what the status was on this? I just checked it out via SVN, but I was wondering if there was any official word on stability, further features to implement, etc. It hasn’t had anything checked in for a few weeks, so I didn’t know if it is “done” for the time being, or that the developers have simply been too busy.

unfortunately you’re right. i havent got time to work on the editor atm, because i just started my master.

if somebody is interested joining the development of the editor, it may would help making the progress more continuous.

Hey Hypnos:

code.google.com/p/panda3d-editor … etail?id=2
Looks like you forgot to check in a file. Could you add the pEnums file to the repo?

hello, I was wondering if there was anything that i could do to help the production of this awesome editor, cuz it would be a l33t addition to Panda3D and would make the overall workflow so much easier. I am a relatively new Python programmer, but I think this would be a good way to improve my programing.

Regards,

King_of_z

I am trying to load this project to learn from and post anything good I can come up with, but I am getting a few file load errors.

On run it gives me the errors:

Unable to open misc\axiscube.bam
Unable to open src\default.egg (doesnt seem this file is in the source pages)
Unable to open examples\empty-scene.egs

In spite of these errors it does load an empty panda3d window.

I was able to download the raw axiscube.bam and empty-scene.egs files, but it seems that IE can only save them as .mht files, and the files have a large amount of .mht specific strings in them now, too many to go line by line and remove. Default.egg isn’t located in the directories of the svn (or am I just not seeing it?)

I was just wondering if I could get these files to mess around and learn with, or if anyone knows a way of downloading those two specific ones off from the svn unmodified to mht? I am fairly new to Panda but I have many years of programming in me, this is something I want to work on to learn the panda3d engine.

I don’t mean to be impatient or anything, but how is progress on the editor?

Look four post before your’s. Hypnose said he did not have time to work on this any longer

Will it give any updates for this editor?

Is the project dead? =(

See this thread.

David