> hi all,
> i am kinda new to openSG stuff. I am coming from a quite intense month of
> OpenGL develop so no i am doing some exp on this new library.
>
> Here is my problem: I want to override the usual phong lighting stuff,
> with
> my own shadowing tecnique (based on spherical harmonics theory). I have my
>
> good triangled mesh with her material stuff (ambient, diffuse and
> specular).
> Now in my opinion the best way is calculating all the lighing thing per
> vertex, altering the vertex color property. ---> how can i do it? Leaving
>
> the problem of specular reflections, I understand that the "base" color of
>
> the mesh should be the one of the diffuse material. Ambient can be 0 since
>
> i'll radiosity it before any rendering loop.
> I tried to set the per vertex property in this way:
>
> void rhrecursewrite(NodePtr root)
> {
> //////////////////////////////////////////////////////
> ////// RH! PROVA DI OUTPUT!!!
> /// *********************************** ///////////
> static int level=0;
> for (int cicci=0; cicci<=root->getNChildren();++cicci)
> {
>
> if (root->getCore()->getType().isDerivedFrom(
> Geometry::getClassType()))
> {
> GeometryPtr geo=GeometryPtr::dcast(root->getCore());
> for (TriangleIterator it= geo->beginTriangles();
> it!=geo->endTriangles() ; ++it)
> {
>
> Color3f giallo;
> giallo.setValuesRGB(1.0,1.0,0.0);
>
> GeoColorsPtr geogiallo;
>
> // HERE I'D LIKE TO SET UP MY CUSTON COLOR
> // FOR EACH VERTEX OF THE MESH.
> //beginEditCP(geogiallo , Geometry::ColorsFieldMask);
> geogiallo->push_back(giallo);
> // endEditCP (geogiallo, Geometry::ColorsFieldMask);
> }
> }
> if ( cicci < root->getNChildren() )
> rhrecursewrite(root->getChild(cicci));
> }
> }
>
> Once i have the mesh triangles intercepted by the iterator how can i set
> the
> color array (with the right indexing). The code i just posted hangs in
> the
> geogiallo->push_back instruction...
>
> Hope anyone can help me!!!!
>
> bye the Gunslinger
Hi,
sounds interesting. I attached some code hope it helps.
Andreas
GeoPositions3fPtr points = GeoPositions3fPtr::dcast(geo->getPositions());
GeoColors3fPtr colors = GeoColors3f::create();
Color3f c;
c.setValuesRGB(1.0, 0.0, 0.0);
for(int i=0;i<points->getSize();++i)
colors->addValue(c);
beginEditCP(geo);
// multi-indexed? use the same index as for points
if(geo->getIndexMapping().size() > 0)
{
Int16 pi = geo->calcMappingIndex(Geometry::MapPosition);
geo->getIndexMapping()[pi] |= Geometry::MapColor;
}
geo->setColors(colors);
endEditCP(geo);
--
+++ GMX - die erste Adresse für Mail, Message, More +++
Bis 31.1.: TopMail + Digicam für nur 29 EUR http://www.gmx.net/topmail
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users