Kommentarer till Sced på NADA

av Anders Sandberg <nv91-asa>

Kör Från /tmp!

Sced har en mycket dum filläsare, som försöker läsa in en komplett fil-lista. När detta görs i AFS, börjar den leta även borta i Tyskland och USA - kort sagt, Sced låser sig och man får upp en massa meddelanden om filservrar som inte kan nås. Kör Sced från en katalog utanför AFS, som /tmp (där slipper man ju också att belamra sitt konto med en massa filer).

Ett par små problem: /tmp är lokal för datorn man sitter på, och rensas efter ca 24 timmar. Spara de resultat du vill bevara på ditt konto när du är klar. Dessutom kan gamla povra.ini och d.tga filer ligga kvar på /tmp/ från tidigare användare, och går inte att ta bort. Detta kan lösas genom att man kopierar povray.ini till ett annat namn, och ändrar i den så att raderna

Output_File_Name=/tmp/d.tga
Post_Scene_Command=xv /tmp/d.tga &
talar om ett annat filnamn. Kör sedan povray med
povray <egenini.ini> +i<egenfil.pov>
där <egenini.ini> är er egen initeringsfil och <egenfil.pov< er povray-fil.

Rostigt plan och försilvrade klot genererade med ett c-program och PoVRay


PoVRay

PoVRay är en mycket trevlig renderare, som i sin nuvarande version 3.0 har "allt" (inkluderande radiositet, fraktaler och mycket kluriga specialeffekter). För att kunna köra PoVRay skriv
module add hacks
och starta PoVRay med antingen
povray +w266 +h200 +ft +v +iminfil.pov +outfil.tga; xv utfil.tga
('+w' och '+h' anger bildens bredd och höjd, '+ft' att man vill producera en Targa-fil som resultat, '+v' att man vill ha utskrift under körning, '+i' anger inputfilen och '+o' outputfilen; se även Man-sidan).

eller med det koncisare

povray +iminfil.pov
om du har placerat filen povray.ini i samma bibliotek. Povray.ini innehåller färdiga deklarationer om bildstorlek, att lägga in utdata i filen /tmp/dan.tga, att xv ska startas efteråt osv. Den är lätt att editera, och vill man prova nya kommando-optioner kan de skrivas till.

Speciellt värt att nämna är +a, vilket sätter igång antialiasing (långsamt men snyggare i många bilder).

Om du vill veta mer om PoVRay, ta då en titt på dess hemsida, där även en illustrerad manual finns. Det är dock en rätt belastad server, så en mera näraliggande hypertextmanual finns på Elektro. En text version av manualen ligger på /usr/local/hacks/lib/povray3/povray.doc.

Ruby_Glass och Gold_Nugget koner i Sced och PoVRay.

Texturer i Sced

Sced har förmågan att lägga in textur-information i objekt som sedan renderings programmet kan tolka. Detta görs genom optionen 'Target Specific' på dialogen man får upp genom Object:Attributes menyn. Detta ersätter den gamla definitionen av färg och yta.

PoVRay

För PoVRay skriver man något i stil med
texture{Jade}
texture{Brass_Valley}
texture{Rust}
för att använda fördefinierade texturer,
texture{
	pigment{color Green}
	finish{Shiny}
	normal{bumps 0.4}
	}
för egna texturer.

Dock finns det ett litet problem: när man kör PoVRay måste det få reda på var den ska hämta dessa definitioner. Därför måste du addera till raderna

#include "colors.inc"
#include "textures.inc"
i dialogen Declarations, som kan nås via en knapp i Target Specific dialogen.

Se /usr/local/hacks/lib/povray3/include för olika texturer, framför allt i textures.v2.

Textures.inc innehåller åtskilliga trevliga texturer, som de ovan nämnda och texturer i stil med Aluminum, Lightening1, Ruby_Glass, DMFWood6 och Cork. I filen glass.inc finns fler glassorter, metals.inc nya metaller, stones.inc olika stensorter (se stones1.inc och stones2.inc) och woods.inc olika träslag. För att använda dessa, lägg till #include-satser i Declarations för att inkludera de filer som behövs (tänk på att de ofta anropar färgerna i colors.inc, så de måste följa efter #include "colors.inc").

Rayshade

Prova med
texture wood
texture marble
texture checker <foo>
Där <foo> definieras enligt
surface foo ambient r g b diffuse r g b specular r g b specpow x reflect y
där r,g,b är färgvärden mellan noll och ett, x exponenten i Phong's formel och y hur mycket ytan reflekterar (alla dessa är inte nödvändiga). Placera denna definition innan textur-anropet.

Man kan också lägga på en rle-bild på ytan med hjälp av

texture image <filnamn>
Om man har en fil i formatet foo kan den översättas till rle med sekvensen
footoppm fil.foo | ppmtorle > fil.rle

Jade-textur på klot.

Rayshade

Förutom PoV-ray finns det ett annat raytracingprogram på NADA som man kan exportera till från Sced, Rayshade. Det är aningen gammalt, men populärt bland vissa.

Rayshade borde finnas på alla datorer om man kör

module add graphics
men i verkligheten fungerar det inte alltid. Man kan dock köra det på dront (tänk på att /tmp är lokalt för den dator du sitter vid, du måste flytta filen till en katalog som kan läsas via dront).

Ett problem är att xv då inte kommer åt skärmen, för att åtgärda detta skriver man

xhost dront.nada.kth.se
på den egna datorn (detta ger dront tillstånd att visa fönster), och
setenv DISPLAY foo.nada.kth.se:0.0
(där "foo" är din dators namn) i det terminalfönster som körs på dront (detta talar om att X-program ska köras på din dators konsol-fönster).

See också The Rayshade Home Page.

Blixt-textur på klot i PoVRay. Notera genomskinligheten.

Vanliga Problem

Varför låser sig Sced?

Troligen på grund av att man startat utanför /tmp. I andra hand kanske för att man råkar ha en modal dialog aktiv som man tappat bort bland sina fönster; stäng den och sced fungerar.

Ibland kan maninte kan välja menyvalen men sced verkar fungera i övrigt. Detta kan bero på att man har caps lock intryckt.

Vatten

Många undrar varför vattnet blir så svart. Svaret är att det är genomskinligt, och har man inget under så blir det svart som en skogs-tjärn. Man kan lägga ett färgat plan under vattenytan, så syns vattnet bättre.

CSG och texturer

När man skapar ett CSG-objekt kombineras flera delobjekt till ett. Om man ställer in texturen för detta objekt kommer alla delar att få samma textur. För att skapa objekt med flera texturer måste dessa ställas in innan de ombildas till CSG (svara nej på frågan om 'Clear Attributes?').

Ljus

Ljusstyrkor i Sced skall vara mellan 0 och 1 - andra värden ger konstiga resultat. Framför allt bör ambient-nivån vara rätt låg (0.2-0.3), blir den för hög verkar objekten platta och självlysande.

Utomjordisk skrift på en ojämn vägg. Skapad med bump-maps i Povray

Roligheter i Povray

Himmels-sfär

Man kan definiera ett klot som omsluter hela scenen om man inte vill ha en kolsvart rymd. Detta kan göras genom att man lägger till raden
sky_sphere {pigment {color Blue}}
där color Blue kan ersättas med andra färger, gradienter som
sky_sphere {
    pigment {
      gradient y
      color_map {
        [0 color Red]
        [1 color Blue]
      }
      scale 2
      translate -1
    }
  }
eller ännu mer komplicerade pigment (solnedgångar med moln etc). Se sektion 4.9.2 i Povray manualen.

Image Maps

För att lägga in en bild på ett objekt kan man använda följande texturdeklaration:
texture {
    pigment {
      image_map {
        gif "filename.gif"
    }
  }
Detta lägger in en bild projicerad längs z-axeln med längden 1 på sidorna på objektet. Om man vill göra den större kan man lägga till kommandot
scale <xskala, yskala, zskala>
före sista '}', rotation kan ske genom
rotate <xrot, yrot, zrot>
och translation genom
translate <xtrans, ytrans, ztrans>

Vill man bara ha en projektion (ingen upprepning) kan man skriva

once
efter filnamnet. Här kan man också ange vilken sorts avbildning som används genom
map_type x
där x kan vara 0 (plan avbildning längs z-axeln), 1 (sfärisk avbildning), 2 (cylindrisk avbildning) och 5 (toroidal avbildning). Se sektion 7.6.1.5 i Povray manualen för mer information.

Pentagon-tesselation. Genererad genom rekursiva deklarationer i Povray.

Belysnings Modeller


Spheres with just ambient light of different levels.

Spheres with diffuse lightening.

Spheres with different amounts of specular light.

Spheres with varying Phong exponent/surface roughness.

Spheres with different reflectiveness.

Spheres with different transparencies and refraction.

Spheres with normal perturbations.

VRML från Sced

Sced kan producera VRML 1.0 output. Filerna (.wrl) kan läsas med programmet vrweb under hacks.

En enkel VRML-värld skapad i Sced. Om din webläsare är rätt konfigurerad öppnas den om du klickar på bilden ovan

Sced på WWW

Andra Program

Annat

PoVRay-producerade koner kombinerade med satelitbild.