perfly behavior

New Message Reply Date view Thread view Subject view Author view

Richar Pitre (pitre++at++cae.ca)
Mon, 8 Apr 1996 22:52:27 -0400


         I have been trying to display colored quad using the material
associated with the graphic state (Onyx RealityEngine 2, Performer 2.0,
openGL). I have created this simple example which is loaded and displayed by
perfly

                pfMaterial *m1 = new pfMaterial;
                   pfMaterial *m2 = new pfMaterial;
                pfGeoSet *p1 = new pfGeoSet;
                pfGeoSet *p2 = new pfGeoSet;
                pfGeoState *gs1 = new pfGeoState;
                pfGeoState *gs2 = new pfGeoState;
                pfVec3 *coord1 = new pfVec3[4];
                pfVec3 *coord2 = new pfVec3[4];
                pfGeode *node = new pfGeode;

                // First quad
                coord1[0].set(0.0f,0.0f,0.0f);
                coord1[1].set(1.0f,0.0f,0.0f);
                coord1[2].set(1.0f,0.0f,1.0f);
                coord1[3].set(0.0f,0.0f,1.0f);
                p1->setPrimType(PFGS_QUADS);
                p1 ->setNumPrims(1);
                p1->setAttr(PFGS_COORD3,PFGS_PER_VERTEX,coord1,0);
                p1->setGState(gs1);

                // Second quad
                   coord2[0].set(2.0f,0.0f,0.0f);
                   coord2[1].set(3.0f,0.0f,0.0f);
                   coord2[2].set(3.0f,0.0f,1.0f);
                   coord2[3].set(2.0f,0.0f,1.0f);
                   p2->setPrimType(PFGS_QUADS);
                   p2 ->setNumPrims(1);
                   p2->setAttr(PFGS_COORD3,PFGS_PER_VERTEX,coord2,0);
                   p2->setGState(gs2);

                // First quad color: red
                   m1->setColor(PFMTL_DIFFUSE, 1.0f, 0.0f, 0.0f);

                // Second quad colour: green
                   m2->setColor(PFMTL_DIFFUSE, 0.0f, 1.0f, 0.0f);

                // Use material colour
                m1->setColorMode(PFMTL_FRONT,PFMTL_CMODE_OFF);
                   m2->setColorMode(PFMTL_FRONT,PFMTL_CMODE_OFF);

                   gs1->setAttr(PFSTATE_FRONTMTL,m1);
                   gs2->setAttr(PFSTATE_FRONTMTL,m2);

                   node->addGSet(p1);
                   node->addGSet(p2);

                return node;

Both quad come out white colored. The manual specifies that by setting the
color mode to PFMTL_CMODE_OFF the colour as specifyed by the material will be
used. If I don't use this setting then both quads are red( the first colour
encountered). Is there something specific that perfly do to disable this option
?

        Light points (using pfLPointState) do not work properly in Filled style
mode, it looks like the geometry is not recognize as being light points. It
work ok in all other style( except scribbed). How to fix ??

Thanks

-- 
Richard Pitre
CAE Electonics Ltd.
C.P. 1800, Saint-Laurent
Quebec, Canada H4L 4X4
Tel: (514) 341-6780 ext 3603
Fax: (514) 340-5496
Email: pitre++at++cae.ca

Bonjour,

Je travaille à la conversion des bases de données MAXVUE à Performer. J'ai pu faire toute la géometrie, la texture, les LOD, etc ... Mais il y un petit problème que je n'arrive pas à résoudre.

Comment afficher différentes couleurs sur différents polygon en utilisant la couleur du matériel associé au geoset.Voici un petit exemple que j'ai essayé

pfMaterial *m1 = new pfMaterial; pfMaterial *m2 = new pfMaterial; pfGeoSet *p1 = new pfGeoSet; pfGeoSet *p2 = new pfGeoSet; pfGeoState *gs1 = new pfGeoState; pfGeoState *gs2 = new pfGeoState; pfVec3 *coord1 = new pfVec3[4]; pfVec3 *coord2 = new pfVec3[4]; pfGeode *node = new pfGeode;

// First quad coord1[0].set(0.0f,0.0f,0.0f); coord1[1].set(1.0f,0.0f,0.0f); coord1[2].set(1.0f,0.0f,1.0f); coord1[3].set(0.0f,0.0f,1.0f); p1->setPrimType(PFGS_QUADS); p1 ->setNumPrims(1); p1->setAttr(PFGS_COORD3,PFGS_PER_VERTEX,coord1,0); p1->setGState(gs1);

// Second quad coord2[0].set(2.0f,0.0f,0.0f); coord2[1].set(3.0f,0.0f,0.0f); coord2[2].set(3.0f,0.0f,1.0f); coord2[3].set(2.0f,0.0f,1.0f); p2->setPrimType(PFGS_QUADS); p2 ->setNumPrims(1); p2->setAttr(PFGS_COORD3,PFGS_PER_VERTEX,coord2,0); p2->setGState(gs2);

// First quad color: red m1->setColor(PFMTL_DIFFUSE, 1.0f, 0.0f, 0.0f);

// Second quad colour: green m2->setColor(PFMTL_DIFFUSE, 0.0f, 1.0f, 0.0f);

// Use material colour m1->setColorMode(PFMTL_FRONT,PFMTL_CMODE_OFF); m2->setColorMode(PFMTL_FRONT,PFMTL_CMODE_OFF);

gs1->setAttr(PFSTATE_FRONTMTL,m1); gs2->setAttr(PFSTATE_FRONTMTL,m2);

node->addGSet(p1); node->addGSet(p2);

return node;

D'après le manuel, m2->setColorMode(PFMTL_FRONT,PFMTL_CMODE_OFF) devrait forcer l'utilisation de la couleur tel que décrite dans le matériel mais j'obtiens deux polygons de même couleur blanche. Si j'enlève cette commande j'obtiens deux polygons de couleurs rouges( le premier matériel rencontré).

Salut

-- 
Richard Pitre
CAE Electonics Ltd.
C.P. 1800, Saint-Laurent
Quebec, Canada H4L 4X4
Tel: (514) 341-6780 ext 3603
Fax: (514) 340-5496
Email: pitre++at++cae.ca

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:41 PDT

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