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