Tutorial FreeCAD POV ray/pl: Difference between revisions

From FreeCAD Documentation
(Created page with "Podobnie jak inne obiekty, światło można modyfikować za pomocą wielu opcji. Opcja {{incode|area_light}} tworzy źródło prostokątne, co jest bardziej realistyczne, ponieważ powoduje rozproszone oświetlenie tworzące miękkie cienie. Słowo kluczowe {{incode|adaptive}} pomaga zmniejszyć czas obliczeń ścieżek świetlnych; im większa wartość, tym dokładniejszy będzie wynik; aby uniknąć długiego czasu renderowania, należy użyć najmniejszej wartości c...")
(Created page with "{{Caption|align=center|Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami, płaszczyzną podłogi z teksturą parkietu i tylnymi ścianami z teksturami płyt kartonowo-gipsowych. Ustawienia Radiosity dla szybkiego renderowania.}}")
 
(43 intermediate revisions by the same user not shown)
Line 239: Line 239:
Podobnie jak inne obiekty, światło można modyfikować za pomocą wielu opcji. Opcja {{incode|area_light}} tworzy źródło prostokątne, co jest bardziej realistyczne, ponieważ powoduje rozproszone oświetlenie tworzące miękkie cienie. Słowo kluczowe {{incode|adaptive}} pomaga zmniejszyć czas obliczeń ścieżek świetlnych; im większa wartość, tym dokładniejszy będzie wynik; aby uniknąć długiego czasu renderowania, należy użyć najmniejszej wartości całkowitej, która daje akceptowalny wynik ''(zwykle wystarczy {{incode|1}} lub {{incode|2}})''. Dla uzyskania najlepszego rezultatu usuń całkowicie słowo kluczowe ''(długi czas renderowania)''. Słowo kluczowe {{incode|jitter}} pomaga poprawić cienie poprzez losowe przesunięcie pozycji świateł. Słowa kluczowe {{incode|circular}} i {{incode|orient}} zamieniają światło obszarowe w źródło sferyczne, co pozwoli uzyskać lepsze cienie w przypadku obiektów zaokrąglonych na scenie. Włączenie {{incode|fade_distance}} i {{incode|fade_power}} jest pomocne w tłumieniu wartości światła wraz z odległością, tak jak ma to miejsce w przypadku prawdziwego źródła światła.
Podobnie jak inne obiekty, światło można modyfikować za pomocą wielu opcji. Opcja {{incode|area_light}} tworzy źródło prostokątne, co jest bardziej realistyczne, ponieważ powoduje rozproszone oświetlenie tworzące miękkie cienie. Słowo kluczowe {{incode|adaptive}} pomaga zmniejszyć czas obliczeń ścieżek świetlnych; im większa wartość, tym dokładniejszy będzie wynik; aby uniknąć długiego czasu renderowania, należy użyć najmniejszej wartości całkowitej, która daje akceptowalny wynik ''(zwykle wystarczy {{incode|1}} lub {{incode|2}})''. Dla uzyskania najlepszego rezultatu usuń całkowicie słowo kluczowe ''(długi czas renderowania)''. Słowo kluczowe {{incode|jitter}} pomaga poprawić cienie poprzez losowe przesunięcie pozycji świateł. Słowa kluczowe {{incode|circular}} i {{incode|orient}} zamieniają światło obszarowe w źródło sferyczne, co pozwoli uzyskać lepsze cienie w przypadku obiektów zaokrąglonych na scenie. Włączenie {{incode|fade_distance}} i {{incode|fade_power}} jest pomocne w tłumieniu wartości światła wraz z odległością, tak jak ma to miejsce w przypadku prawdziwego źródła światła.


Ustaw światło padające z prawej strony i z góry.
Set up the light coming from the right and above.
{{Code|code=
{{Code|code=
light_source {
light_source {
Line 252: Line 252:
}}
}}


Jeśli źródło światła ma znajdować się w scenie, przydatne może być wyświetlenie na ekranie odniesienia do miejsca, w którym to źródło powinno się znajdować. W tym celu utwórz kulę o małym promieniu i załóż, że reprezentuje ona źródło światła. Umieść kulę w wybranym miejscu, a następnie przesuń światło bardzo blisko tych współrzędnych i przetestuj oświetlenie sceny. Gdy będziesz zadowolony z położenia światła, po prostu usuń kulę.
If the light source is supposed to be in the scene, it may be useful to see a reference on the screen where this source should be. To this effect, create a sphere of a small radius and assume this sphere represents the light source; position the sphere where you want, then move the light very close to these coordinates, and test the lighting of the scene; when you are satisfied with the position of the light, simply delete the sphere.
{{Code|code=
{{Code|code=
sphere {
sphere {
Line 260: Line 260:
}}
}}


12. The {{incode|sky_sphere}} section is used to create a realistic sky background. It is commonly defined as a {{incode|gradient}} and a {{incode|color_map}} of at least two colors in order to produce a smooth transition from the color of the horizon to the color of the zenith of the scene.
12. Sekcja {{incode|sky_sphere}} służy do stworzenia realistycznego tła nieba. Zazwyczaj definiuje się je jako {{incode|gradient}} oraz {{incode|color_map}} składający się przynajmniej z dwóch kolorów, aby uzyskać płynny przejście od koloru horyzontu do koloru zenitu sceny.


{{Code|code=
{{Code|code=
Line 276: Line 276:
[[Image:06_T04_FreeCAD_POVray_render_lights.png|600px|center]]
[[Image:06_T04_FreeCAD_POVray_render_lights.png|600px|center]]


{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up.}}
{{Caption|align=center|Zaczynając od standardowego szablonu, wyrenderuj scenę za pomocą POV-Ray, z ustawionym źródłem światła i sferą nieba.}}


<span id="Prepare_the_body_textures"></span>
=== Prepare the body textures ===
===Przygotowanie tekstur obiektów===


13. Tekstury każdego elementu muszą zostać dopasowane. Jest to najbardziej czasochłonne zadanie w tym procesie.
13. The textures of each body need to be adjusted. This is the most time-consuming job of this process.


In the {{incode|.pov}} file each body is described in this way
W pliku {{incode|.pov}} każdy element jest opisane w ten sposób:
* Face1, Face2, Face3, Face4, ...
* Face1, Face2, Face3, Face4, ...
* Element ''(suma zbiorów ścian)'',
* Body (union of faces)
* Object
* Obiekt.


A body mesh is defined by faces, and each face is defined by a series of triangular elements that themselves are defined by {{incode|vertex_vectors}}, {{incode|normal_vectors}}, and {{incode|face_indices}}. This information doesn't need to be modified at all. Then, each body is defined as the union of the specified faces. Again, this information doesn't need modification.
Siatka elementu jest określana przez ściany, a każda ściana jest określana przez serię trójkątnych elementów, które same określane przez {{incode|vertex_vectors}}, {{incode|normal_vectors}}, i {{incode|face_indices}}. Te informacje nie wymagają żadnych zmian. Następnie, każdy element jest zdefiniowany jako suma określonych ścian. Ponownie, te informacje nie wymagają modyfikacji.


Finally, each {{incode|object}} to be rendered is defined as one of the specified bodies, with a particular {{incode|texture}}, which itself is defined by properties like {{incode|pigment}} and {{incode|finish}}.
Wreszcie, każdy {{incode|object}} do wyrenderowania jest definiowany jako jeden z określonych elementów, z określoną {{incode|texture}}, która sama jest definiowana przez właściwości takie jak {{incode|pigment}} i {{incode|finish}}.
{{Code|code=
{{Code|code=
// instance to render
// instance to render
Line 300: Line 301:
}}
}}


By searching the {{incode|.pov}} file for the keyword {{incode|object}}, it's possible to go directly to the desired part in the file, and modify its {{incode|texture}} appropriately.
Przeszukując plik {{incode|.pov}} pod kątem słowa kluczowego {{incode|object}}, można przejść bezpośrednio do wybranej części pliku i odpowiednio zmodyfikować jej {{incode|texture}}.


Jak wskazano w komentarzu, definicja {{incode|StdFinish}} znajduje się na górze pliku, w tym przypadku przed informacjami o kamerze. Wartość ta może być zadeklarowana na wiele sposobów, jako kombinacja różnych właściwości, jak pokazano w zakomentowanych i niezakomentowanych liniach.
As indicated in the comment, the definition of {{incode|StdFinish}} is at the top of the file, in this case before the camera information. This value can be declared in many ways, as a combination of different properties, as shown in the commented and uncommented lines.
{{Code|code=
{{Code|code=
// Standard finish
// Standard finish
Line 313: Line 314:
}}
}}


In general, a {{incode|texture}} is a container that describes a material; it includes information like the {{incode|pigment}} (color or graphic), {{incode|normal}} (how the color changes with the curvature of the surface), {{incode|finish}} (interaction of the surface with the light), {{incode|pattern}} (agate, brick, dents, leopard, radial, ripples, tiling, waves, wood, etc.), and other properties. There are many options that can be combined together to produce a texture. This mixing is not trivial, but there are many examples online to obtain the desired appearance of the material.
Generalnie, tekstura {{incode|texture}} to kontener opisujący materiał. Zawiera informacje takie jak {{incode|pigment}} ''(kolor lub grafika)'', {{incode|normal}} ''(jak kolor zmienia się w zależności od krzywizny powierzchni)'', {{incode|finish}} ''(interakcja powierzchni z światłem)'', {{incode|pattern}} ''(agat, cegła, wgłębienia, lampart, promienisty, fale, kafle, fale, drewno, itp.)'' oraz inne właściwości. Istnieje wiele opcji, które można połączyć, aby uzyskać teksturę. To mieszanie nie jest trywialne, ale istnieje wiele przykładów online, które pozwalają uzyskać pożądany wygląd materiału.


<span id="Material_libraries"></span>
==== Material libraries ====
====Biblioteka materiałów====


14. POV-Ray jest dostarczany z obszerną biblioteką materiałów, które mogą być używane według nazwy. Domyślnie szablon projektu udostępnia niektóre materiały za pomocą instrukcji {{incode|#include}} na początku pliku. Materiały te można dowolnie modyfikować.
14. POV-Ray comes with an extensive library of materials that can be used by name. By default, the project template makes available some materials by using {{incode|#include}} statements at the beginning of the file. These materials can be further modified as desired.
{{Code|code=
{{Code|code=
#include "colors.inc"
#include "colors.inc"
Line 323: Line 325:
}}
}}


The library {{incode|colors.inc}} defines basic colors by name, {{incode|Red}}, {{incode|Green}}, {{incode|Blue}}, {{incode|Yellow}}, {{incode|Cyan}}, {{incode|Magenta}}, {{incode|Clear}}, {{incode|White}}, and {{incode|Black}}. It also defines several other shades as well as functions to transform colors. The library {{incode|metals.inc}} contains copper, silver, chrome, and brass textures, and {{incode|golds.inc}} contains the gold textures.
Biblioteka {{incode|colors.inc}} definiuje podstawowe kolory według nazwy, takie jak {{incode|Red}}, {{incode|Green}}, {{incode|Blue}}, {{incode|Yellow}}, {{incode|Cyan}}, {{incode|Magenta}}, {{incode|Clear}}, {{incode|White}} i {{incode|Black}}. Zawiera również kilka innych odcieni oraz funkcje do transformacji kolorów. Biblioteka {{incode|metals.inc}} zawiera tekstury miedzi, srebra, chromu i mosiądzu, a {{incode|golds.inc}} zawiera tekstury złota.


Standardowe biblioteki znajdują się w katalogu instalacyjnym POV-ray, na przykład:
The standard libraries are located in the installation directory of POV-ray, for example
{{Code|code=
{{Code|code=
/usr/share/povray-3.7/include/
/usr/share/povray-3.7/include/
}}
}}


<span id="New_textures"></span>
==== New textures ====
====Nowe tekstury====


15. For example, to create a mirror texture, the {{incode|finish}} is given a high value of {{incode|reflection}}.
Na przykład, aby stworzyć teksturę lustra, właściwości {{incode|finish}} ustawione na wysoką wartość odbicia, czyli {{incode|reflection}}.
{{Code|code=
{{Code|code=
#declare T_mirror = texture {
#declare T_mirror = texture {
Line 339: Line 342:
}}
}}


Alternatywnie, w przypadku metali, można zastosować predefiniowane wykończenie.
Alternatively, for metals, a predefined finish can be used.
{{Code|code=
{{Code|code=
#include "metals.inc"
#include "metals.inc"
Line 347: Line 350:
}}
}}


Następnie można je przypisać do określonego obiektu.
Then it can be assigned to the specific object.
{{Code|code=
{{Code|code=
object {Pov_Body002
object {Pov_Body002
Line 354: Line 357:
}}
}}


The {{incode|woods.inc}} library defines the {{incode|T_Wood7}} texture (yellow pine, ragged grain). It can be used as the basis of a more complex texture, with some additional scaling and translation.
Biblioteka {{incode|woods.inc}} definiuje teksturę {{incode|T_Wood7}} ''(sosna żółta, nieregularne słoje)''. Może być wykorzystana jako podstawa dla bardziej złożonej tekstury, z dodatkowym skalowaniem i translacją.
{{Code|code=
{{Code|code=
#include "woods.inc"
#include "woods.inc"
Line 365: Line 368:
}}
}}


Następnie można ją przypisać do określonego obiektu.
Then it is assigned to the specific object.
{{Code|code=
{{Code|code=
object {Pov_Body
object {Pov_Body
Line 372: Line 375:
}}
}}


The {{incode|glass.inc}} library defines {{incode|F_Glass2}} as a finish for transparent acrylic; it also defines {{incode|I_Glass}} as an interior material which, together with the {{incode|caustics}} option, is used to calculate as close as possible the effects of light passing through a transparent material. In this case, the {{incode|material}} section is used, containing external ({{incode|texture}}) and internal ({{incode|interior}}) information of the material.
Biblioteka {{incode|glass.inc}} definiuje {{incode|F_Glass2}} jako wykończenie dla transparentnego akrylu. Definiuje również {{incode|I_Glass}} jako materiał wewnętrzny, który w połączeniu z opcją {{incode|caustics}} jest używany do obliczenia jak najdokładniejszych efektów światła przechodzącego przez materiał transparentny. W tym przypadku sekcja {{incode|material}} jest używana, zawierając zewnętrzne ''({{incode|texture}})'' i wewnętrzne ''({{incode|interior}})'' informacje o materiale.


{{Code|code=
{{Code|code=
Line 384: Line 387:
}}
}}


Następnie można je przypisać do określonego obiektu.
Then it is assigned to the specific object.
{{Code|code=
{{Code|code=
object {Pov_Body001
object {Pov_Body001
Line 393: Line 396:
[[Image:07_T04_FreeCAD_POVray_render_materials.png|600px|center]]
[[Image:07_T04_FreeCAD_POVray_render_materials.png|600px|center]]


{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, and materials assigned.}}
{{Caption|align=center|Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba oraz przypisanymi materiałami.}}


<span id="Prepare_planes"></span>
=== Prepare planes ===
===Przygotowanie płaszczyzn===


16. Jeśli oryginalny model 3D tego nie zapewnia, można dodać płaszczyzny symulujące podłogę lub blat stołu, na którym stoją obiekty. Więcej płaszczyzn można zdefiniować jako ściany lub inne rodzaje granic.
16. If not provided by the original 3D model, planes can be added to simulate a floor or table top on which the objects are standing. More planes can be defined to serve as walls or other types of boundaries.


Domyślnie tworzona jest pojedyncza płaszczyzna. Jest ona umieszczona 1 milimetr pod modelem, dzięki czemu wygląda jak podłoga. Płaszczyzna ma przypisaną podstawową teksturę, która jest czarna i lekko odblaskowa.
By default, a single plane is created. It is placed 1 millimeter below the model, so that it appears as a floor. The plane is assigned a basic texture that is black and slightly reflective.
{{Code|code=
{{Code|code=
plane {
plane {
Line 407: Line 411:
}}
}}


Notice that in POV-Ray the X axis is defined as horizontal (left-right), the Y axis is defined as vertical (up-down), and the Z axis is defined as depth (front-rear).
Zauważ, że w POV-Ray X jest zdefiniowana jako pozioma ''(lewo-prawo)'', Y jest zdefiniowana jako pionowa ''(góra-dół)'', a Z jest zdefiniowana jako głębokość ''(przód-tył)''.


Aby uzyskać zwykłe szare podłorze, która jest ledwo odblaskowa, użyj:
For a simple gray floor, that is barely reflective use
{{Code|code=
{{Code|code=
plane {
plane {
Line 421: Line 425:
{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, materials assigned, and a floor plane with a basic gray texture.}}
{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, materials assigned, and a floor plane with a basic gray texture.}}


17. Płaszczyźnie można nadać bardziej złożony wygląd za pomocą normalnych i bibliotek materiałów.
17. The plane can be given a more complex appearance with the help of normals and material libraries.


Zdefiniuj mapę normalnych, która zostanie użyta do nadania płaszczyźnie wyglądu parkietu.
Define a normal map that will be used to give the plane the appearance of a parquet floor.


{{Code|code=
{{Code|code=
Line 432: Line 436:
}}
}}


Then define the plane. As {{incode|pigment}} use a wood {{incode|color_map}} defined in {{incode|woods.inc}}, and modify it with {{incode|turbulence}} and {{incode|scale}} so that the wood grain looks random. Then add the created normal, together with another normal; this will result in the texture of the parquet with slight imperfections. Then as {{incode|finish}}, make it a little bit reflective and glossy.
Następnie zdefiniuj płaszczyznę. Jako {{incode|pigment}} użyj tekstury drewna zdefiniowanej w {{incode|woods.inc}}, a następnie zmodyfikuj za pomocą {{incode|turbulence}} i {{incode|scale}}, aby słoje drewna wyglądały losowo. Następnie dodaj utworzoną normalną, razem z inną normalną; spowoduje to efekt tekstury parkietu z lekkimi niedoskonałościami. Na koniec, jako {{incode|finish}}, ustaw nieco odbijający i błyszczący efekt.


{{Code|code=
{{Code|code=
Line 455: Line 459:
[[Image:09_T04_FreeCAD_POVray_render_floor_wood.png|600px|center]]
[[Image:09_T04_FreeCAD_POVray_render_floor_wood.png|600px|center]]


{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, materials assigned, and a floor plane with a parquet texture.}}
{{Caption|align=center|Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami i płaszczyzną podłogi z teksturą parkietu.}}


18. Dodaj drugą płaszczyznę, tym razem prostopadłą do kierunku Z, aby służyła jako ściana tylna. Przesuń ją nieco za model, aby uniknąć zakrycia lustra. Dołącz bibliotekę {{incode|stones.inc}}, dodaj ogólną teksturę granitu i nieco ją przeskaluj. Spowoduje to uzyskanie wyglądu prostej suchej ściany.
18. Add a second plane, this time perpendicular to the Z direction, to serve as a backwall. Displace it just a little bit behind the model to avoid covering the mirror. Include the {{incode|stones.inc}} library, add a generic granite texture, and scale it a bit. This will result in the appearance off a simple dry wall.


{{Code|code=
{{Code|code=
Line 470: Line 474:
}}
}}


Trzecią płaszczyznę można dodać za pozycją kamery, tak aby lustro odbijało ograniczony obszar między dwiema ścianami.
A third plane can be added behind the position of the camera so that the mirror reflects a limited area between the two walls.


{{Code|code=
{{Code|code=
Line 485: Line 489:
[[Image:10_T04_FreeCAD_POVray_render_floor_wood_walls.png|600px|center]]
[[Image:10_T04_FreeCAD_POVray_render_floor_wood_walls.png|600px|center]]


{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, materials assigned, a floor plane with a parquet texture, and back walls with drywall textures.}}
{{Caption|align=center|Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami, płaszczyzną podłogi z teksturą parkietu i tylnymi ścianami z teksturami płyt kartonowo-gipsowych.}}


<span id="Prepare_the_global_settings,_radiosity"></span>
===Prepare the global settings, radiosity===
===Przygotuj ustawienia globalne, radiosity===


19. Ustawienia globalne definiują oświetlenie otoczenia.
19. The global settings define ambient light.


{{Code|code=
{{Code|code=
Line 499: Line 504:
}}
}}


The {{incode|radiosity}} property inside the {{incode|global_settings}} controls the way POV-Ray computes diffuse light interactions between different objects. It's essential to adjust this property to obtain good rendering results.
Właściwość {{incode|radiosity}} wewnątrz {{incode|global_settings}} kontroluje sposób, w jaki POV-Ray oblicza interakcje rozproszonego światła między różnymi obiektami. Dostosowanie tej właściwości jest niezbędne do uzyskania dobrych wyników renderowania.


Because it can be time consuming to test different {{incode|radiosity}} settings you can use a variable {{incode|Rad_Quality}} and a {{incode|#switch}} statement to quickly set low, medium or high quality render settings. The higher the quality settings the more time is required to render an image.
Ponieważ testowanie różnych ustawień {{incode|radiosity}} może być czasochłonne, można użyć zmiennej {{incode|Rad_Quality}} i instrukcji {{incode|#switch}}, aby szybko ustawić niską, średnią lub wysoką jakość renderowania. Im wyższe ustawienia jakości, tym więcej czasu potrzeba na wyrenderowanie obrazu.


{{Code|code=
{{Code|code=
Line 545: Line 550:
[[Image:11_T04_FreeCAD_POVray_render_floor_wood_walls_radiosity_1.png|600px|center]]
[[Image:11_T04_FreeCAD_POVray_render_floor_wood_walls_radiosity_1.png|600px|center]]


{{Caption|align=center|Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, materials assigned, a floor plane with a parquet texture, and back walls with drywall textures. Radiosity settings for fast rendering.}}
{{Caption|align=center|Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami, płaszczyzną podłogi z teksturą parkietu i tylnymi ścianami z teksturami płyt kartonowo-gipsowych. Ustawienia Radiosity dla szybkiego renderowania.}}


20. Biblioteka {{incode|rad_def.inc}} definiuje makro do szybkiej konfiguracji {{incode|radiosity}} do predefiniowanej konfiguracji.
20. Biblioteka {{incode|rad_def.inc}} definiuje makro do szybkiej konfiguracji {{incode|radiosity}} do predefiniowanej konfiguracji.

Latest revision as of 09:58, 19 March 2024

Środowisko Raytracing zostało zastąpione przez nowe środowisko Render, które ma je zastąpić. Środowisko pracy Render może być zainstalowane poprzez Menadżer dodatków. Informacja tutaj jest podana, ponieważ domyślnie FreeCAD jest nadal dostarczany (od wersji 0.19-24276) ze środowiskiem Raytracing, i ponieważ nowy moduł powinien w zasadzie działać w ten sam sposób.
Ćwiczenie
Temat
Renderowanie
Poziom trudności
średniozaawansowany
Czas wykonania
120 minut
Autorzy
vocx
Wersja FreeCAD
0.18 lub nowszy
Pliki z przykładami
brak
Zobacz również
-

Wprowadzenie

Ten poradnik pokazuje jak stworzyć wyrenderowany obraz w programie FreeCAD, używając renderera POV-Ray. Zakłada on, że użytkownik stworzył już część lub złożenie w FreeCAD, lub zaimportował je do niego. Do wytworzenia pliku do renderowania użyto środowiska pracy Raytracing.

Ten poradnik jest oparty na poście forum autorstwa schupin FreeCAD / pov ray tutorial, który zawiera również jeden .pov plik wymagany do produkcji renderingu.

Przykład autorstwa użytkownika schupin modelu 3D i wysokiej jakości renderu wykonanego za pomocą programu FreeCAD i POV-Ray.

Pliki użyte w tym poradniku znajdują się w poście #8 w tym samym wątku.

Konfiguracja podstawowa

Postępuj zgodnie z podstawowym przepływem pracy opisanym w dokumentacji środowiska pracy Raytracing.

Aby renderowanie bezpośrednie działało, wykonawczy plik povray musi być ustawiony w Edycja → Preferencje ...→ Raytracing → Renderowanie → Plik wykonywalny POV-Ray. Ustaw go na swoją lokalizację w systemie, na przykład /usr/bin/povray. Inne opcje używane przez renderowanie mogą być również zdefiniowane tutaj, włączając szerokość +W i wysokość +H obrazu, oraz użycie antyaliasingu +A.

Przygotowanie pliku .pov

1. Stwórz projekt korzystając z części wytworzonych za pomocą środowiskCzęść, Projekt Części czy dowolnego innego które pozwoli na stworzenie bryły jak na przykład środowisko Architektura. Następnie przypisz elementom kolory lub materiały tak by w przybliżeniu przypominały ostateczny docelowy wygląd.

Złożenie trzech elementów w FreeCAD, z wstępnie przypisanymi kolorami lub / i materiałami.

2. Jeśli twój model jest bardzo szczegółowy, upewnij się, że wartość WIDOKOdchyłka zawartości jest ustawiona na niską wielkość, pomiędzy 0.1 a 0.01, lub nawet mniejszą. Im niższa jest ta wartość, tym bardziej szczegółowa będzie wyeksportowana siatka, a co za tym idzie, tym lepsza będzie jakość otrzymanego renderu.

Właściwość odchylenia zawartości utworzonych w programie FreeCAD. Wartość odchylenia musi być małe, aby można było eksportować części z dobrą rozdzielczością.

3. Utwórz projekt POV-Ray, klikając Nowy. Jeśli widok jest ustawiony jako ortogonalny, zmień go na perspektywiczny, ponieważ renderer zazwyczaj pracuje z kamerą o widoku perspektywicznym. Użycie widoku perspektywicznego pozwoli ci lepiej zobaczyć rodzaj sceny, który zostanie zrenderowany.

4. Zaznacz wszystkie obiekty, które chcesz dodać do sceny, a następnie zaznacz utworzony obiekt PovProject i kliknij przycisk Wstaw część.

Uwaga: należy uważać na obiekty, które nie są aktualnie widoczne w rzutni 3D. Jeśli są one niewidoczne, ale znajdują się w scenie, nadal będą renderowane. Z drugiej strony, jeśli naprawdę chcesz pominąć bryłę w renderowaniu, nie wybieraj jej do włączenia do projektu POV-Ray.

Uwaga 2: Wszystkie obiekty w projekcie POV-Ray będą miały nazwę opartą na ich wewnętrznej nazwie FreeCAD. Ważne jest, aby pamiętać, która jest nazwą POV-Ray, ponieważ dalsze opcje, na przykład tekstury materiałów, zostaną przypisane do tych nazw POV-Ray.

5. W widoku 3D, przybliż, przesuń i obróć widok, aby ustawić scenę zgodnie z własnymi preferencjami. Upewnij się, że obiekty są wyśrodkowane w widoku, a następnie wybierz utworzony obiekt PovProject i kliknij przycisk Resetuj kamerę.

6. Plik POV-Ray jest teraz gotowy. Zawiera wybrane obiekty oraz informacje o kamery. Wybierz utworzony obiekt PovProject, a następnie kliknij przycisk Eksportuj projekt aby zapisać plik .pov.

7. Utworzony plik .pov może teraz być renderowany bezpośrednio z programu FreeCAD. Wybierz utworzony obiekt PovProject, a następnie kliknij przycisk Renderuj. Gdy pojawi się obraz w wyskakującym okienku, kliknij na niego, aby został przesłany do programu FreeCAD w swojej własnej karcie okna.

Pierwszy render zespołu wykonany za pomocą POV-Ray, ze standardowym szablonem napisanym przez środowisko pracy Raytracing.

7.1. Mając już utworzony plik .pov, możliwe jest również uruchomienie povray z wiersza poleceń.

povray assembly.pov +W800 +H600 +AM2 +A

Opcje +WX +HY ustawiają poziomy i pionowy rozmiar pikseli końcowego obrazu.

Opcje +AM2 (typ 2, rekurencyjne superpróbkowanie) i +A (typ 2, rekursywne super-próbkowanie) i +A uruchamiają antyaliasing w celu uzyskania gładszego obrazu.

8. Klikając dwukrotnie obiekt PovProject można zobaczyć, że używa on szablonu ProjectStd.pov. Szablon ten tworzy podstawowy plik .pov, który wygeneruje prosty i ciemny obraz.

Aby poprawić wygląd obrazu, użyj lepszego szablonu. Kliknij dwukrotnie obiekt PovProject i wybierz szablon RadiosityNormal.pov. Następnie wyeksportuj nowy plik .pov i ponownie uruchom renderer. Obraz powinien wyglądać jaśniej i ogólnie lepiej.

Render zespołu wykonanego za pomocą POV-Ray, z szablonem RadiosityNormal napisanym przy użyciu środowiska Raytracing.

Ponownie kliknij dwukrotnie obiekt PovProject i wybierz szablon RadiosityOutdoorHQ.pov. Następnie wyeksportuj nowy plik .pov i ponownie uruchom renderer. Tworzenie obrazu powinno potrwać dłużej, ale wynik powinien mieć lepszą jakość.

Render zespołu wykonany za pomocą POV-Ray, z szablonem RadiosityOutdoorHQ napisanym przy użyciu środowiska Raytracing.

Jeśli wyrenderowany obraz jest wystarczająco dobry, można go zapisać i nie trzeba nic więcej robić. Aby jednak precyzyjnie kontrolować wygląd materiałów i uzyskać jeszcze lepsze rezultaty, plik .pov należy edytować ręcznie.

W kolejnych sekcjach edytujemy podstawowy plik .pov utworzony przy użyciu szablonu ProjectStd.

Edycja pliku .pov

9. Wygenerowany przez FreeCAD plik .pov to zwykły plik tekstowy, który można otworzyć za pomocą dowolnego edytora. Luźno przypomina plik źródłowy w języku C++: dyrektywy zaczynają się od znaku krzyżyka # i kończą średnikiem ;. Nawiasy klamrowe { } są używane do ograniczenia bloków sekcji, a wcięcia to dowolne białe znaki. Komentarze są oznaczane podwójnym ukośnikiem //. Komentarze blokowe można zdefiniować za pomocą pary /* */, podobnie jak w języku C.

Na początku plik może wyglądać na skomplikowany, ale 90% jego zawartości to tylko dane siatki, które nie wymagają wielu zmian, ponieważ siatki te reprezentują geometrię ciał, które chcemy renderować.

Plik jest zorganizowany w następujący sposób:

  • Dołączenia,
  • Globalne ustawienia,
  • Sfera nieba,
  • Płaszczyzny,
  • Wykończenia i tekstury,
  • Kamera,
  • Informacje o siatce i bryle,
  • Źródło światła.

Informacje o kamerze nie zostaną zmienione, podobnie jak większość informacji w siatkach. Główne modyfikacje zostaną wprowadzone w pozostałych sekcjach.

Ponieważ siatki nie będą mocno modyfikowane, plik można przeorganizować tak, aby te informacje znajdowały się na końcu pliku.

To jest kompletna zawartość pliku .pov, bez siatek.

// Persistence of Vision Ray Tracer Scene Description File
// for FreeCAD (http://www.freecadweb.org)

#version 3.6;

#include "colors.inc"
#include "metals.inc"

// ----------------------------------------

global_settings {
    assumed_gamma 1.0
    ambient_light color rgb <1.0,1.0,1.0>
    max_trace_level 20
}  

// ----------------------------------------


sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]
      [0.7 rgb <0.0,0.1,0.8>]
    }
  }
}


// ----------------------------------------

plane {
  y, -1
  texture { pigment {rgb <0.0,0.0,0.0>} finish {ambient 0.0 reflection 0.05 specular 0.0} }
}

// Standard finish
//#declare StdFinish = F_MetalA;
//#declare StdFinish = finish { diffuse 0.7 };
//#declare StdFinish = finish { phong 0.5 };
//#declare StdFinish = finish { ambient rgb <0.5,0.5,0.5> };
//#declare StdFinish = finish { crand 0.5 phong 0.9};
#declare StdFinish = finish { ambient 0.01 diffuse 0.9 phong 1.0 phong_size 70 metallic brilliance 1.5} ;

// declares position and view direction

// Generated by FreeCAD (http://www.freecadweb.org/)
#declare cam_location =  <-171.753,1229.11,-2667.08>;
#declare cam_look_at  = <636.959,359.955,160.296>;
#declare cam_sky      = <0.068217,0.958943,0.275273>;
#declare cam_angle    = 45; 
camera {
  location  cam_location
  look_at   cam_look_at
  sky       cam_sky
  angle     cam_angle 
  right x*800/600
}
// Written by FreeCAD http://www.freecadweb.org/
// face number1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ... meshes should be defined here until the end of the file ...




//default light
light_source {
  cam_location + cam_angle * 100
  color rgb <10, 10, 10>
}

Podstawowa reorganizacja

10. Otwórz plik `.pov` za pomocą edytora tekstu, przejdź do końca pliku, zaznacz i wyciągnij sekcję `light_source`, a następnie wklej ją przed pierwszą linią z komentarzem `//face number1`.

Plik wynikowy powinien mieć sekcje camera i light_source obok siebie, na przykład:

// Generated by FreeCAD (http://www.freecadweb.org/)
#declare cam_location =  <-171.753,1229.11,-2667.08>;
#declare cam_look_at  = <636.959,359.955,160.296>;
#declare cam_sky      = <0.068217,0.958943,0.275273>;
#declare cam_angle    = 45; 
camera {
  location  cam_location
  look_at   cam_look_at
  sky       cam_sky
  angle     cam_angle 
  right x*800/600
}

//default light
light_source {
  cam_location + cam_angle * 100
  color rgb <10, 10, 10>
}
// Written by FreeCAD http://www.freecadweb.org/
// face number1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.
.
.

Przygotowanie oświetlenia

11. Domyślnie plik projektu definiuje jedno światło z pozycją i kolorem.

light_source {
  cam_location + cam_angle * 100
  color rgb <10, 10, 10>
}

Pozycja światła jest określana przez wektor <x, y, z>. Kolor może być określony jako wektor <r, g, b> lub można użyć nazwanego koloru, takiego jak White. Jeśli podano wartości RGB, powinny się one zawierać w zakresie od 0.0 do 1.0, aby światło miało normalną jasność.

Podobnie jak inne obiekty, światło można modyfikować za pomocą wielu opcji. Opcja area_light tworzy źródło prostokątne, co jest bardziej realistyczne, ponieważ powoduje rozproszone oświetlenie tworzące miękkie cienie. Słowo kluczowe adaptive pomaga zmniejszyć czas obliczeń ścieżek świetlnych; im większa wartość, tym dokładniejszy będzie wynik; aby uniknąć długiego czasu renderowania, należy użyć najmniejszej wartości całkowitej, która daje akceptowalny wynik (zwykle wystarczy 1 lub 2). Dla uzyskania najlepszego rezultatu usuń całkowicie słowo kluczowe (długi czas renderowania). Słowo kluczowe jitter pomaga poprawić cienie poprzez losowe przesunięcie pozycji świateł. Słowa kluczowe circular i orient zamieniają światło obszarowe w źródło sferyczne, co pozwoli uzyskać lepsze cienie w przypadku obiektów zaokrąglonych na scenie. Włączenie fade_distance i fade_power jest pomocne w tłumieniu wartości światła wraz z odległością, tak jak ma to miejsce w przypadku prawdziwego źródła światła.

Ustaw światło padające z prawej strony i z góry.

light_source {
    <1200, 1000, -1300>
    color White
    area_light <100, 0, 0>, <0, 0, 100>, 20, 20
    adaptive 1
    jitter
    circular orient
    fade_distance 1000 fade_power 2
}

Jeśli źródło światła ma znajdować się w scenie, przydatne może być wyświetlenie na ekranie odniesienia do miejsca, w którym to źródło powinno się znajdować. W tym celu utwórz kulę o małym promieniu i załóż, że reprezentuje ona źródło światła. Umieść kulę w wybranym miejscu, a następnie przesuń światło bardzo blisko tych współrzędnych i przetestuj oświetlenie sceny. Gdy będziesz zadowolony z położenia światła, po prostu usuń kulę.

sphere {
    <1200, 1000, -1200>, 10
    pigment { color White }
}

12. Sekcja sky_sphere służy do stworzenia realistycznego tła nieba. Zazwyczaj definiuje się je jako gradient oraz color_map składający się przynajmniej z dwóch kolorów, aby uzyskać płynny przejście od koloru horyzontu do koloru zenitu sceny.

sky_sphere {
    pigment {
        gradient y
        color_map {
            [0.0 color Gray50]
            [0.7 color White]
        }
    }
}

Zaczynając od standardowego szablonu, wyrenderuj scenę za pomocą POV-Ray, z ustawionym źródłem światła i sferą nieba.

Przygotowanie tekstur obiektów

13. Tekstury każdego elementu muszą zostać dopasowane. Jest to najbardziej czasochłonne zadanie w tym procesie.

W pliku .pov każdy element jest opisane w ten sposób:

  • Face1, Face2, Face3, Face4, ...
  • Element (suma zbiorów ścian),
  • Obiekt.

Siatka elementu jest określana przez ściany, a każda ściana jest określana przez serię trójkątnych elementów, które same są określane przez vertex_vectors, normal_vectors, i face_indices. Te informacje nie wymagają żadnych zmian. Następnie, każdy element jest zdefiniowany jako suma określonych ścian. Ponownie, te informacje nie wymagają modyfikacji.

Wreszcie, każdy object do wyrenderowania jest definiowany jako jeden z określonych elementów, z określoną texture, która sama jest definiowana przez właściwości takie jak pigment i finish.

// instance to render
object {Pov_Body
 texture {
      pigment {color rgb <0.827451,0.827451,0.431373>}
      finish {StdFinish } //definition on top of the project
  }
}

Przeszukując plik .pov pod kątem słowa kluczowego object, można przejść bezpośrednio do wybranej części pliku i odpowiednio zmodyfikować jej texture.

Jak wskazano w komentarzu, definicja StdFinish znajduje się na górze pliku, w tym przypadku przed informacjami o kamerze. Wartość ta może być zadeklarowana na wiele sposobów, jako kombinacja różnych właściwości, jak pokazano w zakomentowanych i niezakomentowanych liniach.

// Standard finish
//#declare StdFinish = F_MetalA;
//#declare StdFinish = finish { diffuse 0.7 };
//#declare StdFinish = finish { phong 0.5 };
//#declare StdFinish = finish { ambient rgb <0.5,0.5,0.5> };
//#declare StdFinish = finish { crand 0.5 phong 0.9};
#declare StdFinish = finish { ambient 0.01 diffuse 0.9 phong 1.0 phong_size 70 metallic brilliance 1.5} ;

Generalnie, tekstura texture to kontener opisujący materiał. Zawiera informacje takie jak pigment (kolor lub grafika), normal (jak kolor zmienia się w zależności od krzywizny powierzchni), finish (interakcja powierzchni z światłem), pattern (agat, cegła, wgłębienia, lampart, promienisty, fale, kafle, fale, drewno, itp.) oraz inne właściwości. Istnieje wiele opcji, które można połączyć, aby uzyskać teksturę. To mieszanie nie jest trywialne, ale istnieje wiele przykładów online, które pozwalają uzyskać pożądany wygląd materiału.

Biblioteka materiałów

14. POV-Ray jest dostarczany z obszerną biblioteką materiałów, które mogą być używane według nazwy. Domyślnie szablon projektu udostępnia niektóre materiały za pomocą instrukcji #include na początku pliku. Materiały te można dowolnie modyfikować.

#include "colors.inc"
#include "metals.inc"

Biblioteka colors.inc definiuje podstawowe kolory według nazwy, takie jak Red, Green, Blue, Yellow, Cyan, Magenta, Clear, White i Black. Zawiera również kilka innych odcieni oraz funkcje do transformacji kolorów. Biblioteka metals.inc zawiera tekstury miedzi, srebra, chromu i mosiądzu, a golds.inc zawiera tekstury złota.

Standardowe biblioteki znajdują się w katalogu instalacyjnym POV-ray, na przykład:

/usr/share/povray-3.7/include/

Nowe tekstury

Na przykład, aby stworzyć teksturę lustra, właściwości finish są ustawione na wysoką wartość odbicia, czyli reflection.

#declare T_mirror = texture {
    finish { reflection {0.9} }
}

Alternatywnie, w przypadku metali, można zastosować predefiniowane wykończenie.

#include "metals.inc"
#declare T_mirror = texture {
    finish { F_MetalE }
}

Następnie można je przypisać do określonego obiektu.

object {Pov_Body002
    texture { T_mirror }
}

Biblioteka woods.inc definiuje teksturę T_Wood7 (sosna żółta, nieregularne słoje). Może być wykorzystana jako podstawa dla bardziej złożonej tekstury, z dodatkowym skalowaniem i translacją.

#include "woods.inc"
#declare T_wood = texture {
    T_Wood7
    scale 50.0
    translate x*1
    translate y*10
}

Następnie można ją przypisać do określonego obiektu.

object {Pov_Body
    texture { T_wood }
}

Biblioteka glass.inc definiuje F_Glass2 jako wykończenie dla transparentnego akrylu. Definiuje również I_Glass jako materiał wewnętrzny, który w połączeniu z opcją caustics jest używany do obliczenia jak najdokładniejszych efektów światła przechodzącego przez materiał transparentny. W tym przypadku sekcja material jest używana, zawierając zewnętrzne (texture) i wewnętrzne (interior) informacje o materiale.

#declare M_vase = material {
    texture {
        pigment { color rgbf <1.0, 0.73333, 0.0, 0.75> }
        finish { F_Glass2 }
    }
    interior { I_Glass caustics 1.0 }
}

Następnie można je przypisać do określonego obiektu.

object {Pov_Body001
    material { M_vase }
}

Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba oraz przypisanymi materiałami.

Przygotowanie płaszczyzn

16. Jeśli oryginalny model 3D tego nie zapewnia, można dodać płaszczyzny symulujące podłogę lub blat stołu, na którym stoją obiekty. Więcej płaszczyzn można zdefiniować jako ściany lub inne rodzaje granic.

Domyślnie tworzona jest pojedyncza płaszczyzna. Jest ona umieszczona 1 milimetr pod modelem, dzięki czemu wygląda jak podłoga. Płaszczyzna ma przypisaną podstawową teksturę, która jest czarna i lekko odblaskowa.

plane {
  y, -1
  texture { pigment {rgb <0.0,0.0,0.0>} finish {ambient 0.0 reflection 0.05 specular 0.0} }
}

Zauważ, że w POV-Ray oś X jest zdefiniowana jako pozioma (lewo-prawo), oś Y jest zdefiniowana jako pionowa (góra-dół), a oś Z jest zdefiniowana jako głębokość (przód-tył).

Aby uzyskać zwykłe szare podłorze, która jest ledwo odblaskowa, użyj:

plane {
  y, -1
  texture { pigment {rgb <0.3, 0.3, 0.3>} finish {ambient 0.0 reflection 0.01 specular 0.0} }
}

Starting from the standard template, render of the scene with POV-Ray, with the light source and sky sphere set up, materials assigned, and a floor plane with a basic gray texture.

17. Płaszczyźnie można nadać bardziej złożony wygląd za pomocą normalnych i bibliotek materiałów.

Zdefiniuj mapę normalnych, która zostanie użyta do nadania płaszczyźnie wyglądu parkietu.

#declare Parquet_normal = normal {
    gradient z 2 slope_map { [0 <0,1>][0.05 <1,0>][0.95 <1,0>][1 <0,-1>] }
    scale 80
} ;

Następnie zdefiniuj płaszczyznę. Jako pigment użyj tekstury drewna zdefiniowanej w woods.inc, a następnie zmodyfikuj ją za pomocą turbulence i scale, aby słoje drewna wyglądały losowo. Następnie dodaj utworzoną normalną, razem z inną normalną; spowoduje to efekt tekstury parkietu z lekkimi niedoskonałościami. Na koniec, jako finish, ustaw nieco odbijający i błyszczący efekt.

#include "woods.inc"
plane {
    y, -1
    pigment {
        wood color_map { M_Wood8A }
        turbulence 0.5 scale <10, 1, 1>*20
    }
    normal {
        average normal_map {
          [1 Parquet_normal]
          [1 wood 0.5 slope_map { [0 <0,0>][0.5 <0.5,1>][1 <1,0>] }
              turbulence 0.5 scale <10, 1, 1>*20]
        }
    }
    finish { ambient 0.0 reflection 0.1 specular 0.2 }
}

Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami i płaszczyzną podłogi z teksturą parkietu.

18. Dodaj drugą płaszczyznę, tym razem prostopadłą do kierunku Z, aby służyła jako ściana tylna. Przesuń ją nieco za model, aby uniknąć zakrycia lustra. Dołącz bibliotekę stones.inc, dodaj ogólną teksturę granitu i nieco ją przeskaluj. Spowoduje to uzyskanie wyglądu prostej suchej ściany.

#include "stones.inc"
plane {
    z, 10
    texture {
        T_Grnt1   
        scale 0.02
    }
}

Trzecią płaszczyznę można dodać za pozycją kamery, tak aby lustro odbijało ograniczony obszar między dwiema ścianami.

#include "stones.inc"
plane {
    z, -3700
    texture {
        T_Grnt1   
        scale 0.02
    }
}

Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami, płaszczyzną podłogi z teksturą parkietu i tylnymi ścianami z teksturami płyt kartonowo-gipsowych.

Przygotuj ustawienia globalne, radiosity

19. Ustawienia globalne definiują oświetlenie otoczenia.

global_settings {
    assumed_gamma 1.0
    ambient_light color rgb <1.0,1.0,1.0>
    max_trace_level 20
}

Właściwość radiosity wewnątrz global_settings kontroluje sposób, w jaki POV-Ray oblicza interakcje rozproszonego światła między różnymi obiektami. Dostosowanie tej właściwości jest niezbędne do uzyskania dobrych wyników renderowania.

Ponieważ testowanie różnych ustawień radiosity może być czasochłonne, można użyć zmiennej Rad_Quality i instrukcji #switch, aby szybko ustawić niską, średnią lub wysoką jakość renderowania. Im wyższe ustawienia jakości, tym więcej czasu potrzeba na wyrenderowanie obrazu.

#declare Rad_Quality = 1;

global_settings {
    assumed_gamma 1.0
    ambient_light color rgb <1.0,1.0,1.0>
    max_trace_level 20

#switch (Rad_Quality)
 #case (1)
    radiosity { // Settings 1 (fast)
        pretrace_start 0.08
        pretrace_end   0.02
        count 50
        error_bound 0.5
        recursion_limit 1
    }
    #break
 #case (2)
    radiosity { // Settings 2 (medium quality)
        pretrace_start 0.08
        pretrace_end   0.01
        count 120
        error_bound 0.25
        recursion_limit 1
    }
    #break
 #case (3)
    radiosity { // Settings 3 (high quality)
        pretrace_start 0.08
        pretrace_end   0.005
        count 400
        error_bound 0.1
        recursion_limit 2
    }
    #break
#end
}

Zaczynając od standardowego szablonu, render sceny w POV-Ray, z ustawionym źródłem światła i sferą nieba, przypisanymi materiałami, płaszczyzną podłogi z teksturą parkietu i tylnymi ścianami z teksturami płyt kartonowo-gipsowych. Ustawienia Radiosity dla szybkiego renderowania.

20. Biblioteka rad_def.inc definiuje makro do szybkiej konfiguracji radiosity do predefiniowanej konfiguracji.

#include "rad_def.inc"
global_settings {
    radiosity {
        Rad_Settings(Setting, Normal, Media)
    }
}

Wartość Setting może być jedną z predefiniowanych stałych:

Radiosity_Default
Radiosity_Debug
Radiosity_Fast
Radiosity_Normal
Radiosity_2Bounce
Radiosity_Final
Radiosity_OutdoorLQ
Radiosity_OutdoorHQ
Radiosity_OutdoorLight
Radiosity_IndoorLQ
Radiosity_IndoorHQ

Wartości Normal i Media to albo off albo on.

Dlatego, aby przetestować różne ustawienia, instrukcja #switch może być również napisana jak poniżej.

#declare Rad_Quality = 3;

global_settings {
    assumed_gamma 1.0
    ambient_light color rgb <1.0,1.0,1.0>
    max_trace_level 20

#switch (Rad_Quality)
 #case (1)
    radiosity { // Settings 1 (fast)
        Rad_Settings(Radiosity_Fast, off, off)
    }
    #break
 #case (2)
    radiosity { // Settings 2 (medium quality)
        Rad_Settings(Radiosity_2Bounce, on, on)
    }
    #break
 #case (3)
    radiosity{ // Settings 3 (high quality)
        Rad_Settings(Radiosity_Final, on, on)
        recursion_limit 2
    }
    #break
#end
}

Dokładne wartości używane przez te ustawienia można znaleźć w pliku rad_def.inc, który znajduje się na przykład w katalogu instalacyjnym POV-Ray:

/usr/share/povray-3.7/include/

W środowisku pracy Raytracing są trzy domyślne szablony: - ProjectStd.pov, który w ogóle nie używa radiosity. - RadiosityNormal.pov, który używa predefiniowanego ustawienia Radiosity_Normal. - RadiosityOutdoorHQ.pov, który używa predefiniowanego ustawienia Radiosity_OutdoorHQ.

Renderowanie końcowe

21. Edytowany plik .pov można zapisać po wprowadzeniu wszystkich zmian.

Ostateczna struktura wygląda następująco:

  • Włączenia, z dodatkowymi bibliotekami,
  • Globalne ustawienia, z parametrami radiosity,
  • Sfera niebieska, z jaśniejszym kolorem,
  • Płaszczyzny, ustawione i z teksturami,
  • Wykończenia i tekstury, z własnymi definicjami,
  • Kamera, niezmieniona,
  • Źródło światła, z dodatkowymi właściwościami,
  • Informacje o siatce i bryłach, korzystające z wcześniej zdefiniowanych tekstur.

Uwaga: sekcje pliku .pov mogą być w dowolnej kolejności, choć prawdopodobnie łatwiej będzie pracować z plikiem, jeśli informacje o siatce będą na końcu.

Ostateczny rendering można wykonać klikając Render lub uruchamiając plik wykonywalny z wiersza poleceń.

povray assembly.pov +W800 +H600 +AM2 +A

Rozpocznij od standardowego szablonu, wyrenderuj scenę z użyciem POV-Ray, gdzie źródło światła i sfera niebieska są skonfigurowane, materiały przypisane, płaszczyzna podłogi z teksturą parkietu, a tylne ściany z teksturami gipsowymi. Ustawienia radiosity dla wysokiej jakości wyniku: Radiosity_Final oraz recursion_limit 2.

To jest kompletna zawartość pliku .pov, bez ostatniej sekcji, czyli bez siatek.

// Persistence of Vision Ray Tracer Scene Description File
// for FreeCAD (http://www.freecadweb.org)

#version 3.6;

#include "colors.inc"
#include "metals.inc"
#include "woods.inc"
#include "glass.inc"
#include "stones.inc"
#include "rad_def.inc"

// ----------------------------------------
#declare Rad_Quality = 3;

global_settings {
    assumed_gamma 1.0
    ambient_light color rgb <1.0,1.0,1.0>
    max_trace_level 20

#switch (Rad_Quality)
 #case (1)
    radiosity { // Settings 1 (fast)
        Rad_Settings(Radiosity_Fast, off, off)
    }
    #break
 #case (2)
    radiosity { // Settings 2 (medium quality)
        Rad_Settings(Radiosity_2Bounce, on, on)
    }
    #break
 #case (3)
    radiosity{ // Settings 3 (high quality)
        Rad_Settings(Radiosity_Final, on, on)
        recursion_limit 2
    }
    #break
#end
}

// ----------------------------------------


sky_sphere {
    pigment {
        gradient y
        color_map {
            [0.0 color Gray50]
            [0.7 color White]
        }
    }
}


// ----------------------------------------

#declare Parquet_normal = normal {
    gradient z 2 slope_map { [0 <0,1>][0.05 <1,0>][0.95 <1,0>][1 <0,-1>] }
    scale 80
} ;

// Floor
plane {
    y, -1
    pigment {
        wood color_map { M_Wood8A }
        turbulence 0.5 scale <10, 1, 1>*20
    }
    normal {
        average normal_map {
          [1 Parquet_normal]
          [1 wood 0.5 slope_map { [0 <0,0>][0.5 <0.5,1>][1 <1,0>] }
              turbulence 0.5 scale <10, 1, 1>*20]
        }
    }
    finish { ambient 0.0 reflection 0.1 specular 0.2 }
}

// Back wall
plane {
    z, 10
    texture {
        T_Grnt1   
        scale 0.02
    }
}

// Behind camera wall
plane {
    z, -3700
    texture {
        T_Grnt1   
        scale 0.02
    }
}

#declare T_mirror = texture {
    finish { reflection {0.9} }
//    finish { F_MetalE }
}

#declare T_wood = texture {
    T_Wood7
    scale 50.0
    translate x*1
    translate y*10
}

#declare M_vase = material {
    texture {
        pigment { color rgbf <1.0, 0.73333, 0.0, 0.75> }
        finish { F_Glass2 }
    }
    interior { I_Glass caustics 1.0 }
}
// declares position and view direction

// Generated by FreeCAD (http://www.freecadweb.org/)
#declare cam_location =  <-171.753,1229.11,-2667.08>;
#declare cam_look_at  = <636.959,359.955,160.296>;
#declare cam_sky      = <0.068217,0.958943,0.275273>;
#declare cam_angle    = 45; 
camera {
  location  cam_location
  look_at   cam_look_at
  sky       cam_sky
  angle     cam_angle 
  right x*800/600
}
//default light
light_source {
    <1200, 1000, -1300>
    color White
    area_light <100, 0, 0>, <0, 0, 100>, 20, 20
    adaptive 1
    jitter
    circular orient
    fade_distance 1000 fade_power 2
}
// Written by FreeCAD http://www.freecadweb.org/
// face number1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ... meshes should be defined here until the end of the file ...

Uwagi końcowe

POV-Ray to stosunkowo stary program, który został wydany na początku lat 90. Jego główne zalety w porównaniu z bardziej nowoczesnymi oprogramowaniami to:

  • jest to przetestowane rozwiązanie, które istnieje od wielu lat,
  • działa w wielu systemach operacyjnych,
  • scena może być ustawiona za pomocą jednego pliku tekstowego,
  • do wygenerowania wysokiej jakości obrazu wymaga prostych zasobów obliczeniowych, dlatego działa nawet na stosunkowo starym sprzęcie.

Użytkownikowi zaleca się przeczytanie dokumentacji POV-Ray oraz zapoznanie się z dodatkowymi samouczkami lub przykładami, aby uzyskać odpowiednie ustawienia zgodne z jego potrzebami.