Tux L i n u x * G u i d e

v o n * I n g o * B l e c h s c h m i d t * ( c ) * 2 0 0 1
Tux
|Home|

|Neue Artikel|

|Index|

|Liste|

|Code-Snippets|

|Links|

|Allgemeines|

|Cool Stuff|
off2pov
Sam Oct 5 17:29:04 MEST 2002
off pov PoVray convert Konvertieren 3D Szenen

Sie haben die 3D-Beschreibungsdaten eines Objekts im off-Format, und wollen diese mit PoVray rendern? Mit Perl kein Problem!

LinuxGuide Druckbare Version
Man-Page
Sourcecode
Verwandte Artikel:

Der HTML-Automat
Text2HTML



      .~.   
      /V\   
     // \\  
    /(   )\ 
     ^`~'^  
     


Hosted at Sorceforge.net
No ePATENTS
Viewable With Any Browser
Burn All GIFs!

F
ür eine gute PoVray-Szene (sehr gute Einführung von Christian Perle: Linux Magazin 04/1998) brauchte ich unbedingt noch ein Dodekaeder, dessen Ecken, Kanten und Flächen ich beliebieg ändern konnte.
Auf http://www.sct.gu.edu.au/~anthony/graphics/polyhedra/platonic/ fand ich eine off-Datei -- nur wie in meine PoVray-Szene integrieren?
Mein selbstgeschriebendes Programm in perl erledigt diese Aufgabe. Die Syntax ist einfach:
#
 
iblech@hubble:~/Povray > ./off2pov.pl < off-Datei > pov-Datei
 
 

In der entstanden PoVray-Szenenbeschreibung muss dann nur noch der ganze Rest (Kamera, Umgebung, ...) definiert werden.
Das Skript, Download:
#
 
#!/usr/bin/perl -w
# off2pov - converts .off files to .pov-files
# Copyright (C) Ingo Blechschmidt Sam Okt  5 17:41:20 MEST 2002 - now,
# released under the Terms of the GNU General Public License.
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Ingo Blechschmidt
# Arberstraße 5
# 86179 Augsburg
# E-Mail: iblech@web.de, http://www.way.to/uselinux/
# Tel.: +49 / 821 882955
#
# 
#!/usr/bin/perl -w

$radiS = "0.3";
$radiC = "0.2";
$pigS = "MyP";
$pigC = "MyC";
$pigF = "MyF";
$finS = "FiP";
$finC = "FiC";
$finF = "FiF";

@points = ();
@rechts = ();
@verbs  = ();

@Sat = ();
$a = "";
$i = 0;

$a = <STDIN>;
chomp($a);

@Sat = split(" ", $a);

for($i = 0; $i < $Sat[0]; $i++) {
  $a = <STDIN>;
  chomp($a);
  $points[$i]=$a;
}

for($i = 0; $i < $Sat[1]; $i++) {
  $a = <STDIN>;
  chomp($a);
  $rechts[$i]=$a;
}

for($i = 0; $i < $Sat[2]; $i++) {
  $a = <STDIN>;
  chomp($a);
  $verbs[$i]=$a;
}

for($i = 0; $i < $Sat[0]; $i++) {
  print "sphere { <";
  print `echo $points[$i] | sed -e 's+^ *++' -e 's+ *\$++' | tr -s ' ' | tr ' ' ',' | tr -d '\n'`;
  print ">, rad pigment { $pigS } finish { $finS } }\n";
}

for($i = 0; $i < $Sat[1]; $i++) {
  @R = split(" ", $rechts[$i]);
  print "polygon { " . int($R[0] + 1) . " ";
  for($j = 1; $j <= $R[0]; $j++) {
    print "<" . `echo $points[$R[$j]] | sed -e 's+^ *++' -e 's+ *\$++' | tr -s ' ' | tr ' ' ',' | tr -d '\n' ` . ">, ";
  }
  print "<" . `echo $points[$R[1]] | sed -e 's+^ *++' -e 's+ *\$++' | tr -s ' ' | tr ' ' ',' | tr -d '\n' ` . "> pigment { $pigF } finish { $finF } }\n";
}

for($i = 0; $i < $Sat[2]; $i++) {
  @R = split(" ", $verbs[$i]);
  print "cylinder { <";
  print `echo $points[$R[0]] | sed -e 's+^ *++' -e 's+ *\$++' | tr -s ' ' | tr ' ' ',' | tr -d '\n'`;
  print ">, <";
  print `echo $points[$R[1]] | sed -e 's+^ *++' -e 's+ *\$++' | tr -s ' ' | tr ' ' ',' | tr -d '\n'`;
  print ">, cad pigment { $pigC } finish { $finC } }\n";
}
 
 

Viel Spaß beim Rendern!

Document Informations: Content-Type: text/html; charset=iso-8859-15
Author: Ingo Blechschmidt
Description: LinuxGuide - Sie haben die 3D-Beschreibungsdaten eines Objekts im off-Format, und wollen diese mit PoVray rendern? Mit Perl kein Problem!
Keywords: off, pov, PoVray, convert, Konvertieren, 3D, Szenen, LinuxGuide
Robots: all
Copyright: Copyright (C) 2002 by Ingo Blechschmidt
Date: 2003-10-05T17:29:04+02:00

Stichwortverzeichnis | Neue Artikel | Übersicht | Codesnippets | Links | Copyright | Cool Stuff | Home | Druckbare Version | Manpage | Sourcecode |
Diesen Artikel kritisieren, kommentieren oder ergänzen
Einen Neuen Artikel schreiben

 
This website is distributed under the GNU Free Documentation License .