hy do i get this error when picking a node

  File "/p/2awr/tools/pdk/core.py", line 171, in pick
    self.picker.traverse(self.root)
AssertionError: has_mat() && is_2d() at line 666 of panda/src/pgraph/transformState.I

^ why do i get this error when picking a node?

The assertion means someone asked for TransformState::get_mat3() for a TransformState that didn’t have a mat3.

Why that happened specifically, I can’t say. I’m not aware of anything in the collision system that would make this call. Can you get the C++ stack trace? You can do this by putting “assert-abort 1” in your Config.prc file, then running Python under gdb.

David

This happens in my editor. Basically i move around/scale/rename some nodes and then go to select some other node and bam! It goes off.

Assertion failed: has_mat() && is_2d() at line 666 of panda/src/pgraph/transformState.I

Program received signal SIGABRT, Aborted.
0x00007ffff6fe54b5 in raise () from /lib/libc.so.6
(gdb) bt
#0  0x00007ffff6fe54b5 in raise () from /lib/libc.so.6
#1  0x00007ffff6fe8f50 in abort () from /lib/libc.so.6
#2  0x00007ffff661faac in Notify::assert_failure(char const*, int, char const*) ()
   from /usr/lib64/panda3d/libp3dtoolconfig.so
#3  0x00007ffff46d386d in TransformState::get_mat3() const () from /usr/lib64/panda3d/libpanda.so
#4  0x00007ffff46c78f3 in TransformState::do_invert_compose(TransformState const*) const ()
   from /usr/lib64/panda3d/libpanda.so
#5  0x00007ffff46c8322 in TransformState::invert_compose(TransformState const*) const ()
   from /usr/lib64/panda3d/libpanda.so
#6  0x00007ffff45dbdaf in NodePath::get_transform(NodePath const&, Thread*) const () from /usr/lib64/panda3d/libpanda.so
#7  0x00007ffff498b2d9 in CollisionEntry::get_wrt_mat() const () from /usr/lib64/panda3d/libpanda.so
#8  0x00007ffff49723f7 in CollisionPolygon::test_intersection_from_ray(CollisionEntry const&) const ()
   from /usr/lib64/panda3d/libpanda.so
#9  0x00007ffff4939e11 in CollisionRay::test_intersection(CollisionEntry const&) const ()
   from /usr/lib64/panda3d/libpanda.so
#10 0x00007ffff4988201 in CollisionEntry::test_intersection(CollisionHandler*, CollisionTraverser const*) const ()
   from /usr/lib64/panda3d/libpanda.so
#11 0x00007ffff4959af6 in CollisionTraverser::compare_collider_to_geom(CollisionEntry&, Geom const*, GeometricBoundingVolume const*, GeometricBoundingVolume const*) () from /usr/lib64/panda3d/libpanda.so
#12 0x00007ffff495ad65 in CollisionTraverser::compare_collider_to_geom_node(CollisionEntry&, GeometricBoundingVolume const*, GeometricBoundingVolume const*, GeometricBoundingVolume const*) () from /usr/lib64/panda3d/libpanda.so
#13 0x00007ffff496847d in CollisionTraverser::r_traverse_single(CollisionLevelState<BitMask<unsigned long, 64> >&, unsigned long) () from /usr/lib64/panda3d/libpanda.so
#14 0x00007ffff49681d9 in CollisionTraverser::r_traverse_single(CollisionLevelState<BitMask<unsigned long, 64> >&, unsigned long) () from /usr/lib64/panda3d/libpanda.so
#15 0x00007ffff49681d9 in CollisionTraverser::r_traverse_single(CollisionLevelState<BitMask<unsigned long, 64> >&, unsigned long) () from /usr/lib64/panda3d/libpanda.so
#16 0x00007ffff49681d9 in CollisionTraverser::r_traverse_single(CollisionLevelState<BitMask<unsigned long, 64> >&, unsigned long) () from /usr/lib64/panda3d/libpanda.so
#17 0x00007ffff49681d9 in CollisionTraverser::r_traverse_single(CollisionLevelState<BitMask<unsigned long, 64> >&, unsigned long) () from /usr/lib64/panda3d/libpanda.so
#18 0x00007ffff496d36a in CollisionTraverser::traverse(NodePath const&) () from /usr/lib64/panda3d/libpanda.so
#19 0x00007ffff49afcde in ?? () from /usr/lib64/panda3d/libpanda.so
#20 0x00000000004a290d in PyEval_EvalFrameEx ()
#21 0x00000000004a40e0 in PyEval_EvalCodeEx ()
#22 0x000000000052be30 in ?? ()
#23 0x000000000041d6e7 in PyObject_Call ()
#24 0x00000000004a0f31 in PyEval_EvalFrameEx ()
#25 0x00000000004a2e47 in PyEval_EvalFrameEx ()
#26 0x00000000004a40e0 in PyEval_EvalCodeEx ()
#27 0x00000000004a245f in PyEval_EvalFrameEx ()
#28 0x00000000004a40e0 in PyEval_EvalCodeEx ()
#29 0x000000000052be30 in ?? ()
#30 0x000000000041d6e7 in PyObject_Call ()
#31 0x00000000004a0f31 in PyEval_EvalFrameEx ()
#32 0x00000000004a2e47 in PyEval_EvalFrameEx ()
#33 0x00000000004a40e0 in PyEval_EvalCodeEx ()
#34 0x00000000004a245f in PyEval_EvalFrameEx ()
#35 0x00000000004a2e47 in PyEval_EvalFrameEx ()
#36 0x00000000004a2e47 in PyEval_EvalFrameEx ()
#37 0x00000000004a40e0 in PyEval_EvalCodeEx ()
#38 0x000000000052be30 in ?? ()

Hmm, it appears that your CollisionRay is parented under a node with a scale to 0, or some such singularity. Is that possibly the case?

David

No i don’t think so. I don’t change the scaling on collision ray. How can I trouble shoot this further?

On a closer look, I think there is a legitimate Panda bug in there. I just checked in a fix to transformState.cxx. Is it possible for you to pick up this fix and try it out?

Thanks,
David

drwr, yes i think you fixed it. Can i ask what was wrong? I have not run into any problems like this since you committed.

panda3d.cvs.sourceforge.net/view … 76&r2=1.77