Front / Back materials

New Message Reply Date view Thread view Subject view Author view

GRAUX Ludovic (LUDOVIC.GRAUX++at++siege.aerospatiale.fr)
Wed, 29 May 1996 11:02:08 +0200


      Hi pfMasters*,

     look at this : i specify a front and a back material, without
     forgetting to disable the cullface mode,
     and performer seems to ignore my back material, and apply the
     front material to both the sides of my square.
     could you have a look on my piece of program.

     help

     Mike

     -------------------------------------------------------------
     #include <Performer/pr/pfGeoSet.h>
     #include <Performer/pr/pfGeoState.h>
     #include <Performer/pr/pfMaterial.h>
     #include <Performer/pf/pfNode.h>
     #include <Performer/pf/pfLightSource.h>
     #include <Performer/pfdu.h>

     pfNode *CreateCarre(void);

     pfNode*
     CreateTruc(void)
     <
       static void *arena = pfGetSharedArena();
       
     //Les etoiles
       pfNode *Starsf = pfdLoadFile("/usr/share/Performer/data/3010.star");
       pfMatrix mats;
       mats.makeScale(100.0f, 100.0f, 100.0f);
       pfSCS *scsStars = new pfSCS(mats);
       scsStars->addChild(Starsf);
        
       pfNode *Stars = scsStars;
       pfSphere sph;
       Stars->getBound(&sph);
       sph.radius /= 10;
       Stars->setBound(&sph, PFBOUND_STATIC);
       
     // Cree la source de lumiere, et l'attache a la scene
         pfLightSource *Lsoleil = new pfLightSource;
         Lsoleil->setColor(PFLT_DIFFUSE, 1.0f, 1.0f, 0.8f);
         Lsoleil->setColor(PFLT_AMBIENT, 0.0f, 0.0f, 0.0f);
         Lsoleil->setPos(-90.0f, -50.0f, 30.0f, 0.0f);
         Lsoleil->on(); // And The Light Was.
       

       pfNode *carre = CreateCarre();

       pfGroup *ret = new pfGroup;
       ret->addChild(Stars);
       ret->addChild(Lsoleil);
       ret->addChild(carre);
         
       return ret;
>

     pfNode*
     CreateCarre(void)
     <
       static void *arena = pfGetSharedArena();

       pfGeoSet *gset1 = pfdNewCarre(arena);
        
       pfGeoState *gstate1 = new(arena) pfGeoState;
        
       pfMaterial *backmtl = new(arena) pfMaterial;
       backmtl->setColor(PFMTL_EMISSION, 0.0f, 1.0f, 1.0f);
       gstate1->setMode(PFSTATE_ENLIGHTING, PF_ON);
       gstate1->setAttr(PFSTATE_BACKMTL, backmtl);

       pfMaterial *frontmtl = new(arena) pfMaterial;
       frontmtl->setColor(PFMTL_DIFFUSE, 1.0f, 0.0f, 0.0f);
       gstate1->setAttr(PFSTATE_FRONTMTL, frontmtl);

       gstate1->setMode(PFSTATE_CULLFACE, PFCF_OFF);

       gset1->setGState(gstate1);

       pfGeode *geode1 = new pfGeode;
       geode1->addGSet(gset1);

       return geode1;
>
===================================List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer.html
            Submissions: info-performer++at++sgi.com
        Admin. requests: info-performer-request++at++sgi.com


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:52:55 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.