Re: [Algorithms] Fast Collision Queries - compression
Brought to you by:
vexxed72
From: Landa B. U. <una...@er...> - 2004-09-23 09:17:40
|
=3E =3E =3E =3E Then=2C the triangles - 3 nibbles each=2E =3E =3E Hm=2C that looks pretty nice=2E Yes=2C that aproach is nice=2C at the moment I=27m not storing the geomet= ry inside the tree so is not applicable for me at the moment=2E =3E =3E We=27re currently not that smart about leaves=2C but maybe we will tr= y =3E that=2E Anyway=2C I think our kdtree is interesting=2E It=27s sort = of a =3E cross between AABB and kdtree=2E Each node stores a splitting axis a= nd =3E *two* splitting plane offsets=2E So the child nodes are AABB=27s=2C = like a =3E normal kdtree=2C but they may overlap or be disjoint=2C depending on =3E what=27s inside=2E Unlike a conventional kdtree=2C there=27s no need= to =3E duplicate primitives that straddle a splitting plane (which made some= =3E pretty heavy overhead in our tests)=2E Unlike an AABB tree=2C we onl= y =3E store 2 extent bytes=2C not 6=2E So our node is 6 bytes=3A =3E =3E byte flags =3E byte offset=5B2=5D // child splitting plane offsets =3E int24 child1 // offsets to child1 data=2C if present I=27m ussig the same concept but ussing a K-dops=2C that means a cross be= twen a Kdop and a kd-tree =3A-) This is my node=3A struct Node =7B union =7B struct node =7B uint16 uFlags=3B uint8 rngNode =5B2=5D=3B uint16 idxChild=3B uint8 rngSplit=5B2=5D=3B =7Dnode=3B struct leaf =7B uint16 uFlags=3B uint8 rngNode=5B2=5D=3B uint16 idxFirst=3B uint16 idxLast=3B =7Dleaf=3B =7D=3B =7D=3B These is 8 bytes per node=2C on the uFlags variable I=27m only ussing 4 = bits to store the plane directions=2C I can select the amunt of directions from 3= to 13 so in fact I have 1 byte free at the moment=2E I=27m storing two ranges=2C one the external range ( rngNode ) that is va= lid for internal nodes and leafs and the other is the =22loose=22 range (rngSplit= ) thas is valid only for internal nodes=2C this leads to very acurate mesh representation=2E On the internal nodes idxChild stores the index to the lesf child and idxchid+1 is the right child=2E On the leafts I only store the first and the last index inside a face lis= t varing from 8 to 32 faces per leaf=2E Unai Landa=2E ----------------------------------------------------------------------- Juan acaba de ganar 40 euros vendiendo un jersey que no usaba gracias a Ebay=2C =BFcuanto quieres ganar t=FA=3F http=3A//www=2Eeresmas=2Ecom/banners/promo=2Ehtml=3Febay |