Looking for Bugs


03-02-2008 08:57:59

As I might have time over the New Year break (Chinese/Lunar in case you are confused) to build a new Windows binary release I want to ensure that there aren't any outstanding bugs that need to be resolved.

So -- if you know of a problem in any of the library wrappers (or Demos as I'll try and clean them up as well) please let me know



03-02-2008 10:49:21

As you might know, I have some problems with NxOgre:
-The quaternion multiplicatioon bug. This bug doesn´t semm to exist in the C++ Version of Nxogre. Is it possible to resolve this bug?
-CharacterMovementVectorController: You have to derive from this class if you want to use character´s full potential. But it is not possible to derive from it as it uses an Pointer to return the calculated value. Can you think of any workaround?
-Class Raycaster has a property mReport. You have to access it for detailed hitreporting, but it seems like you aren´t allowed to access it in PythonOgre.
This seems like a solveable bug.

This errors exist all with the 0.9 version, but i think hey should be solved as many people out there have to work with a stable version of NxOgre.
This leads me to my request to you. Could you wrap both NxOgre versions in this release? This would be very helpful.


03-02-2008 11:03:05

Buffered input

Hi, this problem might be just on my system(Linux), or due to my inherent silliness, but I'm still unable to get buffered input to stop crashing. I've given it a few attempts, but now I've resorted to using unbuffered with booleans to track key state.

What's going on is that the application starts running, and when I press a key the application crashes at the keyboard.capture() stage. The keyPressed method does get called once however. Returning either False or True from keyPressed does not seem to have any effect, is there some parent method I need to call?

SiWi has already provided some advice, but after adding an "if statement" to prevent keyboard.capture() being called when it's None, that statement still gets called and my app crashes.

I would be very grateful if someone could provide a bufferedinput code sample so I can confirm the source of the problem.

To double-check, the steps I'm using for BufferedInput are
1. create input system
2. create input object keyboard
3. keyboard.setEventCallback(my listener)
4. keyboard.setBuffered(True)
5. keyboard.capture()

Happy Lunar New Year to everyone, and thanks once again for Python Ogre to all the devs.


03-02-2008 11:31:32

Sure thing - Heres a big old list of tracebacks!! (just what you wanted to see I'm sure..)

This is all using the latest snapshot build that was put out. Much of this I'm sure you already know about


ogre.PixelUtil.unpackColour(pix,destPb.format,address)Boost.Python.ArgumentError: Python argument types in
PixelUtil.unpackColour(ColourValue, PixelFormat, int)
did not match C++ signature:
unpackColour(unsigned int r, unsigned int g, unsigned int b, unsigned int a, enum Ogre::PixelFormat pf, void const * src)
unpackColour(unsigned int r, unsigned int g, unsigned int b, unsigned int a, enum Ogre::PixelFormat pf, void const * src)
unpackColour(class Ogre::ColourValue * colour, enum Ogre::PixelFormat pf, void const * src)



OGRE EXCEPTION(5:): Cannot find animation with name NewTrack in SceneManager::getAnimation at ..\src\OgreSceneManager.cpp (line 2978)



## <__main__.FilePtr object at 0x01CD2F60>16306376
Traceback (most recent call last):
File "C:\PythonOgre\demos\ogre\tests\Test_Corners.py", line 88, in <module>
File "C:\Python25\lib\site-packages\ogre\renderer\OGRE\sf_OIS.py", line 60, in go
if not self._setUp():
File "C:\Python25\lib\site-packages\ogre\renderer\OGRE\sf_OIS.py", line 101, in _setUp
File "C:\PythonOgre\demos\ogre\tests\Test_Corners.py", line 38, in _createScene
dataptr = ogre.MemoryDataStream ( fp )
TypeError: No registered converter was able to produce a C++ rvalue of type unsigned int from this Python object of type NoneType



Needs the new import statement at the top:

import ogre.renderer.OGRE as ogre



File "C:\PythonOgre\demos\ogre\tests\Test_ManualMeshes.py", line 145, in _createScene
File "C:\PythonOgre\demos\ogre\tests\Test_ManualMeshes.py", line 197, in TestManual
ManuallyDefinedMesh("cubeMesh",vert_pos,vert_norm,faces ) #,colours)
File "C:\PythonOgre\demos\ogre\tests\Test_ManualMeshes.py", line 66, in __init__
pVertex.setFloat(i, POSITION_ELEMENT, vx, vy, vz)
AttributeError: 'void *' object has no attribute 'setFloat'



Traceback (most recent call last):
File "C:\PythonOgre\demos\ogre\tests\Test_RenderQueue.py", line 39, in <module>
File "C:\Python25\lib\site-packages\ogre\renderer\OGRE\sf_OIS.py", line 64, in go
TypeError: No registered converter was able to extract a C++ reference to type bool from this Python object of type bool



File "C:\PythonOgre\demos\ogre\tests\Test_Viewer.py", line 71, in <module>
File "C:\PythonOgre\demos\ogre\tests\Test_Viewer.py", line 46, in setUp
self.viewport = PlayerViewport(self.renderWindow, self.camera)
File "C:\PythonOgre\demos\ogre\tests\Test_Viewer.py", line 52, in __init__
self.viewport = renderWindow.addViewport(camera.getRealCamera())
AttributeError: PlayerCam instance has no attribute 'getRealCamera'



PlayerCam Camera(Name='PlayerCam', pos=Vector3(0, 0, 500), direction=Vector3(0, 0, -1),near=5, far=100000, FOVy=45, aspect=1.33333, , xoffset=0, yoffset=0, focalLength=1, NearFrustumPlane=Plane(normal=Vector3(0, 0, 0), d=0), FarFrustumPlane=Plane(normal=Vector3(0, 0, 0), d=0), LeftFrustumPlane=Plane(normal=Vector3(0, 0, 0), d=0), RightFrustumPlane=Plane(normal=Vector3(0, 0, 0), d=0), TopFrustumPlane=Plane(normal=Vector3(0, 0, 0), d=0), BottomFrustumPlane=Plane(normal=Vector3(0, 0, 0), d=0)) 0Traceback (most recent call last):
File "C:\PythonOgre\demos\ogre\tests\Test_ViewportCallback.py", line 66, in <module>
File "C:\Python25\lib\site-packages\ogre\renderer\OGRE\sf_OIS.py", line 64, in go
File "C:\PythonOgre\demos\ogre\tests\Test_ViewportCallback.py", line 26, in preViewportUpdate
print evt.RenderQueueInvocationSequenceName
AttributeError: 'RenderTargetViewportEvent' object has no attribute 'RenderQueueInvocationSequenceName'



Needs updates to media from the latest version
setCloudCover appears to be do nothing now!
Star field is not visible anymore



Ogre head is rather unwieldy now (ie: detached from the pointer, although still follows mouse movement)



CEGUI / Test1.py
indentation error in the demo, simple fix - works fine afterwards.

OGRE EXCEPTION(5:): Cannot locate a resource group called 'schemes' for resource 'WindowsLookSkin.scheme' in ResourceGroupManager::openResource at ..\src\OgreResourceGroupManager.cpp (line 544)

File "C:\PythonOgre\demos\GUI\Demo_QuickGUI01.py", line 147, in _createScene
self.mGUIManager = gui.GUIManager(self.renderWindow.getWidth(),self.renderWindow.getHeight())
Boost.Python.ArgumentError: Python argument types in
GUIManager.__init__(GUIManager, int, int)
did not match C++ signature:
__init__(struct _object *, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > name, class Ogre::Viewport * vp)

File "C:\PythonOgre\demos\GUI\Demo_SimpleGUI01.py", line 14, in <module>
import ogre.gui.SimpleGUI as gui
ImportError: No module named SimpleGUI


NXOGRE demos
Everything a bit SNAFU in here!, problems with the sampleframework and BetaGUI


File "C:\PythonOgre\demos\ode\tutorial1.py", line 3, in <module>
import ogre.physics.ODE as ode
File "C:\Python25\lib\site-packages\ogre\physics\ODE\__init__.py", line 1, in <module>
from _ode_ import *
ImportError: DLL load failed: The specified module could not be found.



Sound stops a second into the demo (dont think framelistener is updating the sound)



File "C:\PythonOgre\demos\ogreode\Demo_GranTurism.py", line 129, in frameStarted
self.world.setShowDebugObjects(not self.world.getShowDebugObjects())
AttributeError: 'World' object has no attribute 'setShowDebugObjects'

File "C:\PythonOgre\demos\ogreode\SimpleScenes.py", line 113, in preStep
File "C:\PythonOgre\demos\ogreode\SimpleScenes_Chain.py", line 101, in addForcesAndTorques
Boost.Python.ArgumentError: Python argument types in
Body.addForce(Body, int)
did not match C++ signature:
addForce(class OgreOde::Body {lvalue}, class Ogre::Vector3 force)

Well, you did ask ;)


05-02-2008 12:17:27

It would be good if ResourceManager.createOrRetrieve worked better.
Now I have to do
result = materialManager.createOrRetrieve(texture, group)
created = result.second
material = materialManager.getByName(texture)

(result.first does not work)
This would be nicer:
material, created = materialManager.createOrRetrieve(texture, group)
And maybe you could expose NxCreatePhysicsSDK so that PhysX could be used without NxOgre (for a server or something).
Ok, maybe that wouldn't be enough, but it would be a start.

edit: typo


05-02-2008 14:49:09

Wrong QuickGui Documentation:
Class Mouse Cursor only has the function getPosition().
In the Documentation there are getPixelPostiton() and getRelativePostiton().