#include <vtk3DSOurImporter.h>
Public Member Functions | |
| void | SetPolys (char *f) |
| vtkTypeMacro (vtk3DSOurImporter, vtkImporter) | |
| void | PrintSelf (ostream &os, vtkIndent indent) |
| vtkSetStringMacro (FileName) | |
| vtkGetStringMacro (FileName) | |
| vtkSetMacro (ComputeNormals, int) | |
| vtkGetMacro (ComputeNormals, int) | |
| vtkBooleanMacro (ComputeNormals, int) | |
| FILE * | GetFileFD () |
Static Public Member Functions | |
| vtk3DSOurImporter * | New () |
Public Attributes | |
| vtk3DSOmniLight * | OmniList |
| vtk3DSSpotLight * | SpotLightList |
| vtk3DSCamera * | CameraList |
| vtk3DSMesh * | MeshList |
| vtk3DSMaterial * | MaterialList |
| vtk3DSMatProp * | MatPropList |
Protected Member Functions | |
| vtk3DSOurImporter () | |
| ~vtk3DSOurImporter () | |
| virtual int | ImportBegin () |
| virtual void | ImportEnd () |
| virtual void | ImportActors (vtkRenderer *renderer) |
| virtual void | ImportCameras (vtkRenderer *renderer) |
| virtual void | ImportLights (vtkRenderer *renderer) |
| virtual void | ImportProperties (vtkRenderer *renderer) |
| vtkPolyData * | GeneratePolyData (vtk3DSMesh *meshPtr) |
| int | Read3DS () |
Protected Attributes | |
| char * | FileName |
| FILE * | FileFD |
| int | ComputeNormals |
| int | flag3 |
Private Member Functions | |
| vtk3DSOurImporter (const vtk3DSOurImporter &) | |
| void | operator= (const vtk3DSOurImporter &) |
|
|
Definition at line 131 of file vtk3DSOurImporter.cpp. References CameraList, ComputeNormals, FileFD, FileName, flag3, MaterialList, MatPropList, MeshList, OmniList, and SpotLightList.
00132 {
00133 this->OmniList = NULL;
00134 this->SpotLightList = NULL;
00135 this->CameraList = NULL;
00136 this->MeshList = NULL;
00137 this->MaterialList = NULL;
00138 this->MatPropList = NULL;
00139 this->FileName = NULL;
00140 this->FileFD = NULL;
00141 this->ComputeNormals = 0;
00142 this->flag3 = 0;
00143 }
|
|
|
Definition at line 1236 of file vtk3DSOurImporter.cpp. References CameraList, FileName, MatPropList, MeshList, OmniList, and SpotLightList.
01237 {
01238 vtk3DSOmniLight *omniLight;
01239 vtk3DSSpotLight *spotLight;
01240
01241 // walk the light list and delete vtk objects
01242 for (omniLight = this->OmniList; omniLight != (vtk3DSOmniLight *) NULL; omniLight = (vtk3DSOmniLight *) omniLight->next)
01243 {
01244 omniLight->aLight->Delete();
01245 }
01246 VTK_LIST_KILL (this->OmniList);
01247
01248 // walk the spot light list and delete vtk objects
01249 for (spotLight = this->SpotLightList; spotLight != (vtk3DSSpotLight *) NULL;
01250 spotLight = (vtk3DSSpotLight *) spotLight->next)
01251 {
01252 spotLight->aLight->Delete();
01253 }
01254 VTK_LIST_KILL (this->SpotLightList);
01255
01256 vtk3DSCamera *camera;
01257 // walk the camera list and delete vtk objects
01258 for (camera = this->CameraList; camera != (vtk3DSCamera *) NULL;
01259 camera = (vtk3DSCamera *) camera->next)
01260 {
01261 camera->aCamera->Delete ();
01262 }
01263 VTK_LIST_KILL (this->CameraList);
01264
01265 // walk the mesh list and delete malloced datra and vtk objects
01266 vtk3DSMesh *mesh;
01267 for (mesh = this->MeshList; mesh != (vtk3DSMesh *) NULL;
01268 mesh = (vtk3DSMesh *) mesh->next)
01269 {
01270 if (mesh->anActor != NULL)
01271 {
01272 mesh->anActor->Delete ();
01273 }
01274 if (mesh->aMapper != NULL)
01275 {
01276 mesh->aMapper->Delete ();
01277 }
01278 if (mesh->aNormals != NULL)
01279 {
01280 mesh->aNormals->Delete ();
01281 }
01282 if (mesh->aStripper != NULL)
01283 {
01284 mesh->aStripper->Delete ();
01285 }
01286 if (mesh->aPoints != NULL)
01287 {
01288 mesh->aPoints->Delete ();
01289 }
01290 if (mesh->aCellArray != NULL)
01291 {
01292 mesh->aCellArray->Delete ();
01293 }
01294 if (mesh->aPolyData != NULL)
01295 {
01296 mesh->aPolyData->Delete ();
01297 }
01298 if (mesh->vertex)
01299 {
01300 free (mesh->vertex);
01301 }
01302 if (mesh->face)
01303 {
01304 free (mesh->face);
01305 }
01306 if (mesh->mtl)
01307 {
01308 free (mesh->mtl);
01309 }
01310 }
01311
01312 // then delete the list structure
01313
01314 VTK_LIST_KILL (this->MeshList);
01315 VTK_LIST_KILL (this->MaterialList);
01316
01317 // objects allocated in Material Property List
01318 vtk3DSMatProp *m;
01319 // just walk the list of material properties, deleting vtk properties
01320 for (m = this->MatPropList; m != (vtk3DSMatProp *) NULL; m = (vtk3DSMatProp *) m->next)
01321 {
01322 m->aProperty->Delete();
01323 }
01324
01325 // then delete the list structure
01326 VTK_LIST_KILL (this->MatPropList);
01327
01328 if (this->FileName)
01329 {
01330 delete [] this->FileName;
01331 }
01332 }
|
|
|
|
|
|
Definition at line 239 of file vtk3DSOurImporter.cpp. References flag3. Referenced by ImportActors().
00240 {
00241 int i;
00242 vtk3DSFace *face;
00243 vtkCellArray *triangles;
00244 vtkPoints *vertices;
00245 vtkPolyData *polyData;
00246
00247 face = mesh->face;
00248 mesh->aCellArray = triangles = vtkCellArray::New ();
00249 triangles->Allocate(mesh->faces * 4);
00250
00251 if (flag3!=0)
00252 for (i = 0; i < mesh->faces; i++, face++)
00253 {
00254 triangles->InsertNextCell (4);
00255 triangles->InsertCellPoint (face->a);
00256 triangles->InsertCellPoint (face->b);
00257 triangles->InsertCellPoint (face->c);
00258 i++; face++;
00259 triangles->InsertCellPoint (face->b);
00260 }
00261 else
00262 for (i = 0; i < mesh->faces; i++, face++)
00263 {
00264 triangles->InsertNextCell (3);
00265 triangles->InsertCellPoint (face->a);
00266 triangles->InsertCellPoint (face->b);
00267 triangles->InsertCellPoint (face->c);
00268 }
00269
00270 mesh->aPoints = vertices = vtkPoints::New ();
00271 vertices->Allocate(mesh->vertices);
00272 for (i = 0; i < mesh->vertices; i++)
00273 {
00274 vertices->InsertPoint (i, (float *) mesh->vertex[i]);
00275 }
00276 mesh->aPolyData = polyData = vtkPolyData::New ();
00277 polyData->SetPolys (triangles);
00278 polyData->SetPoints (vertices);
00279
00280 return polyData;
00281 }
|
|
|
Definition at line 81 of file vtk3DSOurImporter.h. Referenced by end_chunk(), read_byte(), read_dword(), read_float(), read_word(), and start_chunk().
00081 {return this->FileFD;};
|
|
|
Definition at line 186 of file vtk3DSOurImporter.cpp. References ComputeNormals, GeneratePolyData(), and MeshList.
00187 {
00188 vtk3DSMatProp *material;
00189 vtk3DSMesh *mesh;
00190 vtkStripper *polyStripper;
00191 vtkPolyDataNormals *polyNormals;
00192 vtkPolyDataMapper *polyMapper;
00193 vtkPolyData *polyData;
00194 vtkActor *actor;
00195
00196 // walk the list of meshes, creating actors
00197 for (mesh = this->MeshList; mesh != (vtk3DSMesh *) NULL;
00198 mesh = (vtk3DSMesh *) mesh->next)
00199 {
00200 if (mesh->faces == 0)
00201 {
00202 vtkWarningMacro (<< "part " << mesh->name << " has zero faces... skipping\n");
00203 continue;
00204 }
00205
00206 polyData = this->GeneratePolyData (mesh);
00207 mesh->aMapper = polyMapper = vtkPolyDataMapper::New ();
00208 mesh->aStripper = polyStripper = vtkStripper::New ();
00209
00210 // if ComputeNormals is on, insert a vtkPolyDataNormals filter
00211 if (this->ComputeNormals)
00212 {
00213 mesh->aNormals = polyNormals = vtkPolyDataNormals::New ();
00214 polyNormals->SetInput (polyData);
00215 polyStripper->SetInput (polyNormals->GetOutput ());
00216 }
00217 else
00218 {
00219 polyStripper->SetInput (polyData);
00220 }
00221
00222 //polyMapper->SetInput (polyStripper->GetOutput ());
00223 polyMapper->SetInput(polyData);
00224 vtkDebugMacro (<< "Importing Actor: " << mesh->name);
00225 mesh->anActor = actor = vtkActor::New ();
00226 actor->SetMapper (polyMapper);
00227 material = (vtk3DSMatProp *)VTK_LIST_FIND(this->MatPropList, mesh->mtl[0]->name);
00228 actor->SetProperty (material->aProperty);
00229 renderer->AddActor (actor);
00230 }
00231 }
|
Here is the call graph for this function:

|
|
Definition at line 145 of file vtk3DSOurImporter.cpp. References FileFD, and Read3DS().
|
Here is the call graph for this function:

|
|
Definition at line 283 of file vtk3DSOurImporter.cpp. References CameraList.
00284 {
00285 vtkCamera *aCamera;
00286 vtk3DSCamera *camera;
00287
00288 // walk the list of cameras and create vtk cameras
00289 for (camera = this->CameraList; camera != (vtk3DSCamera *) NULL; camera = (vtk3DSCamera *) camera->next)
00290 {
00291 camera->aCamera = aCamera = vtkCamera::New ();
00292 aCamera->SetPosition (camera->pos[0], camera->pos[1], camera->pos[2]);
00293 aCamera->SetFocalPoint (camera->target[0], camera->target[1], camera->target[2]);
00294 aCamera->SetViewUp (0, 0, 1);
00295 aCamera->SetClippingRange (.1,10000);
00296 aCamera->Roll (camera->bank);
00297 renderer->SetActiveCamera (aCamera);
00298 vtkDebugMacro (<< "Importing Camera: " << camera->name);
00299 }
00300 }
|
|
|
Definition at line 157 of file vtk3DSOurImporter.cpp. References FileFD.
|
|
|
Definition at line 302 of file vtk3DSOurImporter.cpp. References OmniList, and SpotLightList.
00303 {
00304 vtk3DSOmniLight *omniLight;
00305 vtk3DSSpotLight *spotLight;
00306 vtkLight *aLight;
00307
00308 // just walk the list of omni lights, creating vtk lights
00309 for (omniLight = this->OmniList; omniLight != (vtk3DSOmniLight *) NULL;
00310 omniLight = (vtk3DSOmniLight *) omniLight->next)
00311 {
00312 omniLight->aLight = aLight = vtkLight::New ();
00313 aLight->SetPosition (omniLight->pos[0],
00314 omniLight->pos[1],
00315 omniLight->pos[2]);
00316 aLight->SetFocalPoint (0, 0, 0);
00317 aLight->SetColor (omniLight->col.red,
00318 omniLight->col.green,
00319 omniLight->col.blue);
00320 renderer->AddLight (aLight);
00321 vtkDebugMacro (<< "Importing Omni Light: " << omniLight->name);
00322 }
00323
00324 // now walk the list of spot lights, creating vtk lights
00325 for (spotLight = this->SpotLightList; spotLight != (vtk3DSSpotLight *) NULL;
00326 spotLight = (vtk3DSSpotLight *) spotLight->next)
00327 {
00328 spotLight->aLight = aLight = vtkLight::New ();
00329 aLight->PositionalOn ();
00330 aLight->SetPosition (spotLight->pos[0],
00331 spotLight->pos[1],
00332 spotLight->pos[2]);
00333 aLight->SetFocalPoint (spotLight->target[0],
00334 spotLight->target[1],
00335 spotLight->target[2]);
00336 aLight->SetColor (spotLight->col.red,
00337 spotLight->col.green,
00338 spotLight->col.blue);
00339 aLight->SetConeAngle (spotLight->falloff);
00340 renderer->AddLight (aLight);
00341 vtkDebugMacro (<< "Importing Spot Light: " << spotLight->name);
00342 }
00343 }
|
|
|
|
|
|
Definition at line 57 of file vtk3DSOurImporter.cpp. Referenced by MainWindow::newSubdivision().
00058 {
00059 // First try to create the object from the vtkObjectFactory
00060 vtkObject* ret = vtkObjectFactory::CreateInstance("vtk3DSOurImporter");
00061 if(ret)
00062 {
00063 return (vtk3DSOurImporter*)ret;
00064 }
00065 // If the factory was unable to create the object, then create it here.
00066 return new vtk3DSOurImporter;
00067 }
|
|
|
|
|
||||||||||||
|
Definition at line 1334 of file vtk3DSOurImporter.cpp. References ComputeNormals, and FileName.
01335 {
01336 vtkImporter::PrintSelf(os,indent);
01337 os << indent << "File Name: "
01338 << (this->FileName ? this->FileName : "(none)") << "\n";
01339
01340 os << indent << "Compute Normals: "
01341 << (this->ComputeNormals ? "On\n" : "Off\n");
01342 }
|
|
|
Definition at line 167 of file vtk3DSOurImporter.cpp. References DefaultMaterial, and parse_3ds_file(). Referenced by ImportBegin().
00168 {
00169 vtk3DSMatProp *aMaterial;
00170
00171 if (parse_3ds_file (this) == 0)
00172 {
00173 vtkErrorMacro (<< "Error readings .3ds file: " << this->FileName << "\n");
00174 return 0;
00175 }
00176
00177
00178 // create a MatProp and fill if in with default
00179 aMaterial = (vtk3DSMatProp *) malloc (sizeof (vtk3DSMatProp));
00180 *aMaterial = DefaultMaterial;
00181 aMaterial->aProperty = vtkProperty::New ();
00182 VTK_LIST_INSERT (this->MatPropList, aMaterial);
00183 return 1;
00184 }
|
Here is the call graph for this function:

|
|
Definition at line 233 of file vtk3DSOurImporter.cpp. References flag3. Referenced by MainWindow::newSubdivision().
|
|
||||||||||||
|
|
|
||||||||||||
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
||||||||||||
|
|
|
|
Definition at line 85 of file vtk3DSOurImporter.h. Referenced by ImportCameras(), parse_n_camera(), vtk3DSOurImporter(), and ~vtk3DSOurImporter(). |
|
|
Definition at line 105 of file vtk3DSOurImporter.h. Referenced by ImportActors(), PrintSelf(), and vtk3DSOurImporter(). |
|
|
Definition at line 104 of file vtk3DSOurImporter.h. Referenced by ImportBegin(), ImportEnd(), and vtk3DSOurImporter(). |
|
|
Definition at line 103 of file vtk3DSOurImporter.h. Referenced by PrintSelf(), vtk3DSOurImporter(), and ~vtk3DSOurImporter(). |
|
|
Definition at line 106 of file vtk3DSOurImporter.h. Referenced by GeneratePolyData(), SetPolys(), and vtk3DSOurImporter(). |
|
|
Definition at line 87 of file vtk3DSOurImporter.h. Referenced by update_materials(), and vtk3DSOurImporter(). |
|
|
Definition at line 88 of file vtk3DSOurImporter.h. Referenced by parse_mat_entry(), vtk3DSOurImporter(), and ~vtk3DSOurImporter(). |
|
|
Definition at line 86 of file vtk3DSOurImporter.h. Referenced by ImportActors(), parse_n_tri_object(), vtk3DSOurImporter(), and ~vtk3DSOurImporter(). |
|
|
Definition at line 83 of file vtk3DSOurImporter.h. Referenced by ImportLights(), parse_n_direct_light(), vtk3DSOurImporter(), and ~vtk3DSOurImporter(). |
|
|
Definition at line 84 of file vtk3DSOurImporter.h. Referenced by ImportLights(), parse_n_direct_light(), vtk3DSOurImporter(), and ~vtk3DSOurImporter(). |
1.3.2