Richar Pitre (pitre++at++cae.ca)
Mon, 8 Apr 1996 22:52:27 -0400
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
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:52:41 PDT