Hello Maximilian, Maximilian Haupt wrote: > On Sat, May 22, 2010 at 1:24 AM, Carsten Neumann > <carsten_neum...@gmx.net> wrote: >> Maximilian Haupt wrote: >>> The billboard’s vertices are starting in the lower left corner with >>> (0,0) and grow to the right and top. Maybe the clipping algorithm is >>> only using the (0,0) point to determine the affected cameras/cluster >>> nodes. >> hm, what are you using to build the billboards? A Geometry below a >> Billboard? > > In this case, I create the Billboard functionality for myself. I have > a simple Geometry containing a GL_POLYGON (it is not a GL_QUAD because > I also want to be able to create planes with rounded corners). This > node is a direct child of the world and I update its transformation > the following way: > - Translation: I calculate a position very close to the user for > different reasons. > - Rotation: First, I extract the up and right vector from the user's > transformation matrix (model view matrix) and do some scaling stuff. > Then, I retrieve the field of the plane's geometry and update the > vertices based on the up and right vector.
ok. >>> This is a bad workaround and increases the number of triangles in the >>> scene. Is there a more straightforward solution? Maybe disabling >>> clipping on the billboards or something similar? >> well, if the problem is incorrect culling of billboards, I'd say the >> best solution is to fix that ;) ;) >> For that I'd appreciate it if you could provide some information how >> your billboards are built, i.e. which classes you use, how the relevant >> parts of the scenegraph look like. >> As a workaround and to confirm that the bounding volumes/culling are the >> problem you could just make the bounding volume of your billboard very >> large and mark it as static - you can also try to mark it as infinite, >> but I vaguely recall some problems with that a while back; >> see Volume::setStatic() Volume::setInfinity(). > > In case of setInfinity(), nothing changes and in case of setStatic(), > the plane completely disappears. before calling setStatic(), did you set the bounding volume of the node to something large? beginEditCP(node); BoxVolume& bvol = node->editVolume(); bvol.extendBy(Pnt3f( 1000.f, 1000.f, 1000.f)); bvol.extendBy(Pnt3f(-1000.f, -1000.f, -1000.f)); bvol.setStatic(); endEditCP(node); > I also changed the way the vertices are positioned: > OSG::beginEditCP(pos, OSG::GeoPositions3f::GeoPropDataFieldMask); > { > (*it) = OSG::Pnt3f(0,0,0); it++; > (*it) = OSG::Pnt3f(Width); it++; > (*it) = OSG::Pnt3f(Width+Height); it++; > (*it) = OSG::Pnt3f(Height); it++; > } > OSG::endEditCP(pos, OSG::GeoPositions3f::GeoPropDataFieldMask); > > and > > OSG::beginEditCP(pos, OSG::GeoPositions3f::GeoPropDataFieldMask); > { > (*it) = OSG::Pnt3f(-Width-Height); it++; > (*it) = OSG::Pnt3f( Width-Height); it++; > (*it) = OSG::Pnt3f( Width+Height); it++; > (*it) = OSG::Pnt3f(-Width+Height); it++; > } > OSG::endEditCP(pos, OSG::GeoPositions3f::GeoPropDataFieldMask); > > The clipping is different, but nevertheless he also clips the second version. hm, I'm wondering if for some reason the bounding volume is not invalidated when you edit the positions. Can you try inserting the following after changing the positions: beginEditCP(geo, Geometry::PositionsFieldMask); endEditCP(geo, Geometry::PositionsFieldMask); You may also want to enable bounding volume drawing: ract->setVolumeDrawing(true); where ract is the RenderAction you use (you have to do that in the render servers code though, the RenderAction is not a FieldContainer and therefore not automatically synced). > I think, I change the way of positioning and move them away from the > user and change the selection logic so that they are slected first, > even when they are not the first in front of the user. This Way I > should avoid the clipping problem. perhaps, but if you have incorrect bounding volumes on the geometry I'm not sure it will help. > But, maybe this way of updating the vertices is the problem and I > should really rotate them instead? > What do you think or do you have any other idea? Is it possible that your geometry is very close to the near clipping plane and gets clipped by the hardware instead of OpenSG? Cheers, Carsten ------------------------------------------------------------------------------ _______________________________________________ Opensg-users mailing list Opensg-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensg-users