A problem generating Normals automatly

New Message Reply Date view Thread view Subject view Author view

Angel-Ventura Mendo Gomez (ventura++at++labri.u-bordeaux.fr)
Fri, 30 Apr 1999 15:08:32 +0200


Hello :

        I'm writing a performer loader and I want to generate de normals
automatly.

the source is :

extern pfNode *
pfdLoadFile_ventura (char *fileName)
{
  long vertexNumber=0;
  long trianglesNumber=0;
  long i,a,b,c;
  float *vertexList;
  pfNode *node=NULL;
  FILE *fildes=NULL;
  pfdGeom *prim=NULL;

  /* discard any lingering geometry in the builders */
  pfdResetBldrGeometry();
  pfdResetBldrState();
   
  /* Setting mode */
  pfdBldrStateMode(PFDGBLDR_AUTO_NORMALS, PF_ON
/*PFDGBLDR_NORMALS_GENERATE*//*PFDGBLDR_NORMALS_MISSING*/);
  pfdBldrMode(PFDBLDR_AUTO_NORMALS, PF_ON);

  /* openig filde*/
  if ((fildes=pfdOpenFile(fileName)) == NULL){
    pfNotify(PFNFY_WARN, PFNFY_MORE, "+ Error Opening: %s",
fileName);
    return NULL;
  }

  /* */
  fscanf(fildes,"%d",&vertexNumber);
  fscanf(fildes,"%d",&trianglesNumber);

  /* allocate primitive buffer */
  prim = pfdNewGeom(3);

  /* specify control data */
  prim->numVerts = 3;
  prim->primtype = PFGS_POLYS;
  prim->nbind = PFGS_PER_VERTEX;
  prim->cbind = PFGS_OFF;
  prim->tbind = PFGS_OFF;

  vertexList=(float *)malloc(sizeof(float)*3*vertexNumber);

  for (i = 0; i < vertexNumber; i++){

    fscanf(fildes, "%f %f %f",
           &vertexList[(i*3)],
           &vertexList[(i*3)+1],
           &vertexList[(i*3)+2]);

  }
  for (i = 0; i < trianglesNumber; i++){
    fscanf(fildes, "%d %d %d",&a,&b,&c);
    prim->coords[0][PF_X]=vertexList[(3*a) ];
    prim->coords[0][PF_Y]=vertexList[(3*a)+1];
    prim->coords[0][PF_Z]=vertexList[(3*a)+2];

    prim->coords[1][PF_X]=vertexList[(b*3) ];
    prim->coords[1][PF_Y]=vertexList[(b*3)+1];
    prim->coords[1][PF_Z]=vertexList[(b*3)+2];

    prim->coords[2][PF_X]=vertexList[(c*3) ];
    prim->coords[2][PF_Y]=vertexList[(c*3)+1];
    prim->coords[2][PF_Z]=vertexList[(c*3)+2];

    pfdAddBldrGeom(prim, 1);
  }

  node=pfdBuild();

  pfdDelGeom(prim);
  free(vertexList);
  fclose(fildes);

  return node;
}

I think there is a problem with :

  pfdBldrStateMode(PFDGBLDR_AUTO_NORMALS, PFDGBLDR_NORMALS_GENERATE);
  pfdBldrMode(PFDBLDR_AUTO_NORMALS, PF_ON);

Anyone can help me ?

                thanks

--
	ventura++at++labri.u-bordeaux.fr
	http://dept-info.labri.u-bordeaux.fr/~ventura
 Quod natura non dat Salmantica non praestat.

New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Fri Apr 30 1999 - 06:09:41 PDT

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