Python-Ogre 1.2 Release Candidate 2 Available

andy

26-06-2008 08:50:33

OK so it's been a rather long time since the 1.2 RC1 release, however Python-Ogre 1.2 RC2 is finally [b]here[/b]!!!!!

Included are Updates and General Library Improvements, along with significant GccXML/P++/Boost implementations under the hood (that have caused a few API changes) so I'm looking for as much feedback as possible. Read the Changelog for details, however main changes include:
  1. * Ogre - built from the latest 1.7 SVN Head version
    * QuickGui, Caelum, OgreForests (updated to latest SVN versions
    * Particle Universe 0.7
    * Bullet 2.69
    * Physx - The 2.8.1 NVIDIA version
    * NxOgre SVN 21
    * Ode 0.9
    * various improvements in code generation - remember to see the ChangeLog.txt for more information[/list:u]
    Important Note: This is a release candidate, AND IT HAS BUGS:
    1. * OgreOde(broke!)
      * OgreOffmpeg(underlying library needs to be updated)
      * Navi(compiler version issues)
      * Caelum demo needs work
      * CelShading demo in Ogre needs rootSceneNode changed to getRootSceneNode()
      * RenderQueueListener callbacks in Ogre aren't implemented due to a bool C++ to Python issue with boost that I'm chasing.[/list:u]

      Do update your DirectX drivers when asked -- I'm using the 'June' SDK.

      Please use the [b]SourceForge Tracker [/b] to report any issues etc and we'll get to them asap.

      Regards
      Andy

fpois

27-06-2008 14:31:51

wow, congratulations!

I can't find info on OgreOffmpeg, do you have a link to it or explain it's capabilities?

andy

28-06-2008 00:39:35

OgreVideoffmpeg is a video player module using the ffmpeg library. The source is in the SVN tree (in the ThirdParty directory).

It isn't included in the binary release at this time. The challenge is that the ffmepg library has changed it's api and I need to tweak the module C++ code to reflect this before I can then create the Python wrapper. Which means learning ffmpeg sufficently well to make this happen, which takes time etc etc :)

Regards
Andy

fpois

01-07-2008 14:42:13

yeah i keep hearing people complain about ffmpeg that it changes its API ever so often...

anyway, thanks Andy for your awesome work with python-ogre

SiWi

02-07-2008 15:22:15

Man this comes just at the right time. Have time for PythonOgre again this days. One question:
* NxOgre SVN 21
Means bleeding?

andy

03-07-2008 00:22:21

Yes -- the older version is still in the SVN if you want to build it yourself...

Andy

saluk

07-07-2008 06:43:21

What happen? Is there a comprehensive list of all api changes? I try to run my project on this and am slowly working through the issues but it's very difficult.

I will document the issues I have run into and how I fixed them:
no more SceneManager.rootSceneNode -> must use SceneManager.getRootSceneNode()
no more RenderSystem.createRenderTexture. Try to use TextureManager.createManual instead:

it_s.tex = self.root.getTextureManager().createManual("it_tex",
"rtt_group",ogre.TextureType.TEX_TYPE_2D,
512,512,1,ogre.PixelFormat.PF_R8G8B8,
ogre.TextureUsage.TU_RENDERTARGET)

it_s.vp = it_s.tex.addViewport(it_s.camera)
it_s.vp.setOverlaysEnabled(False)
it_s.vp.setClearEveryFrame(True)
it_s.vp.setBackgroundColour(ogre.ColourValue.Black)

Fails with:

File "cdo.py", line 295, in setUpItemViewport
it_s.vp = it_s.tex.addViewport(it_s.camera)
AttributeError: 'Texture' object has no attribute 'addViewport'

So the texture object is not wrapped as a RenderTexture. How do I get it wrapped as a RenderTexture? Ok so I read Demo_RenderToTexture and figure out:

rttTex = texture.getBuffer().getRenderTarget()


Problem with my cegui code:

C:\Users\saluk\Desktop\dev\cdo\library\ogreclient\cegui\cegui_util.py", line 232, in load_layout
layout = sng_win().loadWindowLayout(layoutname,instancename)
Boost.Python.ArgumentError: Python argument types in
WindowManager.loadWindowLayout(WindowManager, str, str)
did not match C++ signature:
loadWindowLayout(class CEGUI::WindowManager {lvalue}, class CEGUI::String filename, bool generateRandomPrefix)

Checking cegui api it looks good. I should be able to pass it a filename and a prefix. Str,Str. It seems like python-ogre is matching the str,bool function instead, and then erroring out. Or maybe the other version of that function was mistakenly not wrapped. I work around like so:

layout = sng_win().loadWindowLayout(layoutname,False)
def addprefix(win):
win.rename(instancename+win.getName())
self.apply_on_children(addprefix,layout)

(self.apply_on_children will run addprefix on all windows and subwindows, to add the prefix on everything since other function definition did not work) This sort of works, but leads to other related crashes when things that ought not be renamed are renamed... My game won't run until this is fixed.

Also, ogre.Quaternion no longer accepts a list. I have to call it with "ogre.Quaternion(*values)" whereas before "ogre.Quaternion(values)" used to work.

I'm sure once the cegui stuff is fixed there will be more errors... Bleck on so many things changing :( But also many versions were bumped so it's understandable. Just weird because I have had very few issues with previous version changes of python-ogre (including the release before this).

andy

07-07-2008 12:30:27

I think you found just about all of the changes (based upon my conversions of the demos) with the exception that entity's no longer have setNormaliseNormals function..

Most of the changes are due to the Ogre API changing -- see more on this [b]here[/b]

I'll double check the CEGUI API issue..

Regards
Andy

saluk

07-07-2008 16:35:40

Oh you went up to 1.6? No wonder my confusion, I thought it was 1.4.9!

I did find setNormaliseNormals also, but forgot to report it. It was the first thing I found and nothing broke when I deleted it, hehe. Now I know why. I always thought having to turn this on felt backwards.

Thanks for the quick response. My game now runs if I disable some of the conflicting cegui windows, and no more ogre-specific problems seem to exist. The only thing left for me is that cegui issue.

HangDude

12-07-2008 09:58:44

I installed the 1.2 RC2, but it seems to be missing some openAL dll files in the packages_2.5\ogre\sound\OgreAL directory. Could somebody confirm that?

in 1.1 there used to be:

  1. alut.dll
    ogg.dll
    OgreAL.dll
    OpenAL32.dll
    vorbis.dll
    vorbisenc.dll
    vorbisfile.dll
    wrap_oal.dll
    [/list:u]
    in 1.2 RC 2 it's

    1. ogg.dll
      vorbis.dll
      vorbisenc.dll
      vorbisfile.dll
      [/list:u]

      side-note: thanks for the great work, andy.

      greets,
      phil

andy

14-07-2008 10:46:32

I've compiled the OgreAL against the static libraries to reduce the number of external dll's required....

Now the current OgreAL demo is broken, however the library is ok and I'll fix the demo in the next release...

Andy

v3ss0n

18-07-2008 15:37:03

Hi , I am trying to build latest python-ogre as according to Wiki - on Both Ubuntu and Gentoo unfortunately it failing at step 5, very close .

Details here :

http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=7671

EvanPMeth

02-08-2008 19:43:32

When doing a fresh install of RC2 the cegui demos do not run it gives me this Error:

python.exe -Entry Point Not Found

The Procedure entry point ??0Exception@CEGUI@@QAE@ABVString@1@@Z Could not be located in the dynamic link library CEGUIBase.dll



Message File Name Line Position
Traceback Node
<module> C:\PythonOgre\demos\cegui\Demo_CEGUI_Gui.py 380 Node
go C:\Python25\Lib\site-packages\ogre\renderer\OGRE\sf_OIS.py 61 Node
_setUp C:\Python25\Lib\site-packages\ogre\renderer\OGRE\sf_OIS.py 102 Node
_createScene C:\PythonOgre\demos\cegui\Demo_CEGUI_Gui.py 94 Node
RuntimeError: DynamicModule::DynamicModule - Failed to load module 'CEGUIExpatParser': The specified procedure could not be found. Node

andy

03-08-2008 01:40:36

Unfortunately from your message I can't tell if it's a mismatch with CEGUIBase.dll or a problem with loading the Parser.. So lets try something that was implemented very early on for the Ogre library to ensure we are getting the right dll's..

Edit: c:\python25\Lib\site-packages\ogre\gui\CEGUI\__init__.py
Replace:
if sys.platform == 'win32':
os.environ['PATH'] += ';' + __path__[0]
With:
if sys.platform == 'win32':
os.environ['PATH'] = __path__[0] +';' + os.environ['PATH']

and try again..

Andy

EvanPMeth

03-08-2008 20:33:18

Yep that seemed to fix it :D , Thanks andy