Browse Source

more pfm refinements

David Rose 13 years ago
parent
commit
3ce560b4a9
1 changed files with 22 additions and 22 deletions
  1. 22 22
      panda/src/grutil/pfmFile.cxx

+ 22 - 22
panda/src/grutil/pfmFile.cxx

@@ -1013,7 +1013,7 @@ project(const Lens *lens) {
 
       LPoint3 film;
       lens->project(LCAST(PN_stdfloat, p), film);
-      p = to_uv.xform_point(LCAST(float, film));
+      p = to_uv.xform_point(LCAST(PN_float32, film));
     }
   }
 }
@@ -1529,18 +1529,17 @@ make_vis_mesh_geom(GeomNode *gnode, bool inverted) const {
         (mesh_name.str(), format, Geom::UH_static);
 
       vdata->set_num_rows(num_vertices);
-      GeomVertexWriter vwriter(vdata);
-
-      int vi = 0;
-      for (int yi = y_begin; yi < y_end; ++yi) {
-        for (int xi = x_begin; xi < x_end; ++xi) {
-          vwriter.set_row(vi);
-          ++vi;
-
-          for (VisColumns::const_iterator vci = vis_columns.begin();
-               vci != vis_columns.end();
-               ++vci) {
-            const VisColumn &column = *vci;
+
+      // Fill in all of the vertices.
+      for (VisColumns::const_iterator vci = vis_columns.begin();
+           vci != vis_columns.end();
+           ++vci) {
+        const VisColumn &column = *vci;
+        GeomVertexWriter vwriter(vdata, column._name);
+        vwriter.set_row(0);
+
+        for (int yi = y_begin; yi < y_end; ++yi) {
+          for (int xi = x_begin; xi < x_end; ++xi) {
             column.add_data(*this, vwriter, xi, yi, reverse_normals);
           }
         }
@@ -1592,7 +1591,6 @@ make_vis_mesh_geom(GeomNode *gnode, bool inverted) const {
   }
 }
 
-
 ////////////////////////////////////////////////////////////////////
 //     Function: PfmFile::box_filter_region
 //       Access: Private
@@ -2092,15 +2090,13 @@ has_point_chan4(const PfmFile *self, int x, int y) {
 ////////////////////////////////////////////////////////////////////
 void PfmFile::VisColumn::
 add_data(const PfmFile &file, GeomVertexWriter &vwriter, int xi, int yi, bool reverse_normals) const {
-  vwriter.set_column(_name);
-
   switch (_source) {
   case CT_texcoord2:
     { 
       LPoint2f uv(PN_float32(xi) / PN_float32(file._x_size - 1),
                   PN_float32(yi) / PN_float32(file._y_size - 1));
       transform_point(uv);
-      vwriter.add_data2f(uv);
+      vwriter.set_data2f(uv);
     }
     break;
 
@@ -2110,7 +2106,7 @@ add_data(const PfmFile &file, GeomVertexWriter &vwriter, int xi, int yi, bool re
                   PN_float32(yi) / PN_float32(file._y_size - 1), 
                   0.0f);
       transform_point(uv);
-      vwriter.add_data3f(uv);
+      vwriter.set_data3f(uv);
     }
     break;
 
@@ -2119,7 +2115,7 @@ add_data(const PfmFile &file, GeomVertexWriter &vwriter, int xi, int yi, bool re
       const LPoint3f &point3 = file.get_point(xi, yi);
       LPoint2f point(point3[0], point3[1]);
       transform_point(point);
-      vwriter.add_data2f(point);
+      vwriter.set_data2f(point);
     }
     break;
 
@@ -2127,7 +2123,7 @@ add_data(const PfmFile &file, GeomVertexWriter &vwriter, int xi, int yi, bool re
     {
       LPoint3f point = file.get_point(xi, yi);
       transform_point(point);
-      vwriter.add_data3f(point);
+      vwriter.set_data3f(point);
     }
     break;
 
@@ -2164,7 +2160,7 @@ add_data(const PfmFile &file, GeomVertexWriter &vwriter, int xi, int yi, bool re
         n = -n;
       }
       transform_vector(n);
-      vwriter.add_data3f(n);
+      vwriter.set_data3f(n);
     }
     break;
   }
@@ -2195,9 +2191,13 @@ transform_point(LPoint3f &point) const {
     LCAST(PN_float32, _transform->get_mat()).xform_point_in_place(point);
   }
   if (_lens != (Lens *)NULL) {
+    static LMatrix4f to_uv(0.5, 0.0, 0.0, 0.0,
+                           0.0, 0.5, 0.0, 0.0, 
+                           0.0, 0.0, 1.0, 0.0, 
+                           0.5, 0.5, 0.0, 1.0);
     LPoint3 film;
     _lens->project(LCAST(PN_stdfloat, point), film);
-    point = LCAST(PN_float32, film);
+    point = to_uv.xform_point(LCAST(PN_float32, film));
   }
 }