Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
Ok, I'm testing again all examples. = summary = * ode stuff was corrected, except ode-join and ode-mass that might need some review. * gui stuff now doesn't give any warning * particle-1 needs review * pudding stuff works * pudding-meter-1 needs to correct its import * pudding-svgelements-1 is failing to find elementtree library * raypicking-1,raypicking-3, ode-collision-7-hit_func-3-contacts: laser class is failing to render. * sound-1 doesn't work; seems to be a error introduced recently in the svn. * test keeps failing: no cal3dbody === ode-collision-7-hit_func-3-contacts.py - seems to work, but mouse click don't work (no laser drawed, no effect) Python2.5 says: Exception exceptions.TypeError: unsupported operand type(s) for *: 'NoneType' and 'float' in 'soya._soya.PythonCoordSyst._render' ignored ode-join.py - acts odd; (this time I've seen something less odd) ode-mass.py - exits without doing nothing particle-1.py - works, but python says: (the animation only happens one or two secons; it is ok, or it should be a sustained rate of particles?) /usr/lib/python2.5/site-packages/soya/particle.py:22: DeprecationWarning: The content of this module is now in the soya module. warnings.warn(The content of this module is now in the soya module., DeprecationWarning) pudding-meter-1.py - fails to import pudding.ext.meter (it works perfectly when I corrected the import) Traceback (most recent call last): File pudding-meter-1.py, line 10, in module import pudding.ext.meter ImportError: No module named pudding.ext.meter pudding-svgelements-1.py - fails to import svgelements. It says that i don't have python-elementtree, but Debian's aptitude says it's installed. /usr/lib/python2.5/site-packages/soya/pudding/ext/svgelements.py:25: DeprecationWarning: raising a string exception is deprecated raise You need elementtree from http://effbot.org/zone/element-index.htm; Traceback (most recent call last): File pudding-svgelements-1.py, line 8, in module import soya.pudding.ext.svgelements as svgelements File /usr/lib/python2.5/site-packages/soya/pudding/ext/svgelements.py, line 25, in module raise You need elementtree from http://effbot.org/zone/element-index.htm; You need elementtree from http://effbot.org/zone/element-index.htm raypicking-1, raypicking-3.py -- the laser doesn't render: Exception exceptions.TypeError: unsupported operand type(s) for *: 'NoneType' and 'float' in 'soya._soya.PythonCoordSyst._render' ignored sound-1.py - doesn't work. sound-1.py:80: DeprecationWarning: the sets module is deprecated cube = NoisyCube(scene, cube.Cube().to_model()) AL_INVALID_ENUM Traceback (most recent call last): File sound-1.py, line 102, in module soya.MainLoop(scene).main_loop() File main_loop.pyx, line 181, in soya._soya.MainLoop.main_loop File main_loop.pyx, line 272, in soya._soya.MainLoop.advance_time File world.pyx, line 584, in soya._soya._World.advance_time File sound-1.py, line 68, in advance_time soya.check_al_error() File sound.pyx, line 38, in soya._soya.check_al_error soya._soya.ALError: AL_INVALID_ENUM test.py - fails, no atribute cal3dbody ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
I finally solved my configuration issue and have been able to test All the patches On 11 janv. 2010, at 18:41, deavid wrote: GUI stuff works, [with deprecation warnings] fixed ODE collision 7th demonstration fails when it inits: fixed ode-join.py -- seems to be acting odd. I agree : added to the tracker ode-mass.py -- doesn't seem to do anything (it closes inmediately the window) I agree : ticket added to the tracker particle-1.py -- seems to work (not at all, though), but says: /usr/lib/python2.5/site-packages/soya/particle.py:22: DeprecationWarning: The content of this module is now in the soya module. warnings.warn(The content of this module is now in the soya module., DeprecationWarning) Ticket added to the tracker. The tutorial important and comment not some rewriting as the particle stuff moved into the main soya module. You also say that part of the tutorial are broken. Can you be more specific (The best would be adding a test case) Pudding stuff won't work: Fixed raypicking-1.py and raypicking3.py -- They fail inside the laser class with this error Fixed and laser won't appear. Still to be fixed. Point to point laser doesn't appear but point to infinity laser works. test.py -- fails with the following message: Traceback (most recent call last): File test.py, line 40, in module class InterpolatingBody(soya.Cal3dBody): AttributeError: 'module' object has no attribute 'Cal3dBody' * Soya3D * Quit... Not fixed. All those fixes have been pushed in the main svn repo. I also set up an mercurial mirror here : http://bitbucket.org/marmoute/soya-mirror/ -- marmoute ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
Pierre, after compiling your patched version of soya, i tried the unittests, the log follows: === deavid:~/git/soya/soya/test$ ls dataunittest_geom.py unittest_ode_body.py unittest_render.py unittest_categories.py unittest_gravity.py unittest_ode_geom.py unittest_task.py unittest_events.py unittest_init.py unittest_ode_gravity.py unittest_time.py deavid:~/git/soya/soya/test$ python unittest_categories.py ... -- Ran 7 tests in 3.245s OK deavid:~/git/soya/soya/test$ python unittest_events.py E == ERROR: test_queue_event (__main__.EventsTC) -- Traceback (most recent call last): File unittest_events.py, line 68, in test_queue_event self.assertIn(DOWN_LEFT, self.main_loop.raw_events) AttributeError: 'EventsTC' object has no attribute 'assertIn' -- Ran 9 tests in 1.230s FAILED (errors=1) deavid:~/git/soya/soya/test$ python unittest_geom.py .. -- Ran 2 tests in 0.003s OK deavid:~/git/soya/soya/test$ python unittest_gravity.py .. -- Ran 2 tests in 0.003s OK deavid:~/git/soya/soya/test$ python unittest_init.py -- Ran 4 tests in 1.413s OK deavid:~/git/soya/soya/test$ python unittest_ode_body.py -- Ran 8 tests in 2.815s OK deavid:~/git/soya/soya/test$ python unittest_ode_geom.py .. -- Ran 2 tests in 0.002s OK deavid:~/git/soya/soya/test$ python unittest_ode_gravity.py .. -- Ran 2 tests in 0.003s OK deavid:~/git/soya/soya/test$ python unittest_render.py FF == FAIL: test_render_back (__main__.ScreenShotTC) -- Traceback (most recent call last): File unittest_render.py, line 57, in test_render_back self.assertEquals(screenshot.getpixel((0,0)),(255, 0, 0)) AssertionError: (0, 0, 0) != (255, 0, 0) == FAIL: test_render_front (__main__.ScreenShotTC) -- Traceback (most recent call last): File unittest_render.py, line 44, in test_render_front self.assertEquals(screenshot.getpixel((0,0)),(255, 0, 0)) AssertionError: (0, 0, 0) != (255, 0, 0) -- Ran 2 tests in 1.367s FAILED (failures=2) deavid:~/git/soya/soya/test$ python unittest_task.py .. -- Ran 2 tests in 0.699s OK deavid:~/git/soya/soya/test$ python unittest_time.py ... -- Ran 3 tests in 1.071s OK ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
Trying again all the tutorials, I have seen that all of them are working, with this exceptions: GUI stuff works, but says this: /usr/lib/python2.5/site-packages/soya/gui/widgets.py:276: DeprecationWarning: process_event is deprecated, use MainLoop's events attributs instead self.process_event(soya.process_event()) ODE collision 7th demonstration fails when it inits: deavid:~/git/soya/soya/tutorial$ python ode-collision-7-hit_func-3-contacts.py = Control = arrows: move espace: up left: down mouse: look clic: firing laser right: clic for stronger single shot return: center the camera when you're lost escape: quit * Soya * Using 8 bits stencil buffer * Soya * version 0.14 * Using OpenGL 1.5.8 NVIDIA 96.43.13 * - renderer : GeForce4 MX 440/AGP/SSE2 * - vendor : NVIDIA Corporation * - maximum number of lights: 8 * - maximum number of clip planes : 6 * - maximum number of texture units : 2 * - maximum texture size: 2048 pixels Traceback (most recent call last): File ode-collision-7-hit_func-3-contacts.py, line 38, in module soya.MAIN_LOOP.events AttributeError: 'NoneType' object has no attribute 'events' * Soya3D * Quit... ode-join.py -- seems to be acting odd. ode-mass.py -- doesn't seem to do anything (it closes inmediately the window) deavid:~/git/soya/soya/tutorial$ python ode-mass.py * Soya * Using 8 bits stencil buffer * Soya * version 0.14 * Using OpenGL 1.5.8 NVIDIA 96.43.13 * - renderer : GeForce4 MX 440/AGP/SSE2 * - vendor : NVIDIA Corporation * - maximum number of lights: 8 * - maximum number of clip planes : 6 * - maximum number of texture units : 2 * - maximum texture size: 2048 pixels Mass: 50.0 Center of Gravity: (0.0, 5.400953674316, -9.0) Inertia Tensor: ((511.0, 512.0, 513.0), (512.0, 522.0, 523.0), (513.0, 523.0, 533.0)) * Soya3D * Quit... particle-1.py -- seems to work (not at all, though), but says: /usr/lib/python2.5/site-packages/soya/particle.py:22: DeprecationWarning: The content of this module is now in the soya module. warnings.warn(The content of this module is now in the soya module., DeprecationWarning) Pudding stuff won't work: deavid:~/git/soya/soya/tutorial$ python pudding-console-2.py * Soya * Using 8 bits stencil buffer * Soya * version 0.14 * Using OpenGL 1.5.8 NVIDIA 96.43.13 * - renderer : GeForce4 MX 440/AGP/SSE2 * - vendor : NVIDIA Corporation * - maximum number of lights: 8 * - maximum number of clip planes : 6 * - maximum number of texture units : 2 * - maximum texture size: 2048 pixels * Soya Pudding * Version: 0.1-0 Traceback (most recent call last): File pudding-console-2.py, line 52, in module pudding.main_loop.MainLoop(scene).main_loop() File /usr/lib/python2.5/site-packages/soya/pudding/main_loop.py, line 25, in __init__ self.events = [] AttributeError: attribute 'events' of 'soya._soya.MainLoop' objects is not writable * Soya3D * Quit... raypicking-1.py and raypicking3.py -- They fail inside the laser class with this error, and laser won't appear. Exception exceptions.UnboundLocalError: local variable 'direct' referenced before assignment in 'soya._soya.PythonCoordSyst._render' ignored test.py -- fails with the following message: Traceback (most recent call last): File test.py, line 40, in module class InterpolatingBody(soya.Cal3dBody): AttributeError: 'module' object has no attribute 'Cal3dBody' * Soya3D * Quit... The rest of tutorials are working with the last changes. ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
I tested again Soya against unitests and againsts tutorials, using a older pyrex 0.9.7.2, and the effects are exactly the same. So, in case that there is a difference between pyrex versions, these would be prior to 0.9.7.2; soya, when compiled using pyrex 0.9.7.2 and 0.9.8.5 behaves exactly in the same way. Exactly the same errors. ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
I've created a new GIT repo to handle this better: http://github.com/deavid/soyamirror I'll use this to share changes to others; if anyone is interested. master - will be the clone of the soya's SVN dev-deavid - my local experimental changes. I have extracted from there a patch series of 10 patches. I'm attaching them in .tar.gz patches.tar.gz Description: GNU Zip compressed data ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
Ok, I found the _real_ problem behind terrain collisions. The problem is, that we're creating a new classgeom*before* ode gets inited. Because of this, when ode inits it rewrites the callbacks for collisions, so our changes have no effect. I'm testing with a special init function (called just after soya starts ODE) : cdef int dTerrainClass # global! cdef void geomterrain_init(): cdef dGeomClass dTerrainGeomClass dTerrainGeomClass.bytes = 0 dTerrainGeomClass.collider = _TerrainGetColliderFn dTerrainGeomClass.aabb = _TerrainGetAABB dTerrainGeomClass.aabb_test = NULL # Need to write this function dTerrainGeomClass.dtor = NULL dTerrainClass = dCreateGeomClass(dTerrainGeomClass) #dSetColliderOverride(dTerrainClass,0, _TerrainCollide) print Created new terrain class: %d % dTerrainClass The problem here is, that my idea works, but pyrex creates wrong C code. After patching the C code it works. Pyrex thinks that dTerrainClass inside the function is a Python Local variable. I've no idea about how to tell pyrex about a global C variable. Anyone knows how Pyrex differences between undeclared python objects, and global C variables? in the same file (geom-terrain.pyx) is a function that reads the global cdef int dTerrainClass and Pyrex treats it as a global variable. I don't know why pyrex behaves differently for my function (is the print call??) ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
Ok, there is a Pyrex global directive to tell the compiler about the global :-) Just wrote a patch that works, i'm attaching it. 0007-Corrections-to-ode-terrain-collisions.patch Description: Binary data ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
On Thu, Dec 17, 2009 at 12:01:11PM +0100, deavid wrote: Hi, I'm working very hard to have Soya compiled using latest Pyrex 0.9.8.5 Thank you very much At least, these patches will make soya compilable with that version of pyrex, but it is not perfect. That's a great start ODE collisions work, when using single precision libraries of ODE. But it fails in the following tutorials: ** python tutorial/ode-collision-4-pushable.py -- FAILS -- returns: Exception exceptions.TypeError: 'soya._soya.Contact' object does not support item assignment in 'soya._soya.collide_callback' ignored This work fine with older pyrex version. I hope ** python tutorial/ode-collision-7-hit_func-3-contacts.py -- FAILS -- returns: File tutorial/ode-collision-7-hit_func-3-contacts.py, line 38, in module soya.MAIN_LOOP.events AttributeError: 'NoneType' object has no attribute 'events' Hum strange. I'll try to investigate this to the end of the week. It's strange to have code running without MAIN_LOOP defined ** python tutorial/ode-collision-8-terrain.py --FAILS-- balls pass through terrain. It should be the same item assignement issue. ** python tutorial/ode-collision-9-box.py --FALLS-- objects pass through floor. and an error in shell: Exception exceptions.TypeError: 'soya._soya.Contact' object does not support item assignment in 'soya._soya.collide_callback' ignored idem ** the rest of examples seems to be working sweet. (but we really need a serious test suite.) I will work to have these working too. Thank you very much again. -- Pierre-Yves ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
It would be very helpful if someone could apply the patches (at least the first one) and see what happens. I tried this on 3 machines (2 Debian, 1 Ubuntu) and the only difference is in the Ubuntu box, where i don't have a single-precision version of ODE's libraries. ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
Finally i'have the last patch to make ode collisions with terrains and non-pushables working. I'm attaching the patch. I hope this will be enough to have soya shipped some day compiled with pyrex 0.9.8.x terrain-collisions.patch Description: Binary data ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
deavid wrote: ODE collisions work, when using single precision libraries of ODE. But it fails in the following tutorials: I don't know whether it's related to your problem, but I've found that trouble can arise if you're not using the same version of ODE that the code is expecting. Annoyingly, ODE always installs itself under the same name by default, despite there being important differences between versions. -- Greg ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user
Re: [Soya-user] Patches to Soya3D that allow compiling with latest Pyrex
2009/12/18 Greg Ewing greg.ew...@canterbury.ac.nz: deavid wrote: ODE collisions work, when using single precision libraries of ODE. But it fails in the following tutorials: I don't know whether it's related to your problem, but I've found that trouble can arise if you're not using the same version of ODE that the code is expecting. Annoyingly, ODE always installs itself under the same name by default, despite there being important differences between versions. -- I think it's not a version problem, but I'll check anyway; it's strange that ode terrain collisions always works when compiled with pyrex 0.9.6.8 and never with 0.9.7.2 and later (different machines produce same result). Pierre, take in account that the last patch submitted DOES NOT solve the problem at all. It is using a function which is not in the ODE's documentation to make things work, and only for Terrain VS Spheres. (the tutorial will work) With a little change it is possible to make it work with any geom, but the problem is still there. I have to check if the C file generated by Pyrex is really placing the function pointer in the struct, because ODE is acting like reading null from that variable. anyway, there are several parts of soya that I wish to comment about. ___ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user