realXtend / tundra

realXtend Tundra SDK, a 3D virtual world application platform.
www.realxtend.org
Apache License 2.0
84 stars 70 forks source link

invalid scene node / geom / something data for math calcs with all scenes on some devices #589

Closed antont closed 11 years ago

antont commented 11 years ago

getting these on some linux boxes on all scenes, and never with any scenes on other similar boxes. both with nvidia drivers and without.

visual symptomps are e.g. empty scene or some objects showing, but as black

Assumption "m.IsColOrthogonal()" failed! in file /home/ubiuser/src/naali/src/Core/Math/Math/Quat.cpp, line 364! Assumption "m.HasUnitaryScale()" failed! in file /home/ubiuser/src/naali/src/Core/Math/Math/Quat.cpp, line 365! Assumption "oldLength > 0.f" failed! in file /home/ubiuser/src/naali/src/Core/Math/Math/Quat.cpp, line 359! Assumption "q.IsNormalized()" failed! in file /home/ubiuser/src/naali/src/Core/Math/Math/Matrix.inl, line 854! Assumption "float3x4::FromTRS(translate, rotate, scale).Equals(*this, 0.1f)" failed! in file /home/ubiuser/src/naali/src/Core/Math/Math/float3x4.cpp, line 1375!

as suggested, checked places that call this in the Tundra code -- these seemed like the relevant in OgreRenderingModule:

./Core/OgreRenderingModule/EC_Mesh.cpp: 220 : return float3x4::FromTRS(node->getPosition(), node->getOrientation(), node->getScale()); 239 : float3x4 tm = float3x4::FromTRS(node->_getDerivedPosition(), node->_getDerivedOrientation(), node->_getDerivedScale()); 1359 : float3x4 localToWorld = float3x4::FromTRS(node->_getDerivedPosition(), node->_getDerivedOrientation(), node->_getDerivedScale());

./Core/OgreRenderingModule/EC_Placeable.cpp: 815 : SetTransform(float3x4::FromTRS(pos, orientation, scale)); 874 : SetWorldTransform(float3x4::FromTRS(pos, orientation, scale));

./Core/OgreRenderingModule/OgreWorld.cpp: 229 : float3x4 localToWorld = float3x4::FromTRS(node->_getDerivedPosition(), node->_getDerivedOrientation(), node->_getDerivedScale());

juj commented 11 years ago

Can you output the data that comes out of node->_getDerivedPosition(), node->_getDerivedOrientation(), node->_getDerivedScale() on those systems?

antont commented 11 years ago

Below is a traceback, comes from sound listener, which has scale 0.

Got a hint from Jarkko, this can be due to locale -- finnish numeric local breaking txml reading. We confirm now still.. INDEED! Doing this helped, no warnings, and materials show \o/

LC_NUMERIC=C ./Tundra --file scenes/EntityMoveTest/scene.txml --server

without this got when system setting was: LC_NUMERIC=fi_FI.UTF-8

This is a duplicate of issue #473

#3  0x00007ffff2b791b2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#4  0x000000000054c03b in float3x4::Decompose (this=0x7fffffffce80, translate=..., rotate=..., scale=...)
    at /home/ubiuser/src/naali/src/Core/Math/Math/float3x4.cpp:1387
#5  0x000000000054e36a in float3x4::Decompose (this=0x7fffffffce80, translate=..., rotate=..., scale=...)
    at /home/ubiuser/src/naali/src/Core/Math/Math/float3x4.cpp:1371
#6  0x00007fffbe49d5c7 in EC_Placeable::WorldOrientation (this=<optimized out>)
    at /home/ubiuser/src/naali/src/Core/OgreRenderingModule/EC_Placeable.cpp:887
#7  0x00007fffbd79fab4 in EC_SoundListener::Update (this=0x26feaf0)
    at /home/ubiuser/src/naali/src/EntityComponents/EC_Sound/EC_SoundListener.cpp:51
#8  0x00007fffbd7a2faa in EC_SoundListener::qt_static_metacall (_o=0x26feaf0, _c=<optimized out>, _id=2, 
    _a=<optimized out>) at /home/ubiuser/src/naali/src/EntityComponents/EC_Sound/moc_EC_SoundListener.cxx:59
#9  0x00007ffff3cfe281 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#10 0x00000000004ba3c7 in FrameAPI::Updated (this=<optimized out>, _t1=1.45000001e-07)
    at /home/ubiuser/src/naali/src/Core/Framework/moc_FrameAPI.cxx:120
juj commented 11 years ago

I added a unit test to MathGeoLib to test that Quat::FromString works properly independent of the used locale. See here https://github.com/juj/MathGeoLib/commit/06a3d00ff1362150b88ad2cf45b600747c3791e1 The test passes successfully on my system. Perhaps the issue is somewhere in Tundra code?

antont commented 11 years ago

closing as is a duplicate, would be good to fix still