Revision: 35391
          http://brlcad.svn.sourceforge.net/brlcad/?rev=35391&view=rev
Author:   ebautu
Date:     2009-07-29 22:14:42 +0000 (Wed, 29 Jul 2009)

Log Message:
-----------
Implement individual raytracing of models.

Modified Paths:
--------------
    web/trunk/htdocs/more/sites/all/modules/brlcad/brlcad.inc
    web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/7.14.txt
    web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/generic.txt

Modified: web/trunk/htdocs/more/sites/all/modules/brlcad/brlcad.inc
===================================================================
--- web/trunk/htdocs/more/sites/all/modules/brlcad/brlcad.inc   2009-07-29 
21:37:32 UTC (rev 35390)
+++ web/trunk/htdocs/more/sites/all/modules/brlcad/brlcad.inc   2009-07-29 
22:14:42 UTC (rev 35391)
@@ -19,7 +19,6 @@
 
   // prepare environment variables
   $views = str_replace(array("\r\n", "\n"), ':', 
variable_get('brlcad_raytrace_ae', ''));
-  $rtscript = tempnam(realpath(file_directory_temp()), 'rtimg_');
   if(is_array($objects)) {
     $objects = implode(' ', $objects);
   }
@@ -27,7 +26,6 @@
     $objects = '*';
   }
   $env = array(
-    'rtscript' => $rtscript,
     'views' => $views,
     'objects' => $objects, 
   );
@@ -47,7 +45,7 @@
   }
   
   $fields = array_combine($fields[1], $fields[2]);
-  $required_fields = array('TITLE', 'VERSION', 'SUMMARY', 'UNITS', 'OBJECTS', 
'RENDER');
+  $required_fields = array('TITLE', 'VERSION', 'SUMMARY', 'UNITS', 'OBJECTS', 
'RENDER', 'RAYTRACE');
   foreach($required_fields as $field) {
     if(!isset($fields[$field])) {
       $fields[$field] = null;
@@ -70,26 +68,33 @@
   $fields['RENDER'] = $render;
   unset($render);
   
+  // render images
+  $fields['RAYTRACE'] = explode("\n", $fields['RAYTRACE']);
   $fields['IMAGES'] = array();
   if(!empty($fields['RENDER'])) {
-    // render images
-    $command = 'rt -v 0 -M -R -s %d -o %s %s' . str_repeat(' %s', 
count($fields['RENDER'])) . '< %s';
-    $params = array_merge(array(variable_get('brlcad_raytrace_size', 512), 
$rtscript, $model), $fields['RENDER'], array($rtscript));
-    $output = brlcad_run_command($command, $params);
+    $tmpfile = tempnam(realpath(file_directory_temp()), 'rtimg_');
+    $rtfile = $tmpfile . '.rt';
+    $pixfile = $tmpfile . '.pix';
+    
+    $rtcmd = 'rt -v 0 -M -R -s %d -o %s %s' . str_repeat(' %s', 
count($fields['RENDER'])) . '< %s';
+    $params = array_merge(array(variable_get('brlcad_raytrace_size', 512), 
$pixfile, $model), $fields['RENDER'], array($rtfile));
+    
+    $pngcmd = 'pix-png -a %s > %s';
+    $views = explode(':', $views);
+    foreach($fields['RAYTRACE'] as $key => $rtscript) {
+      file_put_contents($rtfile, $rtscript);
+      $output = brlcad_run_command($rtcmd, $params);
 
-    $command = 'pix-png -a %s > %s';
-    // include image paths
-    $views = explode(':', $views);
-    foreach($views as $key => $view) {
-      $pixfile = $rtscript . '.' . ($key + 1);
       if(file_exists($pixfile)) {
-        $pngfile = $pixfile . '.png';
-        if(!is_null(brlcad_run_command($command, array($pixfile, $pngfile)))) {
-          $fields['IMAGES'][$view] = $pngfile;
+        $pngfile = $tmpfile . $key . '.png';
+        if(!is_null(brlcad_run_command($pngcmd, array($pixfile, $pngfile)))) {
+          $fields['IMAGES'][$views[$key]] = $pngfile;
         }
         unlink($pixfile);
       }
+      unlink($rtfile);
     }
+    unlink($tmpfile);
   }
   return $fields;
 }

Modified: web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/7.14.txt
===================================================================
--- web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/7.14.txt     
2009-07-29 21:37:32 UTC (rev 35390)
+++ web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/7.14.txt     
2009-07-29 22:14:42 UTC (rev 35391)
@@ -6,7 +6,6 @@
 #
 # get parameters sent from Drupal
 #
-set rtscript $::env(rtscript); concat
 set views $::env(views); concat
 set objects $::env(objects); concat
 
@@ -62,8 +61,8 @@
   draw $x
 }
 
-set offset 0; units mm; concat
-set rtscript [open $rtscript w]; concat
+units mm; concat
+puts DATABASE:RAYTRACE
 foreach view [split $views ":"] {
   # set the view 
   ae $view
@@ -74,10 +73,7 @@
   # zoom in just a bit
   zoom 1.2
 
-  # increase the output file index 
-  incr offset; concat 
-
   # raytrace the model
-  puts $rtscript "viewsize [view size];\norientation [view quat];\neye_pt 
[view eye];\nstart $offset;\nclean;\nend;\n"
+  puts "viewsize [view size]; orientation [view quat]; eye_pt [view eye]; 
clean; end;"
 }
-close $rtscript
+puts ENDDATABASE

Modified: web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/generic.txt
===================================================================
--- web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/generic.txt  
2009-07-29 21:37:32 UTC (rev 35390)
+++ web/trunk/htdocs/more/sites/all/modules/brlcad/scripts/generic.txt  
2009-07-29 22:14:42 UTC (rev 35391)
@@ -6,7 +6,6 @@
 #
 # get parameters sent from Drupal
 #
-set rtscript $::env(rtscript); concat
 set views $::env(views); concat
 set objects $::env(objects); concat
 
@@ -62,8 +61,8 @@
   draw $x
 }
 
-set offset 0; units mm; concat
-set rtscript [open $rtscript w]; concat
+units mm; concat
+puts DATABASE:RAYTRACE
 foreach view [split $views ":"] {
   # set the view 
   ae $view
@@ -74,10 +73,7 @@
   # zoom in just a bit
   zoom 1.2
 
-  # increase the output file index 
-  incr offset; concat 
-
   # raytrace the model
-  puts $rtscript "viewsize [view size];\norientation [view quat];\neye_pt 
[view eye];\nstart $offset;\nclean;\nend;\n"
+  puts "viewsize [view size]; orientation [view quat]; eye_pt [view eye]; 
clean; end;"
 }
-close $rtscript
+puts ENDDATABASE


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to