Collision entries with hollow objects? (Solved)


#1

Hello, I have a question, and well, I guess the title seems confusing but I do not have a better way to describe this situation I,m in, so here it goes, I want to create a field in which logic is continuously applied as long as you are in that field, to do this, I tired to create a box in blender 3d and applied “Polyset descend intangible” to it’s logic.

This would make it invisible but it would be seen by the panda3d’s event collisions (not pusher’s, thus letting you go through it), then applying a “##-again-###” styled accept command would make the logic repeat itself in the form of a collision entry along as contact was being made, thus accomplishing my goal right? well it seemed to have worked, but it only does so on the surfaces.

(to people not familiar to 3d modeling, that would the “shell” that forms the model as models are just hollow objects), when I entered into the box, the logic stops, so my question is, does panda3d have any tricks to address if a object is within another can still consider collision with each other and not just with their “shells” making contact?

I guess this can easily be solved with a ton of loop cuts on blender’s end making it a grid box, but before I try something like that I wonder if panda3d has a trick to solve this issue faster, sorry for the confusion but this is tricky to put into words, and thanks to those who are willing to help.


#2

Polygons are infinitely thin; you want to use collision volumes wherever possible. Setting “Box descend intangible” would create a solid box instead of a hollow box of four infinitely-thin polygons, which would make contact not just when you’re touching the edges, but also when you’re inside that box.

This does limit you to any shapes you can make out of the collision solids that Panda3D supports. Will you need to support arbitrary shapes? If you can make your volumes of a combination of spheres, that would be ideal.


#3

oh, okay so “Box descend intangible”? and no, the fields are simple, and nothing special, if I do need a shape other then a box, then I will use multiple to make up that shape, much thanks rdb for the trick, I will try it out now, thank you.

Edit: well, I tried your idea, and sadly it did not work, I assume that this must be done with panda3d’s own collision solids right? not shapes created from blender, hmm, oh, also I didn’t get what you meant by collision volumes, would you mind explaining more?

Edit 2: well I decided to show collisions (did not want to as it is taxing on my computer), and well it turned out your idea did work after all and I was wrong, sorry, but something was not right about the collision, when I enter it, the accept only plays once, and not continuously as I wanted it, do you have any ideas why?


#4

Okay, so I fallowed what you said all most to a T, using spheres like you said, and doing some thinking, I toke your trick of “Box descend intangible” and changed it to “Sphere descend intangible” thinking the first word meant the name of a collision solid, and luckily I was correct.

It turns out that the spheres work 100%, not a surprise since from what I read, collision spheres are the most developed, thus, the most compatible with all the situations, Collision Spheres are not my first choice for this, but hey, if it works, it works, so it is something I can get used to.

Putting them half way under the level itself will make a dome, so I guess I can’t really complain, anyway, thank you “rdb” for your help, without the crucial information you gave, I don’t think I would have be able to implement event fields into my game, and with that being said, this issue is now solved.


#5

I’m not sure why boxes aren’t working right for you. Are you using Panda 1.10.0? What are you colliding the box with? Is there a particular collision test between a box and another shape that isn’t implemented in Panda that you find missing?


#6

Uh, yeah, it’s strange, I,don’t really know, but the box would do what Polyset was doing and that is, when contract of it’s edges are made, it would work, but not inside, maybe because I stretched the box into a rectangle? Or maybe because I turned the geometry onto a cube after it was edited into a “L” shape?

Anyways, yes I,m using panda3d 1.10.0 according to the “PandaSystem.getVersionString()” command, my main character uses a collision sphere, so that was the collision solid that was colliding with the box.