init
BIN
.vs/grk-project/v16/.suo
Normal file
BIN
.vs/grk-project/v16/Browse.VC.db
Normal file
BIN
.vs/grk-project/v16/ipch/AutoPCH/93186acbe2fd162b/MAIN.ipch
Normal file
BIN
Debug/grk-cw1.exe
Normal file
BIN
Debug/grk-cw1.pdb
Normal file
BIN
Debug/grk-cw2.exe
Normal file
BIN
Debug/grk-cw2.pdb
Normal file
BIN
Debug/grk-cw3.exe
Normal file
BIN
Debug/grk-cw3.pdb
Normal file
BIN
Debug/grk-cw4.exe
Normal file
BIN
Debug/grk-cw4.pdb
Normal file
BIN
Debug/grk-cw5.exe
Normal file
BIN
Debug/grk-cw5.pdb
Normal file
BIN
Debug/grk-cw7.exe
Normal file
BIN
Debug/grk-cw7.pdb
Normal file
BIN
Debug/grk-cw8.exe
Normal file
BIN
Debug/grk-cw8.pdb
Normal file
BIN
Debug/grk-cw9.exe
Normal file
BIN
Debug/grk-cw9.pdb
Normal file
BIN
Debug/room.exe
Normal file
BIN
Debug/room.pdb
Normal file
BIN
assimp-vc141-mt.dll
Normal file
BIN
assimp-vc141-mtd.dll
Normal file
BIN
cw 9/Debug/Box.obj
Normal file
BIN
cw 9/Debug/Camera.obj
Normal file
BIN
cw 9/Debug/Render_Utils.obj
Normal file
BIN
cw 9/Debug/SOIL.obj
Normal file
BIN
cw 9/Debug/Shader_Loader.obj
Normal file
BIN
cw 9/Debug/Texture.obj
Normal file
11
cw 9/Debug/grk-cw9.exe.recipe
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<ProjectOutputs>
|
||||
<ProjectOutput>
|
||||
<FullPath>J:\GrafikaKomputerowa\grk\Debug\grk-cw9.exe</FullPath>
|
||||
</ProjectOutput>
|
||||
</ProjectOutputs>
|
||||
<ContentFiles />
|
||||
<SatelliteDlls />
|
||||
<NonRecipeFileRefs />
|
||||
</Project>
|
64
cw 9/Debug/grk-cw9.log
Normal file
@ -0,0 +1,64 @@
|
||||
c:\software\vs19\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(513,5): warning MSB8028: The intermediate directory (Debug\) contains files shared from another project (grk-cw9.vcxproj). This can lead to incorrect clean and rebuild behavior.
|
||||
main.cpp
|
||||
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\minwindef.h(130,1): warning C4005: 'APIENTRY': macro redefinition
|
||||
J:\GrafikaKomputerowa\grk\dependencies\glfw-3.3.8.bin.WIN32\include\GLFW\glfw3.h(123): message : see previous definition of 'APIENTRY'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(74,30): warning C4305: 'initializing': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(88,38): warning C4305: '=': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(111,16): warning C4305: 'initializing': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(159,13): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(176,13): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(183,108): warning C4305: 'argument': truncation from 'double' to 'T'
|
||||
with
|
||||
[
|
||||
T=float
|
||||
]
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(191,87): warning C4305: 'argument': truncation from 'double' to 'T'
|
||||
with
|
||||
[
|
||||
T=float
|
||||
]
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(191,223): warning C4305: 'argument': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(194,59): warning C4305: 'argument': truncation from 'double' to 'T'
|
||||
with
|
||||
[
|
||||
T=float
|
||||
]
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(195,37): warning C4305: 'argument': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(227,2): warning C4305: 'argument': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(330,21): warning C4305: '-=': truncation from 'double' to 'float'
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\room.hpp(332,21): warning C4305: '+=': truncation from 'double' to 'float'
|
||||
Render_Utils.cpp
|
||||
Texture.cpp
|
||||
Generating Code...
|
||||
image_DXT.c
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\image_DXT.c(92,9): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
image_helper.c
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\image_helper.c(325,1): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\image_helper.c(366,58): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\image_helper.c(373,46): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\image_helper.c(415,58): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\image_helper.c(422,62): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
|
||||
SOIL.c
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\SOIL.c(1719,36): warning C4018: '<=': signed/unsigned mismatch
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\SOIL.c(1729,19): warning C4018: '<': signed/unsigned mismatch
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\SOIL.c(1841,6): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
stb_image_aug.c
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(177,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(251,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(303,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(1557,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(2394,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(2709,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(2995,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(3209,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(3548,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stb_image_aug.c(3644,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stbi_DDS_aug_c.h(362,19): warning C4018: '>': signed/unsigned mismatch
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stbi_DDS_aug_c.h(366,19): warning C4018: '>': signed/unsigned mismatch
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stbi_DDS_aug_c.h(390,19): warning C4018: '<': signed/unsigned mismatch
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stbi_DDS_aug_c.h(427,19): warning C4018: '<': signed/unsigned mismatch
|
||||
J:\GrafikaKomputerowa\grk\cw 9\src\SOIL\stbi_DDS_aug_c.h(498,14): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
Generating Code...
|
||||
Box.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
|
||||
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
|
||||
grk-cw9.vcxproj -> J:\GrafikaKomputerowa\grk\Debug\room.exe
|
BIN
cw 9/Debug/grk-cw9.tlog/CL.command.1.tlog
Normal file
BIN
cw 9/Debug/grk-cw9.tlog/CL.read.1.tlog
Normal file
BIN
cw 9/Debug/grk-cw9.tlog/CL.write.1.tlog
Normal file
2
cw 9/Debug/grk-cw9.tlog/grk-cw9.lastbuildstate
Normal file
@ -0,0 +1,2 @@
|
||||
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.19041.0:
|
||||
Debug|Win32|J:\GrafikaKomputerowa\grk\|
|
BIN
cw 9/Debug/grk-cw9.tlog/link.command.1.tlog
Normal file
BIN
cw 9/Debug/grk-cw9.tlog/link.read.1.tlog
Normal file
BIN
cw 9/Debug/grk-cw9.tlog/link.write.1.tlog
Normal file
BIN
cw 9/Debug/image_DXT.obj
Normal file
BIN
cw 9/Debug/image_helper.obj
Normal file
BIN
cw 9/Debug/main.obj
Normal file
11
cw 9/Debug/room.exe.recipe
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<ProjectOutputs>
|
||||
<ProjectOutput>
|
||||
<FullPath>J:\GrafikaKomputerowa\grk\Debug\room.exe</FullPath>
|
||||
</ProjectOutput>
|
||||
</ProjectOutputs>
|
||||
<ContentFiles />
|
||||
<SatelliteDlls />
|
||||
<NonRecipeFileRefs />
|
||||
</Project>
|
BIN
cw 9/Debug/room.tlog/CL.command.1.tlog
Normal file
BIN
cw 9/Debug/room.tlog/CL.read.1.tlog
Normal file
BIN
cw 9/Debug/room.tlog/CL.write.1.tlog
Normal file
BIN
cw 9/Debug/room.tlog/link.command.1.tlog
Normal file
BIN
cw 9/Debug/room.tlog/link.read.1.tlog
Normal file
BIN
cw 9/Debug/room.tlog/link.write.1.tlog
Normal file
2
cw 9/Debug/room.tlog/room.lastbuildstate
Normal file
@ -0,0 +1,2 @@
|
||||
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.19041.0:
|
||||
Debug|Win32|J:\GrafikaKomputerowa\grk\|
|
BIN
cw 9/Debug/stb_image_aug.obj
Normal file
BIN
cw 9/Debug/vc142.idb
Normal file
BIN
cw 9/Debug/vc142.pdb
Normal file
183
cw 9/Zadania 9.html
Normal file
@ -0,0 +1,183 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>Zadania 9</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
span.underline{text-decoration: underline;}
|
||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
ul.task-list{list-style: none;}
|
||||
pre > code.sourceCode { white-space: pre; position: relative; }
|
||||
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
||||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||||
div.sourceCode { margin: 1em 0; }
|
||||
pre.sourceCode { margin: 0; }
|
||||
@media screen {
|
||||
div.sourceCode { overflow: auto; }
|
||||
}
|
||||
@media print {
|
||||
pre > code.sourceCode { white-space: pre-wrap; }
|
||||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
||||
}
|
||||
pre.numberSource code
|
||||
{ counter-reset: source-line 0; }
|
||||
pre.numberSource code > span
|
||||
{ position: relative; left: -4em; counter-increment: source-line; }
|
||||
pre.numberSource code > span > a:first-child::before
|
||||
{ content: counter(source-line);
|
||||
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
||||
border: none; display: inline-block;
|
||||
-webkit-touch-callout: none; -webkit-user-select: none;
|
||||
-khtml-user-select: none; -moz-user-select: none;
|
||||
-ms-user-select: none; user-select: none;
|
||||
padding: 0 4px; width: 4em;
|
||||
color: #aaaaaa;
|
||||
}
|
||||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||||
div.sourceCode
|
||||
{ }
|
||||
@media screen {
|
||||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
||||
}
|
||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||
code span.at { color: #7d9029; } /* Attribute */
|
||||
code span.bn { color: #40a070; } /* BaseN */
|
||||
code span.bu { } /* BuiltIn */
|
||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||
code span.ch { color: #4070a0; } /* Char */
|
||||
code span.cn { color: #880000; } /* Constant */
|
||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||
code span.dt { color: #902000; } /* DataType */
|
||||
code span.dv { color: #40a070; } /* DecVal */
|
||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||
code span.ex { } /* Extension */
|
||||
code span.fl { color: #40a070; } /* Float */
|
||||
code span.fu { color: #06287e; } /* Function */
|
||||
code span.im { } /* Import */
|
||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||
code span.op { color: #666666; } /* Operator */
|
||||
code span.ot { color: #007020; } /* Other */
|
||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||
code span.ss { color: #bb6688; } /* SpecialString */
|
||||
code span.st { color: #4070a0; } /* String */
|
||||
code span.va { color: #19177c; } /* Variable */
|
||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||
</style>
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="shadow-mapping">Shadow mapping</h1>
|
||||
<p>Cienie są ważnym elementem oświetlenie. Dodają realizmu do sceny i dzięki nim łatwiej jest graczowi zorientować się w przestrzennym rozłożeniu obiektów. <img src="./img/shadows1.bmp" /> Na powyższym obrazku możesz zobaczyć, że dużo łatwiej jest okreśłić położenie kostek, gdy rzucają one cienie. Podstawową techniką generowania cieni jest <strong>shadow mapping</strong> i wiele bardziej zaawansowanych technik na niej bazuje.</p>
|
||||
<p>Składa się on z dwóch kroków. W pierwszym obliczamy mapy głębokości z perspektywy źródła światła i zapisaniu do tekstury (tą teksturę nazywamy <em>shadowmap</em>), w drugim przy rysowaniu fragmentu porównujemy jego odległość do źródła światła z odległością zapisaną w teksturze.</p>
|
||||
<p>Celem tych zajęć będzie dodanie cieni do początkowej sceny. W obecnym projekcie są 3 źródła światła: światło słoneczne, reflektor samolociku i lampa planetarna. W trakcie zajęć skupimy się na świetle słonecznym.</p>
|
||||
<h2 id="mapa-głębokości---framebuffers">Mapa głębokości - Framebuffers</h2>
|
||||
<p>Framebuffer to obiekt, do którego rednerowana jest scena w postaci tekstury. Do tej pory korzystaliśmy z domyślnego Famebuffora, który był wyświetlany na ekranie. Teraz potrzebujemy dodatkowy, który będzie przechwytywał mapę głębokości. Tworzymy go w następujący sposób</p>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>glGenFramebuffers(<span class="dv">1</span>, &depthMapFBO); </span></code></pre></div>
|
||||
<p>Zmienna <code>depthMapFBO</code> jest jak to typu <code>unsignet int</code> i powinna być dostępna globalnie. Kolejnym krokiem jest stworzenie tekstury głębokości</p>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>glGenTextures(<span class="dv">1</span>, &depthMap);</span>
|
||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>glBindTexture(GL_TEXTURE_2D, depthMap);</span>
|
||||
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>glTexImage2D(GL_TEXTURE_2D, <span class="dv">0</span>, GL_DEPTH_COMPONENT, </span>
|
||||
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a> SHADOW_WIDTH, SHADOW_HEIGHT, <span class="dv">0</span>, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);</span>
|
||||
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);</span>
|
||||
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);</span>
|
||||
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); </span>
|
||||
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); </span></code></pre></div>
|
||||
<p>Również zmienna <code>depthMap</code> jest jak to typu <code>unsignet int</code> i powinna być dostępna globalnie. Tworzymy teksturę, zaznaczamy, że jest to tekstura głębokości nadając jej format <code>GL_DEPTH_COMPONENT</code>. Parametry <code>SHADOW_WIDTH</code>, <code>SHADOW_HEIGHT</code> są ustalone globalnie i oba wynoszą 1024.</p>
|
||||
<p>I w końcu podpinamy teksturę pod FBO.</p>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);</span>
|
||||
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthMap, <span class="dv">0</span>);</span>
|
||||
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a>glDrawBuffer(GL_NONE);</span>
|
||||
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a>glReadBuffer(GL_NONE);</span>
|
||||
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a>glBindFramebuffer(GL_FRAMEBUFFER, <span class="dv">0</span>); </span></code></pre></div>
|
||||
<h3 id="zadanie">Zadanie</h3>
|
||||
<p>Utwórz funkcję <code>initDepthMap</code>, w której zainicjalizujesz mapę głębokości. Wywołaj ją w funkcji <code>init</code>.</p>
|
||||
<h3 id="renderowanie-mapy-głębokości">Renderowanie mapy głębokości</h3>
|
||||
<p>W tej części będziemy uzupełniać funkcję <code>renderShadowapSun</code>. Funkcja ma za zadanie zapisać w FBO mapę głębokości z perspektywy słońca. Pierwsze co musimy mieć, to parę shaderów, która będzie renderować mapę. Ponieważ jedyne co potrzebujemy tylko rozmieścić obiekty w odpowiednich miejscach. Shader wierzchołków ustawia tylko pozycję w oparciu o przesyłanie macierze.</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#</span><span class="er">version 430 core</span></span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a>layout(location = <span class="dv">0</span>) in vec3 vertexPosition;</span>
|
||||
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a>layout(location = <span class="dv">1</span>) in vec3 vertexNormal;</span>
|
||||
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>layout(location = <span class="dv">2</span>) in vec2 vertexTexCoord;</span>
|
||||
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a>uniform mat4 viewProjectionMatrix;</span>
|
||||
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true" tabindex="-1"></a>uniform mat4 modelMatrix;</span>
|
||||
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true" tabindex="-1"></a><span class="dt">void</span> main()</span>
|
||||
<span id="cb4-11"><a href="#cb4-11" aria-hidden="true" tabindex="-1"></a>{</span>
|
||||
<span id="cb4-12"><a href="#cb4-12" aria-hidden="true" tabindex="-1"></a> gl_Position = viewProjectionMatrix * modelMatrix * vec4(vertexPosition, <span class="fl">1.0</span>);</span>
|
||||
<span id="cb4-13"><a href="#cb4-13" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
|
||||
<p>Natomiast shader fragmentów jest pusty, ponieważ nic nie wysyłamy a głębokość zapisywana jest automatycznie.</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#</span><span class="er">version 430 core</span></span>
|
||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="dt">void</span> main()</span>
|
||||
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a>{ </span>
|
||||
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a>} </span></code></pre></div>
|
||||
<h3 id="zadanie-1">Zadanie</h3>
|
||||
<p>Dodaj utwórz parę shaderów jak powyżej, załaduj je do zmiennej globalnej o nazwie <code>programDepth</code> i aktywuj go w funkcji <code>renderShadowapSun</code>. Utwórz funkcję <code>drawObjectDepth</code>. która będzie przyjmować referencję do <code>RenderContext</code>, macierz <code>viewProjection</code> i macierz modelu oraz przesyłać macierze do GPU i rysować <code>RenderContext</code></p>
|
||||
<p>Musimy zdefiniować macierz widoku i rzutowania, które mamy przesłać. Implementujemy cienie dla oświetlenia kierunkowego, gdzie dla każdego punktu kierunek światła jest taki sam. W takim wypadku skorzystamy z rzutowania prostopadłego. <img src="./img/shadow_mapping_projection.png" /></p>
|
||||
<p>Do stworzenia macierzy rzutowania perspektywicznego wykorzystamy funkcję:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>glm::mat4 lightProjection = glm::ortho(</span>
|
||||
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">float</span> left,</span>
|
||||
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">float</span> right,</span>
|
||||
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">float</span> bottom,</span>
|
||||
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">float</span> top,</span>
|
||||
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">float</span> zNear,</span>
|
||||
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">float</span> zFar</span>
|
||||
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a>)</span></code></pre></div>
|
||||
<p>Tworzy ona macierz rzutowania prostopadłego dla zadanych wymiarów. Musimy tak je dobrać, żeby rzutowanie zawierało całą interesującą scenę. Za małe wartości spowodują artefakty a za duże pogorszą jakość. Przykładowo możesz wziąć <code>glm::ortho(-10.f, 10.f, -10.f, 10.f, 1.0f, 30.0f)</code>. Do stworzenia macierzy kamery wykorzystamy funkcję <code>glm::lookAt</code> z poniższymi argumentami argumentami</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>glm::lookAt(sunPos, sunPos - sunDir, glm::vec3(<span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">0</span>))</span></code></pre></div>
|
||||
<h3 id="zadanie-2">Zadanie</h3>
|
||||
<p>Uzupełnij funkcję <code>renderShadowapSun</code>. Wywołaj w niej instrukcje</p>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a> <span class="co">//ustawianie przestrzeni rysowania </span></span>
|
||||
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a> glViewport(<span class="dv">0</span>, <span class="dv">0</span>, SHADOW_WIDTH, SHADOW_HEIGHT);</span>
|
||||
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a> <span class="co">//bindowanie FBO</span></span>
|
||||
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a> glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);</span>
|
||||
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a> <span class="co">//czyszczenie mapy głębokości </span></span>
|
||||
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a> glClear(GL_DEPTH_BUFFER_BIT);</span>
|
||||
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a> <span class="co">//ustawianie programu</span></span>
|
||||
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true" tabindex="-1"></a> glUseProgram(programDepth);</span></code></pre></div>
|
||||
<p>Stwórz macierz <code>viewProjection</code></p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a> glm::mat4 lightVP = glm::ortho(-<span class="fl">10.</span><span class="bu">f</span>, <span class="fl">10.</span><span class="bu">f</span>, -<span class="fl">10.</span><span class="bu">f</span>, <span class="fl">10.</span><span class="bu">f</span>, <span class="fl">1.0</span><span class="bu">f</span>, <span class="fl">30.0</span><span class="bu">f</span>) * glm::lookAt(sunPos, sunPos - sunDir, glm::vec3(<span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">0</span>));</span></code></pre></div>
|
||||
<p>następnie wywołaj <code>drawObjectDepth</code> dla każdego obiektu, który rysujemy w naszej scenie. wykorzystaj macierz <code>viewProjection</code> zdefiniowaną wyżej, użyj tej samej macierzy modelu co przy właściwym rysowaniu.</p>
|
||||
<p>Zakończ funkcję linią <code>glBindFramebuffer(GL_FRAMEBUFFER, 0);</code>, która przywraca domyślny FBO.</p>
|
||||
<h3 id="wizualizacja-mapy-głębokości">Wizualizacja mapy głębokości</h3>
|
||||
<p>odkomentuj linie:</p>
|
||||
<div class="sourceCode" id="cb10"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a> <span class="co">//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);</span></span>
|
||||
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="co">//glUseProgram(programTest);</span></span>
|
||||
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a> <span class="co">//glActiveTexture(GL_TEXTURE0);</span></span>
|
||||
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a> <span class="co">//glBindTexture(GL_TEXTURE_2D, depthMap);</span></span>
|
||||
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a> <span class="co">//Core::DrawContext(models::testContext);</span></span></code></pre></div>
|
||||
<p>znajdujące się w <code>renderScene</code>. Rysują one prostokąt z mapą głębokości jako teksturą. Jeżeli wszystko zostało wykonane poprawnie, to powinien on zawierać rzutowanie naszego pokoju.</p>
|
||||
<h3 id="zadanie-3">Zadanie</h3>
|
||||
<p>W tej chwili rzutowanie jest nieoptymalne. popraw je na lepsze. Zmodyfikuj wartości w <code>glm::ortho(-10.f, 10.f, -10.f, 10.f, 1.0f, 30.0f)</code> do takich, żeby pokój wypełniał jak największą część tekstury.</p>
|
||||
<h3 id="rysowanie-cieni">Rysowanie cieni</h3>
|
||||
<p>Na tym etapie powinniśmy mieć poprawnie stworzoną mapę głębokości. Pozostaje wykorzystać ją w oświetleniu. ### Zadanie #### Przesłanie danych W funkcji <code>drawObjectPBR</code> prześlij teksturę za pomocą instrukcji:</p>
|
||||
<div class="sourceCode" id="cb11"><pre class="sourceCode c++"><code class="sourceCode cpp"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a> glActiveTexture(GL_TEXTURE0);</span>
|
||||
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a> glBindTexture(GL_TEXTURE_2D, depthMap);</span></code></pre></div>
|
||||
<p>oraz macierz <code>LightVP</code>, która musi być taka sama jak w <code>drawObjectDepth</code>.</p>
|
||||
<p>Następnie w shaderze wierzchołków odbierz <code>LightVP</code>.</p>
|
||||
<h4 id="shader-wierzchołków">Shader wierzchołków</h4>
|
||||
<p>Oblicz pozycję wierzchołka z perspektywy słońca <code>sunSpacePos=LightVP*modelMatrix*vec4(vertexPosition,1)</code>, wynik prześlij do shadera fragmentów #### Shader fragmentów odbierz <code>sunSpacePos</code> i napisz funkcję <code>calculateShadow</code>, która sprawdza czy obiekt jest zacieniony. Aby to zrobić kolejno w funkcji: * ujednorodnij zmienną <code>lightSpacePos</code> dzieląc ją przez współrzędną <strong>w</strong>, * przeskaluj ją, ma wartości od -1 do 1 a potrzebujemy wartości od 0 do 1 (pomnóż przez 0.5 i dodaj 0.5) wynik zapisz do zmiennej <code>lightSpacePosNormalized</code>, * pobierz głębokość z <code>depthMap</code> próbkuj za pomocą współrzędnych <strong>x</strong> i <strong>y</strong>. Pobierz tylko kanał <code>r</code>, zapisz go do zmiennej <code>closestDepth</code>, * porównaj <code>closestDepth</code> ze współrzędną <strong>z</strong> <code>lightSpacePosNormalized</code>. jeżeli <code>closestDepth</code> jest większa zwróć 1.0, w przeciwnym wypadku zwróć 0.0. * wynik funkcji przemnóż z <code>sunColor</code> w trakcie oblicznia.</p>
|
||||
<pre><code> ilumination=ilumination+PBRLight(sunDir,sunColor,normal,viewDir);</code></pre>
|
||||
<h4 id="shadow-acne">shadow acne</h4>
|
||||
<p>Powinniśmy dostać cienie , jednak w niezacienionych strefach pojawiły się paski, które znane są jako <em>shadow acne</em> wynikają one z błędu przybliżenia liczb zmiennoprzecinkowych. Można się go pozbyć na dwa sposoby 1. dodać bias. zamiast sprawdzać <code>closestDepth<lightSpacePosNormalized</code> można wziąć <code>closestDepth+bias>lightSpacePosNormalized</code>, gdzie <code>bias</code> to mała wartość (np 0.01). 2. innym rozwiązaniem jest, żeby przy renderowaniu cieni włączyć front face culling. dzięki temu rysowane będą część modelu, które są dalej niż te, które odpytujemy.</p>
|
||||
<h3 id="zadanie-4">Zadanie*</h3>
|
||||
<p>Dodaj rysowane cieni również dla latarki doczepionej do statku. pamiętaj, że musisz wykorzystać tutaj macierz rzutowania perspektywicznego</p>
|
||||
</body>
|
||||
</html>
|
158
cw 9/Zadania 9.md
Normal file
@ -0,0 +1,158 @@
|
||||
# Shadow mapping
|
||||
Cienie są ważnym elementem oświetlenie. Dodają realizmu do sceny i dzięki nim łatwiej jest graczowi zorientować się w przestrzennym rozłożeniu obiektów.
|
||||
![](./img/shadows1.bmp)
|
||||
Na powyższym obrazku możesz zobaczyć, że dużo łatwiej jest okreśłić położenie kostek, gdy rzucają one cienie. Podstawową techniką generowania cieni jest **shadow mapping** i wiele bardziej zaawansowanych technik na niej bazuje.
|
||||
|
||||
Składa się on z dwóch kroków. W pierwszym obliczamy mapy głębokości z perspektywy źródła światła i zapisaniu do tekstury (tą teksturę nazywamy *shadowmap*), w drugim przy rysowaniu fragmentu porównujemy jego odległość do źródła światła z odległością zapisaną w teksturze.
|
||||
|
||||
Celem tych zajęć będzie dodanie cieni do początkowej sceny. W obecnym projekcie są 3 źródła światła: światło słoneczne, reflektor samolociku i lampa planetarna. W trakcie zajęć skupimy się na świetle słonecznym.
|
||||
|
||||
## Mapa głębokości - Framebuffers
|
||||
Framebuffer to obiekt, do którego rednerowana jest scena w postaci tekstury. Do tej pory korzystaliśmy z domyślnego Famebuffora, który był wyświetlany na ekranie. Teraz potrzebujemy dodatkowy, który będzie przechwytywał mapę głębokości. Tworzymy go w następujący sposób
|
||||
|
||||
```C++
|
||||
glGenFramebuffers(1, &depthMapFBO);
|
||||
```
|
||||
Zmienna `depthMapFBO` jest jak to typu `unsignet int` i powinna być dostępna globalnie. Kolejnym krokiem jest stworzenie tekstury głębokości
|
||||
```C++
|
||||
glGenTextures(1, &depthMap);
|
||||
glBindTexture(GL_TEXTURE_2D, depthMap);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT,
|
||||
SHADOW_WIDTH, SHADOW_HEIGHT, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
```
|
||||
Również zmienna `depthMap` jest jak to typu `unsignet int` i powinna być dostępna globalnie.
|
||||
Tworzymy teksturę, zaznaczamy, że jest to tekstura głębokości nadając jej format `GL_DEPTH_COMPONENT`. Parametry `SHADOW_WIDTH`, `SHADOW_HEIGHT` są ustalone globalnie i oba wynoszą 1024.
|
||||
|
||||
I w końcu podpinamy teksturę pod FBO.
|
||||
```C++
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthMap, 0);
|
||||
glDrawBuffer(GL_NONE);
|
||||
glReadBuffer(GL_NONE);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
```
|
||||
|
||||
### Zadanie
|
||||
Utwórz funkcję `initDepthMap`, w której zainicjalizujesz mapę głębokości. Wywołaj ją w funkcji `init`.
|
||||
|
||||
### Renderowanie mapy głębokości
|
||||
|
||||
W tej części będziemy uzupełniać funkcję `renderShadowapSun`. Funkcja ma za zadanie zapisać w FBO mapę głębokości z perspektywy słońca.
|
||||
Pierwsze co musimy mieć, to parę shaderów, która będzie renderować mapę. Ponieważ jedyne co potrzebujemy tylko rozmieścić obiekty w odpowiednich miejscach.
|
||||
Shader wierzchołków ustawia tylko pozycję w oparciu o przesyłanie macierze.
|
||||
```C++
|
||||
#version 430 core
|
||||
|
||||
layout(location = 0) in vec3 vertexPosition;
|
||||
layout(location = 1) in vec3 vertexNormal;
|
||||
layout(location = 2) in vec2 vertexTexCoord;
|
||||
|
||||
uniform mat4 viewProjectionMatrix;
|
||||
uniform mat4 modelMatrix;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = viewProjectionMatrix * modelMatrix * vec4(vertexPosition, 1.0);
|
||||
}
|
||||
```
|
||||
Natomiast shader fragmentów jest pusty, ponieważ nic nie wysyłamy a głębokość zapisywana jest automatycznie.
|
||||
```C++
|
||||
#version 430 core
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
```
|
||||
### Zadanie
|
||||
Dodaj utwórz parę shaderów jak powyżej, załaduj je do zmiennej globalnej o nazwie `programDepth` i aktywuj go w funkcji `renderShadowapSun`. Utwórz funkcję `drawObjectDepth`. która będzie przyjmować referencję do `RenderContext`, macierz `viewProjection` i macierz modelu oraz przesyłać macierze do GPU i rysować `RenderContext`
|
||||
|
||||
Musimy zdefiniować macierz widoku i rzutowania, które mamy przesłać. Implementujemy cienie dla oświetlenia kierunkowego, gdzie dla każdego punktu kierunek światła jest taki sam. W takim wypadku skorzystamy z rzutowania prostopadłego.
|
||||
![](./img/shadow_mapping_projection.png)
|
||||
|
||||
Do stworzenia macierzy rzutowania perspektywicznego wykorzystamy funkcję:
|
||||
```C++
|
||||
glm::mat4 lightProjection = glm::ortho(
|
||||
float left,
|
||||
float right,
|
||||
float bottom,
|
||||
float top,
|
||||
float zNear,
|
||||
float zFar
|
||||
)
|
||||
```
|
||||
Tworzy ona macierz rzutowania prostopadłego dla zadanych wymiarów. Musimy tak je dobrać, żeby rzutowanie zawierało całą interesującą scenę. Za małe wartości spowodują artefakty a za duże pogorszą jakość. Przykładowo możesz wziąć `glm::ortho(-10.f, 10.f, -10.f, 10.f, 1.0f, 30.0f)`.
|
||||
Do stworzenia macierzy kamery wykorzystamy funkcję `glm::lookAt` z poniższymi argumentami argumentami
|
||||
```C++
|
||||
glm::lookAt(sunPos, sunPos - sunDir, glm::vec3(0, 1, 0))
|
||||
```
|
||||
### Zadanie
|
||||
Uzupełnij funkcję `renderShadowapSun`. Wywołaj w niej instrukcje
|
||||
```C++
|
||||
//ustawianie przestrzeni rysowania
|
||||
glViewport(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT);
|
||||
//bindowanie FBO
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);
|
||||
//czyszczenie mapy głębokości
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
//ustawianie programu
|
||||
glUseProgram(programDepth);
|
||||
```
|
||||
Stwórz macierz `viewProjection`
|
||||
```C++
|
||||
glm::mat4 lightVP = glm::ortho(-10.f, 10.f, -10.f, 10.f, 1.0f, 30.0f) * glm::lookAt(sunPos, sunPos - sunDir, glm::vec3(0, 1, 0));
|
||||
```
|
||||
następnie wywołaj `drawObjectDepth` dla każdego obiektu, który rysujemy w naszej scenie. wykorzystaj macierz `viewProjection` zdefiniowaną wyżej, użyj tej samej macierzy modelu co przy właściwym rysowaniu.
|
||||
|
||||
Zakończ funkcję linią `glBindFramebuffer(GL_FRAMEBUFFER, 0);`, która przywraca domyślny FBO.
|
||||
|
||||
### Wizualizacja mapy głębokości
|
||||
odkomentuj linie:
|
||||
```C++
|
||||
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
//glUseProgram(programTest);
|
||||
//glActiveTexture(GL_TEXTURE0);
|
||||
//glBindTexture(GL_TEXTURE_2D, depthMap);
|
||||
//Core::DrawContext(models::testContext);
|
||||
```
|
||||
znajdujące się w `renderScene`. Rysują one prostokąt z mapą głębokości jako teksturą. Jeżeli wszystko zostało wykonane poprawnie, to powinien on zawierać rzutowanie naszego pokoju.
|
||||
|
||||
### Zadanie
|
||||
W tej chwili rzutowanie jest nieoptymalne. popraw je na lepsze. Zmodyfikuj wartości w `glm::ortho(-10.f, 10.f, -10.f, 10.f, 1.0f, 30.0f)` do takich, żeby pokój wypełniał jak największą część tekstury.
|
||||
|
||||
### Rysowanie cieni
|
||||
Na tym etapie powinniśmy mieć poprawnie stworzoną mapę głębokości. Pozostaje wykorzystać ją w oświetleniu.
|
||||
### Zadanie
|
||||
#### Przesłanie danych
|
||||
W funkcji `drawObjectPBR` prześlij teksturę za pomocą instrukcji:
|
||||
```C++
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glBindTexture(GL_TEXTURE_2D, depthMap);
|
||||
```
|
||||
oraz macierz `LightVP`, która musi być taka sama jak w `drawObjectDepth`.
|
||||
|
||||
Następnie w shaderze wierzchołków odbierz `LightVP`.
|
||||
|
||||
#### Shader wierzchołków
|
||||
Oblicz pozycję wierzchołka z perspektywy słońca `sunSpacePos=LightVP*modelMatrix*vec4(vertexPosition,1)`, wynik prześlij do shadera fragmentów
|
||||
#### Shader fragmentów
|
||||
odbierz `sunSpacePos` i napisz funkcję `calculateShadow`, która sprawdza czy obiekt jest zacieniony. Aby to zrobić kolejno w funkcji:
|
||||
* ujednorodnij zmienną `lightSpacePos` dzieląc ją przez współrzędną **w**,
|
||||
* przeskaluj ją, ma wartości od -1 do 1 a potrzebujemy wartości od 0 do 1 (pomnóż przez 0.5 i dodaj 0.5) wynik zapisz do zmiennej `lightSpacePosNormalized`,
|
||||
* pobierz głębokość z `depthMap` próbkuj za pomocą współrzędnych **x** i **y**. Pobierz tylko kanał `r`, zapisz go do zmiennej `closestDepth`,
|
||||
* porównaj `closestDepth` ze współrzędną **z** `lightSpacePosNormalized`. jeżeli `closestDepth` jest większa zwróć 1.0, w przeciwnym wypadku zwróć 0.0.
|
||||
* wynik funkcji przemnóż z `sunColor` w trakcie oblicznia.
|
||||
```
|
||||
ilumination=ilumination+PBRLight(sunDir,sunColor,normal,viewDir);
|
||||
```
|
||||
#### shadow acne
|
||||
Powinniśmy dostać cienie , jednak w niezacienionych strefach pojawiły się paski, które znane są jako *shadow acne* wynikają one z błędu przybliżenia liczb zmiennoprzecinkowych. Można się go pozbyć na dwa sposoby
|
||||
1. dodać bias. zamiast sprawdzać `closestDepth<lightSpacePosNormalized` można wziąć `closestDepth+bias>lightSpacePosNormalized`, gdzie `bias` to mała wartość (np 0.01).
|
||||
2. innym rozwiązaniem jest, żeby przy renderowaniu cieni włączyć front face culling. dzięki temu rysowane będą część modelu, które są dalej niż te, które odpytujemy.
|
||||
|
||||
### Zadanie*
|
||||
Dodaj rysowane cieni również dla latarki doczepionej do statku. pamiętaj, że musisz wykorzystać tutaj macierz rzutowania perspektywicznego
|
BIN
cw 9/assimp-vc141-mt.dll
Normal file
BIN
cw 9/assimp-vc141-mtd.dll
Normal file
BIN
cw 9/freeglut.dll
Normal file
BIN
cw 9/glew32.dll
Normal file
126
cw 9/grk-cw9.vcxproj
Normal file
@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Box.cpp" />
|
||||
<ClCompile Include="src\Camera.cpp" />
|
||||
<ClCompile Include="src\main.cpp" />
|
||||
<ClCompile Include="src\Render_Utils.cpp" />
|
||||
<ClCompile Include="src\Shader_Loader.cpp" />
|
||||
<ClCompile Include="src\SOIL\image_DXT.c" />
|
||||
<ClCompile Include="src\SOIL\image_helper.c" />
|
||||
<ClCompile Include="src\SOIL\SOIL.c" />
|
||||
<ClCompile Include="src\SOIL\stb_image_aug.c" />
|
||||
<ClCompile Include="src\Texture.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\Camera.h" />
|
||||
<ClInclude Include="src\room.hpp" />
|
||||
<ClInclude Include="src\objload.h" />
|
||||
<ClInclude Include="src\Render_Utils.h" />
|
||||
<ClInclude Include="src\Shader_Loader.h" />
|
||||
<ClInclude Include="src\SOIL\image_DXT.h" />
|
||||
<ClInclude Include="src\SOIL\image_helper.h" />
|
||||
<ClInclude Include="src\SOIL\SOIL.h" />
|
||||
<ClInclude Include="src\SOIL\stbi_DDS_aug.h" />
|
||||
<ClInclude Include="src\SOIL\stbi_DDS_aug_c.h" />
|
||||
<ClInclude Include="src\SOIL\stb_image_aug.h" />
|
||||
<ClInclude Include="src\Texture.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="shaders\shader_9_1.frag" />
|
||||
<None Include="shaders\shader_9_1.vert" />
|
||||
<None Include="shaders\shader_8_sun.frag" />
|
||||
<None Include="shaders\shader_8_sun.vert" />
|
||||
<None Include="shaders\test.frag" />
|
||||
<None Include="shaders\test.vert" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{5BACD057-4B83-4CB6-A367-40A10BCE2149}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>grk-cw9</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>room</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<LibraryPath>$(SolutionDir)dependencies\freeglut\lib;$(SolutionDir)dependencies\glew-2.0.0\lib\Release\Win32;$(SolutionDir)dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019;$(SolutionDir)dependencies\assimp;$(LibraryPath)</LibraryPath>
|
||||
<IncludePath>$(SolutionDir)dependencies\freeglut\include\GL;$(SolutionDir)dependencies\glew-2.0.0\include\GL;$(SolutionDir)dependencies\glm;$(SolutionDir)dependencies\glfw-3.3.8.bin.WIN32\include;$(SolutionDir)dependencies\assimp\include;$(IncludePath)</IncludePath>
|
||||
<ExecutablePath>$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<LibraryPath>$(SolutionDir)dependencies\freeglut\lib;$(SolutionDir)dependencies\glew-2.0.0\lib\Release\Win32;$(SolutionDir)dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019;$(SolutionDir)dependencies\assimp;$(LibraryPath)</LibraryPath>
|
||||
<IncludePath>$(SolutionDir)dependencies\freeglut\include\GL;$(SolutionDir)dependencies\glew-2.0.0\include\GL;$(SolutionDir)dependencies\glm;$(SolutionDir)dependencies\glfw-3.3.8.bin.WIN32\include;$(SolutionDir)dependencies\assimp\include;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>opengl32.lib;freeglut.lib;glew32.lib;$(SolutionDir)\dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019\glfw3.lib;$(SolutionDir)\dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019\glfw3dll.lib;zlibd.lib;assimp-vc141-mtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>opengl32.lib;freeglut.lib;glew32.lib;$(SolutionDir)\dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019\glfw3.lib;$(SolutionDir)\dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019\glfw3dll.lib;zlibd.lib;assimp-vc141-mtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)dependencies\glfw-3.3.8.bin.WIN32\lib-vc2019;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
113
cw 9/grk-cw9.vcxproj.filters
Normal file
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Shader Files">
|
||||
<UniqueIdentifier>{0a247bb8-2e8e-4a90-b0ef-17415b0941ba}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\SOIL">
|
||||
<UniqueIdentifier>{0af44075-33f4-4953-b1d6-1d28d61d758f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Render_Utils.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Shader_Loader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Box.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Camera.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Texture.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SOIL\SOIL.c">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SOIL\stb_image_aug.c">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SOIL\image_DXT.c">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SOIL\image_helper.c">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\objload.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\Render_Utils.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\Shader_Loader.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\Camera.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\Texture.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\SOIL\image_helper.h">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\SOIL\SOIL.h">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\SOIL\stb_image_aug.h">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\SOIL\stbi_DDS_aug.h">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\SOIL\stbi_DDS_aug_c.h">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\SOIL\image_DXT.h">
|
||||
<Filter>Source Files\SOIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\room.hpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="shaders\shader_8_sun.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_8_sun.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_9_1.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_9_1.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\test.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\test.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
4
cw 9/grk-cw9.vcxproj.user
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
BIN
cw 9/img/2.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
cw 9/img/3.webp
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
cw 9/img/384px-PerlinNoiseDotProducts.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
cw 9/img/384px-PerlinNoiseInterpolated.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
cw 9/img/4.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
cw 9/img/5.webp
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
cw 9/img/6.webp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
cw 9/img/7.webp
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
cw 9/img/8.webp
Normal file
After Width: | Height: | Size: 34 KiB |
1254
cw 9/img/Figure_1.eps
Normal file
BIN
cw 9/img/PerlinNoiseDotProducts.png
Normal file
After Width: | Height: | Size: 178 KiB |
BIN
cw 9/img/PerlinNoiseGradientGrid.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
cw 9/img/PerlinNoiseInterpolated.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
cw 9/img/blending1.webp
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
cw 9/img/camera.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
cw 9/img/capture.webm
Normal file
BIN
cw 9/img/coordinate_systems.jpg
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
cw 9/img/cubemaps_sampling.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
cw 9/img/gamma_correction_brightness.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
cw 9/img/lighting_result.png
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
cw 9/img/noise_examples.jpg
Normal file
After Width: | Height: | Size: 329 KiB |
BIN
cw 9/img/shadow_mapping_projection.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
cw 9/img/shadows1.bmp
Normal file
After Width: | Height: | Size: 978 KiB |
BIN
cw 9/img/spotlight.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
cw 9/img/stride_offest.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
cw 9/img/stride_offest_2_2.jpg
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
cw 9/img/struktura.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
cw 9/img/sun.png
Normal file
After Width: | Height: | Size: 2.0 MiB |
BIN
cw 9/img/textures.png
Normal file
After Width: | Height: | Size: 260 KiB |
BIN
cw 9/img/z_depth_graph.jpg
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
cw 9/img/z_depth_graph2.jpg
Normal file
After Width: | Height: | Size: 72 KiB |
5983
cw 9/models/bed.obj
Normal file
335
cw 9/models/chair.obj
Normal file
@ -0,0 +1,335 @@
|
||||
# Blender v3.2.1 OBJ File: 'untitled.blend'
|
||||
# www.blender.org
|
||||
mtllib chair.mtl
|
||||
o chair_Cube.003
|
||||
v -0.314480 0.613288 -0.129427
|
||||
v -0.314480 0.663788 -0.129427
|
||||
v -0.314480 0.613288 -0.031859
|
||||
v -0.314480 1.534193 -0.031859
|
||||
v -0.427059 0.613288 -0.129427
|
||||
v -0.427059 0.663788 -0.129427
|
||||
v -0.427059 0.000000 -0.001859
|
||||
v -0.392763 0.663788 -0.031859
|
||||
v -0.457059 0.613288 -0.031859
|
||||
v -0.427059 0.613288 -0.061859
|
||||
v -0.397059 0.613288 -0.031859
|
||||
v -0.427059 0.613288 -0.001859
|
||||
v -0.457059 0.000000 -0.031859
|
||||
v -0.427059 0.000000 -0.061859
|
||||
v -0.397059 0.000000 -0.031859
|
||||
v -0.370770 0.663788 -0.129427
|
||||
v -0.370770 1.534193 -0.031859
|
||||
v -0.370770 0.613288 -0.129427
|
||||
v -0.714480 0.613288 -0.129427
|
||||
v -0.714480 0.663788 -0.129427
|
||||
v -0.714480 0.663788 -0.031859
|
||||
v -0.714480 0.613288 -0.031859
|
||||
v -1.114480 0.613288 -0.129427
|
||||
v -1.114480 0.663788 -0.129427
|
||||
v -1.114480 0.613288 -0.031859
|
||||
v -1.114480 0.663788 -0.031859
|
||||
v -1.001901 0.613288 -0.129427
|
||||
v -1.001901 0.663788 -0.129427
|
||||
v -1.001901 0.000000 -0.001859
|
||||
v -1.001901 0.663788 -0.031859
|
||||
v -0.971901 0.613288 -0.031859
|
||||
v -1.001901 0.613288 -0.061859
|
||||
v -1.031901 0.613288 -0.031859
|
||||
v -1.001901 0.613288 -0.001859
|
||||
v -0.971901 0.000000 -0.031859
|
||||
v -1.001901 0.000000 -0.061859
|
||||
v -1.031901 0.000000 -0.031859
|
||||
v -1.058190 0.663788 -0.129427
|
||||
v -1.058190 0.663788 -0.031859
|
||||
v -1.058190 0.613288 -0.129427
|
||||
v -0.314480 1.534193 0.211537
|
||||
v -0.314480 0.613288 0.211537
|
||||
v -0.392763 0.663788 0.211537
|
||||
v -0.427059 0.613288 0.211537
|
||||
v -0.370770 1.534193 0.211537
|
||||
v -0.714480 0.663788 0.211537
|
||||
v -0.714480 0.613288 0.211537
|
||||
v -1.114480 0.663788 0.211537
|
||||
v -1.114480 0.613288 0.211537
|
||||
v -1.001901 0.663788 0.211537
|
||||
v -1.001901 0.613288 0.211537
|
||||
v -1.058190 0.663788 0.211537
|
||||
v -0.314480 0.613288 0.552501
|
||||
v -0.314480 0.663788 0.552501
|
||||
v -0.314480 0.613288 0.454933
|
||||
v -0.314480 1.534193 0.454933
|
||||
v -0.427059 0.613288 0.552501
|
||||
v -0.427059 0.663788 0.552501
|
||||
v -0.427059 0.000000 0.424933
|
||||
v -0.392763 0.663788 0.454933
|
||||
v -0.457059 0.613288 0.454933
|
||||
v -0.427059 0.613288 0.484933
|
||||
v -0.397059 0.613288 0.454933
|
||||
v -0.427059 0.613288 0.424933
|
||||
v -0.457059 0.000000 0.454933
|
||||
v -0.427059 0.000000 0.484933
|
||||
v -0.397059 0.000000 0.454933
|
||||
v -0.370770 0.663788 0.552501
|
||||
v -0.370770 1.534193 0.454933
|
||||
v -0.370770 0.613288 0.552501
|
||||
v -0.714480 0.613288 0.552501
|
||||
v -0.714480 0.663788 0.552501
|
||||
v -0.714480 0.663788 0.454933
|
||||
v -0.714480 0.613288 0.454933
|
||||
v -1.114480 0.613288 0.552501
|
||||
v -1.114480 0.663788 0.552501
|
||||
v -1.114480 0.613288 0.454933
|
||||
v -1.114480 0.663788 0.454933
|
||||
v -1.001901 0.613288 0.552501
|
||||
v -1.001901 0.663788 0.552501
|
||||
v -1.001901 0.000000 0.424933
|
||||
v -1.001901 0.663788 0.454933
|
||||
v -0.971901 0.613288 0.454933
|
||||
v -1.001901 0.613288 0.484933
|
||||
v -1.031901 0.613288 0.454933
|
||||
v -1.001901 0.613288 0.424933
|
||||
v -0.971901 0.000000 0.454933
|
||||
v -1.001901 0.000000 0.484933
|
||||
v -1.031901 0.000000 0.454933
|
||||
v -1.058190 0.663788 0.552501
|
||||
v -1.058190 0.663788 0.454933
|
||||
v -1.058190 0.613288 0.552501
|
||||
v -0.427059 0.663788 -0.031859
|
||||
v -0.427059 0.663788 0.454933
|
||||
v -0.427059 0.663788 0.211537
|
||||
vt 0.375000 0.482410
|
||||
vt 0.625000 0.482410
|
||||
vt 0.625000 0.500000
|
||||
vt 0.375000 0.500000
|
||||
vt 0.339819 0.500000
|
||||
vt 0.357410 0.500000
|
||||
vt 0.375000 0.516261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.339819 0.511261
|
||||
vt 0.625000 0.516261
|
||||
vt 0.330444 0.516261
|
||||
vt 0.339819 0.511261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.339819 0.521261
|
||||
vt 0.250000 0.500000
|
||||
vt 0.330444 0.516261
|
||||
vt 0.250000 0.516261
|
||||
vt 0.375000 0.375000
|
||||
vt 0.625000 0.375000
|
||||
vt 0.625000 0.464819
|
||||
vt 0.375000 0.464819
|
||||
vt 0.339819 0.521261
|
||||
vt 0.642591 0.500000
|
||||
vt 0.642591 0.516261
|
||||
vt 0.660181 0.516261
|
||||
vt 0.669756 0.516261
|
||||
vt 0.625000 0.464819
|
||||
vt 0.625000 0.482410
|
||||
vt 0.375000 0.482410
|
||||
vt 0.375000 0.500000
|
||||
vt 0.625000 0.500000
|
||||
vt 0.625000 0.482410
|
||||
vt 0.339819 0.500000
|
||||
vt 0.339819 0.511261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.375000 0.516261
|
||||
vt 0.357410 0.500000
|
||||
vt 0.625000 0.516261
|
||||
vt 0.330444 0.516261
|
||||
vt 0.339819 0.521261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.339819 0.511261
|
||||
vt 0.642591 0.500000
|
||||
vt 0.642591 0.516261
|
||||
vt 0.660181 0.516261
|
||||
vt 0.660181 0.500000
|
||||
vt 0.330444 0.516261
|
||||
vt 0.375000 0.464819
|
||||
vt 0.625000 0.464819
|
||||
vt 0.339819 0.521261
|
||||
vt 0.750000 0.516261
|
||||
vt 0.750000 0.500000
|
||||
vt 0.642591 0.556827
|
||||
vt 0.660181 0.556827
|
||||
vt 0.339819 0.556827
|
||||
vt 0.375000 0.556827
|
||||
vt 0.625000 0.556827
|
||||
vt 0.250000 0.556827
|
||||
vt 0.750000 0.556827
|
||||
vt 0.339819 0.556827
|
||||
vt 0.660181 0.516261
|
||||
vt 0.660181 0.556827
|
||||
vt 0.642591 0.556827
|
||||
vt 0.669756 0.516261
|
||||
vt 0.669756 0.556827
|
||||
vt 0.375000 0.556827
|
||||
vt 0.625000 0.556827
|
||||
vt 0.375000 0.482410
|
||||
vt 0.375000 0.500000
|
||||
vt 0.625000 0.500000
|
||||
vt 0.339819 0.500000
|
||||
vt 0.339819 0.511261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.375000 0.516261
|
||||
vt 0.357410 0.500000
|
||||
vt 0.625000 0.516261
|
||||
vt 0.330444 0.516261
|
||||
vt 0.339819 0.521261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.339819 0.511261
|
||||
vt 0.642591 0.516261
|
||||
vt 0.642591 0.500000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.250000 0.516261
|
||||
vt 0.330444 0.516261
|
||||
vt 0.375000 0.375000
|
||||
vt 0.375000 0.464819
|
||||
vt 0.625000 0.375000
|
||||
vt 0.339819 0.521261
|
||||
vt 0.375000 0.482410
|
||||
vt 0.625000 0.482410
|
||||
vt 0.625000 0.500000
|
||||
vt 0.375000 0.500000
|
||||
vt 0.339819 0.500000
|
||||
vt 0.357410 0.500000
|
||||
vt 0.375000 0.516261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.339819 0.511261
|
||||
vt 0.625000 0.516261
|
||||
vt 0.330444 0.516261
|
||||
vt 0.339819 0.511261
|
||||
vt 0.349194 0.516261
|
||||
vt 0.339819 0.521261
|
||||
vt 0.642591 0.500000
|
||||
vt 0.660181 0.500000
|
||||
vt 0.660181 0.516261
|
||||
vt 0.642591 0.516261
|
||||
vt 0.330444 0.516261
|
||||
vt 0.625000 0.464819
|
||||
vt 0.375000 0.464819
|
||||
vt 0.339819 0.521261
|
||||
vt 0.750000 0.500000
|
||||
vt 0.750000 0.516261
|
||||
vt 0.660181 0.500000
|
||||
vt 0.660181 0.500000
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn -0.2616 0.2862 -0.9218
|
||||
vn 0.6948 0.0401 -0.7181
|
||||
vn 0.5774 -0.5774 -0.5774
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn 0.4264 -0.9045 0.0000
|
||||
vn 0.0000 -0.9045 -0.4264
|
||||
vn 0.5834 0.6054 -0.5413
|
||||
vn -0.8165 -0.5774 0.0000
|
||||
vn 0.0000 -0.5774 -0.8165
|
||||
vn 0.8165 -0.5774 0.0000
|
||||
vn 0.0000 -0.5774 0.8165
|
||||
vn -0.4264 -0.9045 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.7071 -0.7071
|
||||
vn 0.0000 -0.9045 0.4264
|
||||
vn -0.5754 0.6118 -0.5427
|
||||
vn -0.6670 0.7413 0.0741
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.7071 0.7071
|
||||
vn -0.2616 0.2862 0.9218
|
||||
vn -0.5774 -0.5774 -0.5774
|
||||
vn -0.5774 0.5774 -0.5774
|
||||
vn -0.7071 -0.7071 -0.0000
|
||||
vn -0.7071 0.7071 0.0000
|
||||
vn -0.6670 0.7413 -0.0741
|
||||
vn -0.6981 0.7160 0.0000
|
||||
vn 0.7071 0.7071 0.0000
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.5774 -0.5774 0.5774
|
||||
vn 0.6948 0.0401 0.7181
|
||||
vn 0.5834 0.6054 0.5413
|
||||
vn -0.5754 0.6118 0.5427
|
||||
vn -0.5774 0.5774 0.5774
|
||||
vn -0.5774 -0.5774 0.5774
|
||||
usemtl Material.004
|
||||
s 1
|
||||
f 18/1/1 16/2/2 2/3/3 1/4/4
|
||||
f 5/5/1 18/6/1 1/4/4 3/7/5 11/8/6 10/9/7
|
||||
f 1/4/4 2/3/3 4/10/8 3/7/5
|
||||
f 13/11/9 14/12/10 15/13/11 7/14/12
|
||||
f 19/15/1 5/5/1 10/9/7 9/16/13 22/17/14
|
||||
f 19/18/1 20/19/15 6/20/15 5/21/1
|
||||
f 10/9/7 11/8/6 15/13/11 14/12/10
|
||||
f 12/22/16 9/16/13 13/11/9 7/14/12
|
||||
f 11/8/6 12/22/16 7/14/12 15/13/11
|
||||
f 9/16/13 10/9/7 14/12/10 13/11/9
|
||||
f 2/3/3 16/23/2 17/24/17 4/10/8
|
||||
f 5/21/1 6/20/15 16/2/2 18/1/1
|
||||
f 60/25/18 94/26/19 58/27/20 68/28/21
|
||||
f 40/29/1 23/30/22 24/31/23 38/32/15
|
||||
f 27/33/1 32/34/7 33/35/13 25/36/24 23/30/22 40/37/1
|
||||
f 23/30/22 25/36/24 26/38/25 24/31/23
|
||||
f 35/39/11 29/40/12 37/41/9 36/42/10
|
||||
f 38/43/15 39/44/19 30/45/19 28/46/15
|
||||
f 19/15/1 22/17/14 31/47/6 32/34/7 27/33/1
|
||||
f 19/18/1 27/48/1 28/49/15 20/19/15
|
||||
f 32/34/7 36/42/10 37/41/9 33/35/13
|
||||
f 34/50/16 29/40/12 35/39/11 31/47/6
|
||||
f 33/35/13 37/41/9 29/40/12 34/50/16
|
||||
f 31/47/6 35/39/11 36/42/10 32/34/7
|
||||
f 24/31/23 26/38/25 39/44/19 38/43/15
|
||||
f 27/48/1 40/29/1 38/32/15 28/49/15
|
||||
f 28/46/15 30/45/19 21/51/19 20/52/15
|
||||
f 39/44/19 52/53/19 50/54/19 30/45/19
|
||||
f 34/50/16 51/55/14 49/56/24 25/36/24 33/35/13
|
||||
f 25/36/24 49/56/24 48/57/25 26/38/25
|
||||
f 26/38/25 48/57/25 52/53/19 39/44/19
|
||||
f 22/17/14 47/58/14 51/55/14 34/50/16 31/47/6
|
||||
f 30/45/19 50/54/19 46/59/19 21/51/19
|
||||
f 22/17/14 9/16/13 12/22/16 44/60/14 47/58/14
|
||||
f 17/24/17 8/61/26 43/62/27 45/63/27
|
||||
f 8/61/26 93/64/19 95/65/19 43/62/27
|
||||
f 12/22/16 11/8/6 3/7/5 42/66/5 44/60/14
|
||||
f 3/7/5 4/10/8 41/67/28 42/66/5
|
||||
f 4/10/8 17/24/17 45/63/27 41/67/28
|
||||
f 70/68/29 53/69/30 54/70/31 68/28/21
|
||||
f 57/71/29 62/72/16 63/73/6 55/74/5 53/69/30 70/75/29
|
||||
f 53/69/30 55/74/5 56/76/32 54/70/31
|
||||
f 65/77/9 59/78/10 67/79/11 66/80/12
|
||||
f 69/81/33 60/25/18 68/82/21
|
||||
f 71/83/29 74/84/14 61/85/13 62/72/16 57/71/29
|
||||
f 71/86/29 57/87/29 58/27/20 72/88/20
|
||||
f 62/72/16 66/80/12 67/79/11 63/73/6
|
||||
f 64/89/7 59/78/10 65/77/9 61/85/13
|
||||
f 63/73/6 67/79/11 59/78/10 64/89/7
|
||||
f 61/85/13 65/77/9 66/80/12 62/72/16
|
||||
f 54/70/31 56/76/32 69/81/33 68/82/21
|
||||
f 57/87/29 70/68/29 68/28/21 58/27/20
|
||||
f 92/90/29 90/91/20 76/92/34 75/93/35
|
||||
f 79/94/29 92/95/29 75/93/35 77/96/24 85/97/13 84/98/16
|
||||
f 75/93/35 76/92/34 78/99/25 77/96/24
|
||||
f 87/100/11 88/101/12 89/102/9 81/103/10
|
||||
f 90/104/20 80/105/20 82/106/19 91/107/19
|
||||
f 71/83/29 79/94/29 84/98/16 83/108/6 74/84/14
|
||||
f 71/86/29 72/88/20 80/109/20 79/110/29
|
||||
f 84/98/16 85/97/13 89/102/9 88/101/12
|
||||
f 86/111/7 83/108/6 87/100/11 81/103/10
|
||||
f 85/97/13 86/111/7 81/103/10 89/102/9
|
||||
f 83/108/6 84/98/16 88/101/12 87/100/11
|
||||
f 76/92/34 90/104/20 91/107/19 78/99/25
|
||||
f 79/110/29 80/109/20 90/91/20 92/90/29
|
||||
f 80/105/20 72/112/20 73/113/19 82/106/19
|
||||
f 91/107/19 82/106/19 50/54/19 52/53/19
|
||||
f 86/111/7 85/97/13 77/96/24 49/56/24 51/55/14
|
||||
f 77/96/24 78/99/25 48/57/25 49/56/24
|
||||
f 78/99/25 91/107/19 52/53/19 48/57/25
|
||||
f 74/84/14 83/108/6 86/111/7 51/55/14 47/58/14
|
||||
f 82/106/19 73/113/19 46/59/19 50/54/19
|
||||
f 74/84/14 47/58/14 44/60/14 64/89/7 61/85/13
|
||||
f 69/81/33 45/63/27 43/62/27 60/25/18
|
||||
f 60/25/18 43/62/27 95/65/19 94/26/19
|
||||
f 64/89/7 44/60/14 42/66/5 55/74/5 63/73/6
|
||||
f 55/74/5 42/66/5 41/67/28 56/76/32
|
||||
f 56/76/32 41/67/28 45/63/27 69/81/33
|
||||
f 17/24/17 16/23/2 8/61/26
|
||||
f 94/26/19 73/113/19 72/112/20 58/114/20
|
||||
f 93/64/19 6/115/15 20/52/15 21/51/19
|
||||
f 94/26/19 95/65/19 46/59/19 73/113/19
|
||||
f 95/65/19 93/64/19 21/51/19 46/59/19
|
||||
f 8/61/26 16/2/2 6/115/15 93/64/19
|
4349
cw 9/models/desk.obj
Normal file
3188
cw 9/models/door.obj
Normal file
6823
cw 9/models/drawer.obj
Normal file
35997
cw 9/models/marbleBust.obj
Normal file
528
cw 9/models/materace.obj
Normal file
@ -0,0 +1,528 @@
|
||||
# Blender v3.2.1 OBJ File: 'untitled.blend'
|
||||
# www.blender.org
|
||||
mtllib materace.mtl
|
||||
o materace_Cube.005
|
||||
v 1.427630 0.290372 -0.807401
|
||||
v 1.453484 0.297289 -0.807401
|
||||
v 1.427630 0.297289 -0.833255
|
||||
v 1.452230 0.303802 -0.832001
|
||||
v 1.427630 0.316294 -0.852260
|
||||
v 1.427630 0.342148 -0.859177
|
||||
v 1.427630 0.469987 -0.859177
|
||||
v 1.453484 0.469987 -0.852260
|
||||
v 1.427630 0.495841 -0.852260
|
||||
v 1.452230 0.494587 -0.845747
|
||||
v 1.427630 0.514846 -0.833255
|
||||
v 1.452230 0.508333 -0.832001
|
||||
v 1.427630 0.521763 -0.807401
|
||||
v 1.453484 0.514846 -0.807401
|
||||
v 1.472489 0.495841 -0.807401
|
||||
v 1.479406 0.469987 -0.807401
|
||||
v 1.479406 0.342148 -0.807401
|
||||
v 1.472489 0.316294 -0.807401
|
||||
v 1.465976 0.317548 -0.832001
|
||||
v 1.472489 0.342148 -0.833255
|
||||
v 1.452230 0.317548 -0.845747
|
||||
v 1.453484 0.342148 -0.852260
|
||||
v 1.472489 0.469987 -0.833255
|
||||
v 1.465976 0.494587 -0.832001
|
||||
v 0.886278 0.290372 -0.807401
|
||||
v 0.886278 0.521763 -0.807401
|
||||
v 0.886278 0.297306 -0.833285
|
||||
v 0.886278 0.316264 -0.852242
|
||||
v 0.886278 0.342148 -0.859177
|
||||
v 0.886278 0.469987 -0.859177
|
||||
v 0.886278 0.495871 -0.852242
|
||||
v 0.886278 0.514828 -0.833285
|
||||
v 0.344926 0.290372 -0.807401
|
||||
v 0.319072 0.297289 -0.807401
|
||||
v 0.344926 0.297289 -0.833255
|
||||
v 0.320326 0.303802 -0.832001
|
||||
v 0.344926 0.316294 -0.852260
|
||||
v 0.344926 0.342148 -0.859177
|
||||
v 0.344926 0.469987 -0.859177
|
||||
v 0.319072 0.469987 -0.852260
|
||||
v 0.344926 0.495841 -0.852260
|
||||
v 0.320326 0.494587 -0.845747
|
||||
v 0.344926 0.514846 -0.833255
|
||||
v 0.320326 0.508333 -0.832001
|
||||
v 0.344926 0.521763 -0.807401
|
||||
v 0.319072 0.514846 -0.807401
|
||||
v 0.300067 0.495841 -0.807401
|
||||
v 0.293150 0.469987 -0.807401
|
||||
v 0.293150 0.342148 -0.807401
|
||||
v 0.300067 0.316294 -0.807401
|
||||
v 0.306580 0.317548 -0.832001
|
||||
v 0.300067 0.342148 -0.833255
|
||||
v 0.320326 0.317548 -0.845747
|
||||
v 0.319072 0.342148 -0.852260
|
||||
v 0.300067 0.469987 -0.833255
|
||||
v 0.306580 0.494587 -0.832001
|
||||
v 1.427630 0.290372 0.053381
|
||||
v 1.427630 0.521763 0.053381
|
||||
v 1.453510 0.297304 0.053381
|
||||
v 1.472474 0.316268 0.053381
|
||||
v 1.453510 0.514831 0.053381
|
||||
v 1.472474 0.495867 0.053381
|
||||
v 1.479406 0.469987 0.053381
|
||||
v 1.479406 0.342148 0.053381
|
||||
v 0.886278 0.521763 0.053381
|
||||
v 0.886278 0.290372 0.053381
|
||||
v 0.344926 0.290372 0.053381
|
||||
v 0.344926 0.521763 0.053381
|
||||
v 0.319046 0.297304 0.053381
|
||||
v 0.300082 0.316268 0.053381
|
||||
v 0.319046 0.514831 0.053381
|
||||
v 0.300082 0.495867 0.053381
|
||||
v 0.293150 0.469987 0.053381
|
||||
v 0.293150 0.342148 0.053381
|
||||
v 1.427630 0.290372 0.914162
|
||||
v 1.453484 0.297289 0.914163
|
||||
v 1.427630 0.297289 0.940016
|
||||
v 1.452230 0.303802 0.938762
|
||||
v 1.427630 0.316294 0.959021
|
||||
v 1.427630 0.342148 0.965938
|
||||
v 1.427630 0.469987 0.965938
|
||||
v 1.453484 0.469987 0.959021
|
||||
v 1.427630 0.495841 0.959021
|
||||
v 1.452230 0.494587 0.952508
|
||||
v 1.427630 0.514846 0.940016
|
||||
v 1.452230 0.508333 0.938762
|
||||
v 1.427630 0.521763 0.914162
|
||||
v 1.453484 0.514846 0.914163
|
||||
v 1.472489 0.495841 0.914163
|
||||
v 1.479406 0.469987 0.914162
|
||||
v 1.479406 0.342148 0.914162
|
||||
v 1.472489 0.316294 0.914163
|
||||
v 1.465976 0.317548 0.938762
|
||||
v 1.472489 0.342148 0.940016
|
||||
v 1.452230 0.317548 0.952508
|
||||
v 1.453484 0.342148 0.959021
|
||||
v 1.472489 0.469987 0.940016
|
||||
v 1.465976 0.494587 0.938762
|
||||
v 0.886278 0.290372 0.914162
|
||||
v 0.886278 0.521763 0.914162
|
||||
v 0.886278 0.297306 0.940046
|
||||
v 0.886278 0.316264 0.959004
|
||||
v 0.886278 0.342148 0.965938
|
||||
v 0.886278 0.469987 0.965938
|
||||
v 0.886278 0.495871 0.959004
|
||||
v 0.886278 0.514828 0.940046
|
||||
v 0.344926 0.290372 0.914162
|
||||
v 0.319072 0.297289 0.914163
|
||||
v 0.344926 0.297289 0.940016
|
||||
v 0.320326 0.303802 0.938762
|
||||
v 0.344926 0.316294 0.959021
|
||||
v 0.344926 0.342148 0.965938
|
||||
v 0.344926 0.469987 0.965938
|
||||
v 0.319072 0.469987 0.959021
|
||||
v 0.344926 0.495841 0.959021
|
||||
v 0.320326 0.494587 0.952508
|
||||
v 0.344926 0.514846 0.940016
|
||||
v 0.320326 0.508333 0.938762
|
||||
v 0.344926 0.521763 0.914162
|
||||
v 0.319072 0.514846 0.914163
|
||||
v 0.300067 0.495841 0.914163
|
||||
v 0.293150 0.469987 0.914162
|
||||
v 0.293150 0.342148 0.914162
|
||||
v 0.300067 0.316294 0.914163
|
||||
v 0.306580 0.317548 0.938762
|
||||
v 0.300067 0.342148 0.940016
|
||||
v 0.320326 0.317548 0.952508
|
||||
v 0.319072 0.342148 0.959021
|
||||
v 0.300067 0.469987 0.940016
|
||||
v 0.306580 0.494587 0.938762
|
||||
vt 0.676957 0.525890
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668986 0.521315
|
||||
vt 0.668580 0.525890
|
||||
vt 0.676957 0.516261
|
||||
vt 0.668986 0.516261
|
||||
vt 0.852367 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.852367 0.516642
|
||||
vt 0.852367 0.516642
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.852367 0.516261
|
||||
vt 0.852367 0.521076
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668986 0.516261
|
||||
vt 0.668986 0.521315
|
||||
vt 0.852367 0.525890
|
||||
vt 0.676957 0.525890
|
||||
vt 0.668580 0.525890
|
||||
vt 0.852367 0.521076
|
||||
vt 0.852367 0.525890
|
||||
vt 0.660181 0.685966
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.685966
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660181 0.525890
|
||||
vt 0.676957 0.525890
|
||||
vt 0.668580 0.525890
|
||||
vt 0.668986 0.521315
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668986 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668986 0.516261
|
||||
vt 0.668986 0.521315
|
||||
vt 0.676957 0.525890
|
||||
vt 0.668580 0.525890
|
||||
vt 0.660181 0.685966
|
||||
vt 0.660181 0.685966
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660752 0.685966
|
||||
vt 0.668572 0.685966
|
||||
vt 0.660752 0.685966
|
||||
vt 0.668572 0.685966
|
||||
vt 0.676957 0.685966
|
||||
vt 0.676957 0.685966
|
||||
vt 0.852367 0.685966
|
||||
vt 0.852367 0.685966
|
||||
vt 0.660752 0.685966
|
||||
vt 0.668572 0.685966
|
||||
vt 0.660752 0.685966
|
||||
vt 0.668572 0.685966
|
||||
vt 0.676957 0.685966
|
||||
vt 0.676957 0.685966
|
||||
vt 0.676957 0.525890
|
||||
vt 0.668580 0.525890
|
||||
vt 0.668986 0.521315
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668986 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.852367 0.516261
|
||||
vt 0.852367 0.516642
|
||||
vt 0.676957 0.516261
|
||||
vt 0.852367 0.516642
|
||||
vt 0.852367 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.852367 0.521076
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668986 0.516261
|
||||
vt 0.668986 0.521315
|
||||
vt 0.852367 0.525890
|
||||
vt 0.676957 0.525890
|
||||
vt 0.668580 0.525890
|
||||
vt 0.852367 0.521076
|
||||
vt 0.852367 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521315
|
||||
vt 0.676957 0.525890
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668986 0.521315
|
||||
vt 0.668580 0.525890
|
||||
vt 0.676957 0.516261
|
||||
vt 0.668986 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.516261
|
||||
vt 0.676957 0.521082
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668580 0.516261
|
||||
vt 0.668986 0.516261
|
||||
vt 0.668986 0.521315
|
||||
vt 0.676957 0.525890
|
||||
vt 0.668580 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.525890
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.521082
|
||||
vt 0.660181 0.521315
|
||||
vt 0.660181 0.525890
|
||||
vn 0.1291 -0.9832 -0.1291
|
||||
vn 0.1211 -0.8623 -0.4917
|
||||
vn 0.4464 -0.7756 -0.4464
|
||||
vn 0.4917 -0.8623 -0.1211
|
||||
vn 0.1211 -0.4917 -0.8623
|
||||
vn 0.4464 -0.4464 -0.7756
|
||||
vn 0.0000 -0.1304 -0.9915
|
||||
vn 0.1291 -0.1291 -0.9832
|
||||
vn 0.0000 -0.4999 -0.8661
|
||||
vn 0.0000 0.4999 -0.8661
|
||||
vn 0.1211 0.4917 -0.8623
|
||||
vn 0.1291 0.1291 -0.9832
|
||||
vn -0.0000 0.1304 -0.9915
|
||||
vn 0.0000 0.8661 -0.4999
|
||||
vn 0.1211 0.8623 -0.4917
|
||||
vn 0.4917 0.1211 -0.8623
|
||||
vn 0.4917 -0.1211 -0.8623
|
||||
vn 0.4464 0.4464 -0.7756
|
||||
vn 0.4464 0.7756 -0.4464
|
||||
vn 0.0000 0.9915 -0.1304
|
||||
vn 0.1291 0.9832 -0.1291
|
||||
vn 0.4917 0.8623 -0.1211
|
||||
vn 0.0000 -0.8661 -0.4999
|
||||
vn 0.0000 -0.9915 -0.1304
|
||||
vn 0.9915 -0.1304 0.0000
|
||||
vn 0.9832 -0.1291 -0.1291
|
||||
vn 0.9832 0.1291 -0.1291
|
||||
vn 0.9915 0.1304 0.0000
|
||||
vn 0.8623 -0.4917 -0.1211
|
||||
vn 0.7756 -0.4464 -0.4464
|
||||
vn 0.8623 -0.1211 -0.4917
|
||||
vn 0.8623 0.1211 -0.4917
|
||||
vn 0.7756 0.4464 -0.4464
|
||||
vn 0.8623 0.4917 -0.1211
|
||||
vn -0.1291 -0.9832 -0.1291
|
||||
vn -0.4917 -0.8623 -0.1211
|
||||
vn -0.4464 -0.7756 -0.4464
|
||||
vn -0.1211 -0.8623 -0.4917
|
||||
vn -0.4464 -0.4464 -0.7756
|
||||
vn -0.1211 -0.4917 -0.8623
|
||||
vn -0.1291 -0.1291 -0.9832
|
||||
vn -0.1291 0.1291 -0.9832
|
||||
vn -0.1211 0.4917 -0.8623
|
||||
vn -0.1211 0.8623 -0.4917
|
||||
vn -0.4917 0.1211 -0.8623
|
||||
vn -0.4917 -0.1211 -0.8623
|
||||
vn -0.4464 0.4464 -0.7756
|
||||
vn -0.4464 0.7756 -0.4464
|
||||
vn -0.1291 0.9832 -0.1291
|
||||
vn -0.4917 0.8623 -0.1211
|
||||
vn -0.9915 -0.1304 -0.0000
|
||||
vn -0.9915 0.1304 0.0000
|
||||
vn -0.9832 0.1291 -0.1291
|
||||
vn -0.9832 -0.1291 -0.1291
|
||||
vn -0.8623 -0.1211 -0.4917
|
||||
vn -0.7756 -0.4464 -0.4464
|
||||
vn -0.8623 -0.4917 -0.1211
|
||||
vn -0.8623 0.1211 -0.4917
|
||||
vn -0.8623 0.4917 -0.1211
|
||||
vn -0.7756 0.4464 -0.4464
|
||||
vn -0.8661 0.4999 0.0000
|
||||
vn -0.4999 0.8661 0.0000
|
||||
vn -0.8661 -0.4999 -0.0000
|
||||
vn -0.4999 -0.8661 -0.0000
|
||||
vn -0.1304 0.9915 -0.0000
|
||||
vn -0.1304 -0.9915 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.8661 0.4999 -0.0000
|
||||
vn 0.4999 0.8661 0.0000
|
||||
vn 0.8661 -0.4999 0.0000
|
||||
vn 0.4999 -0.8661 0.0000
|
||||
vn 0.1304 0.9915 0.0000
|
||||
vn 0.1304 -0.9915 0.0000
|
||||
vn 0.1291 -0.9832 0.1291
|
||||
vn 0.4917 -0.8623 0.1211
|
||||
vn 0.4464 -0.7756 0.4464
|
||||
vn 0.1211 -0.8623 0.4917
|
||||
vn 0.4464 -0.4464 0.7756
|
||||
vn 0.1211 -0.4917 0.8623
|
||||
vn 0.0000 -0.1304 0.9915
|
||||
vn 0.0000 -0.4999 0.8661
|
||||
vn 0.1291 -0.1291 0.9832
|
||||
vn 0.0000 0.4999 0.8661
|
||||
vn -0.0000 0.1304 0.9915
|
||||
vn 0.1291 0.1291 0.9832
|
||||
vn 0.1211 0.4917 0.8623
|
||||
vn 0.0000 0.8661 0.4999
|
||||
vn 0.1211 0.8623 0.4917
|
||||
vn 0.4917 0.1211 0.8623
|
||||
vn 0.4917 -0.1211 0.8623
|
||||
vn 0.4464 0.4464 0.7756
|
||||
vn 0.4464 0.7756 0.4464
|
||||
vn 0.0000 0.9915 0.1304
|
||||
vn 0.1291 0.9832 0.1291
|
||||
vn 0.4917 0.8623 0.1211
|
||||
vn 0.0000 -0.8661 0.4999
|
||||
vn 0.0000 -0.9915 0.1304
|
||||
vn 0.9832 0.1291 0.1291
|
||||
vn 0.9832 -0.1291 0.1291
|
||||
vn 0.8623 -0.1211 0.4917
|
||||
vn 0.7756 -0.4464 0.4464
|
||||
vn 0.8623 -0.4917 0.1211
|
||||
vn 0.8623 0.1211 0.4917
|
||||
vn 0.8623 0.4917 0.1211
|
||||
vn 0.7756 0.4464 0.4464
|
||||
vn -0.1291 -0.9832 0.1291
|
||||
vn -0.1211 -0.8623 0.4917
|
||||
vn -0.4464 -0.7756 0.4464
|
||||
vn -0.4917 -0.8623 0.1211
|
||||
vn -0.1211 -0.4917 0.8623
|
||||
vn -0.4464 -0.4464 0.7756
|
||||
vn -0.1291 -0.1291 0.9832
|
||||
vn -0.1211 0.4917 0.8623
|
||||
vn -0.1291 0.1291 0.9832
|
||||
vn -0.1211 0.8623 0.4917
|
||||
vn -0.4917 0.1211 0.8623
|
||||
vn -0.4917 -0.1211 0.8623
|
||||
vn -0.4464 0.4464 0.7756
|
||||
vn -0.4464 0.7756 0.4464
|
||||
vn -0.1291 0.9832 0.1291
|
||||
vn -0.4917 0.8623 0.1211
|
||||
vn -0.9832 -0.1291 0.1291
|
||||
vn -0.9832 0.1291 0.1291
|
||||
vn -0.8623 -0.4917 0.1211
|
||||
vn -0.7756 -0.4464 0.4464
|
||||
vn -0.8623 -0.1211 0.4917
|
||||
vn -0.8623 0.1211 0.4917
|
||||
vn -0.7756 0.4464 0.4464
|
||||
vn -0.8623 0.4917 0.1211
|
||||
usemtl None
|
||||
s 1
|
||||
f 1/1/1 3/2/2 4/3/3 2/4/4
|
||||
f 3/2/2 5/5/5 21/6/6 4/3/3
|
||||
f 29/7/7 6/8/8 5/5/5 28/9/9
|
||||
f 31/10/10 9/11/11 7/12/12 30/13/13
|
||||
f 32/14/14 11/15/15 9/11/11 31/10/10
|
||||
f 8/16/16 22/17/17 6/8/8 7/12/12
|
||||
f 7/12/12 9/11/11 10/18/18 8/16/16
|
||||
f 9/11/11 11/15/15 12/19/19 10/18/18
|
||||
f 26/20/20 13/21/21 11/15/15 32/14/14
|
||||
f 13/21/21 14/22/22 12/19/19 11/15/15
|
||||
f 27/23/23 3/2/2 1/1/1 25/24/24
|
||||
f 64/25/25 17/26/26 16/27/27 63/28/28
|
||||
f 28/9/9 5/5/5 3/2/2 27/23/23
|
||||
f 17/26/26 18/29/29 19/30/30 20/31/31
|
||||
f 18/29/29 2/4/4 4/3/3 19/30/30
|
||||
f 22/17/17 20/31/31 19/30/30 21/6/6
|
||||
f 21/6/6 19/30/30 4/3/3
|
||||
f 6/8/8 22/17/17 21/6/6 5/5/5
|
||||
f 23/32/32 20/31/31 22/17/17 8/16/16
|
||||
f 16/27/27 17/26/26 20/31/31 23/32/32
|
||||
f 16/27/27 23/32/32 24/33/33 15/34/34
|
||||
f 23/32/32 8/16/16 10/18/18 24/33/33
|
||||
f 14/22/22 15/34/34 24/33/33 12/19/19
|
||||
f 10/18/18 12/19/19 24/33/33
|
||||
f 6/8/8 29/7/7 30/13/13 7/12/12
|
||||
f 33/35/35 34/36/36 36/37/37 35/38/38
|
||||
f 35/38/38 36/37/37 53/39/39 37/40/40
|
||||
f 29/7/7 28/9/9 37/40/40 38/41/41
|
||||
f 31/10/10 30/13/13 39/42/42 41/43/43
|
||||
f 32/14/14 31/10/10 41/43/43 43/44/44
|
||||
f 40/45/45 39/42/42 38/41/41 54/46/46
|
||||
f 39/42/42 40/45/45 42/47/47 41/43/43
|
||||
f 41/43/43 42/47/47 44/48/48 43/44/44
|
||||
f 26/20/20 32/14/14 43/44/44 45/49/49
|
||||
f 45/49/49 43/44/44 44/48/48 46/50/50
|
||||
f 27/23/23 25/24/24 33/35/35 35/38/38
|
||||
f 74/51/51 73/52/52 48/53/53 49/54/54
|
||||
f 28/9/9 27/23/23 35/38/38 37/40/40
|
||||
f 49/54/54 52/55/55 51/56/56 50/57/57
|
||||
f 50/57/57 51/56/56 36/37/37 34/36/36
|
||||
f 54/46/46 53/39/39 51/56/56 52/55/55
|
||||
f 53/39/39 36/37/37 51/56/56
|
||||
f 38/41/41 37/40/40 53/39/39 54/46/46
|
||||
f 55/58/58 40/45/45 54/46/46 52/55/55
|
||||
f 48/53/53 55/58/58 52/55/55 49/54/54
|
||||
f 48/53/53 47/59/59 56/60/60 55/58/58
|
||||
f 55/58/58 56/60/60 42/47/47 40/45/45
|
||||
f 46/50/50 44/48/48 56/60/60 47/59/59
|
||||
f 42/47/47 56/60/60 44/48/48
|
||||
f 38/41/41 39/42/42 30/13/13 29/7/7
|
||||
f 47/59/59 48/53/53 73/52/52 72/61/61
|
||||
f 46/50/50 47/59/59 72/61/61 71/62/62
|
||||
f 49/54/54 50/57/57 70/63/63 74/51/51
|
||||
f 50/57/57 34/36/36 69/64/64 70/63/63
|
||||
f 45/49/49 46/50/50 71/62/62 68/65/65
|
||||
f 34/36/36 33/35/35 67/66/66 69/64/64
|
||||
f 33/35/35 25/24/24 66/67/67 67/66/66
|
||||
f 45/49/49 68/65/65 65/68/68 26/20/20
|
||||
f 15/34/34 62/69/69 63/28/28 16/27/27
|
||||
f 14/22/22 61/70/70 62/69/69 15/34/34
|
||||
f 17/26/26 64/25/25 60/71/71 18/29/29
|
||||
f 18/29/29 60/71/71 59/72/72 2/4/4
|
||||
f 13/21/21 58/73/73 61/70/70 14/22/22
|
||||
f 13/21/21 26/20/20 65/68/68 58/73/73
|
||||
f 2/4/4 59/72/72 57/74/74 1/1/1
|
||||
f 1/1/1 57/74/74 66/67/67 25/24/24
|
||||
f 75/75/75 76/76/76 78/77/77 77/78/78
|
||||
f 77/78/78 78/77/77 95/79/79 79/80/80
|
||||
f 103/81/81 102/82/82 79/80/80 80/83/83
|
||||
f 105/84/84 104/85/85 81/86/86 83/87/87
|
||||
f 106/88/88 105/84/84 83/87/87 85/89/89
|
||||
f 82/90/90 81/86/86 80/83/83 96/91/91
|
||||
f 81/86/86 82/90/90 84/92/92 83/87/87
|
||||
f 83/87/87 84/92/92 86/93/93 85/89/89
|
||||
f 100/94/94 106/88/88 85/89/89 87/95/95
|
||||
f 87/95/95 85/89/89 86/93/93 88/96/96
|
||||
f 101/97/97 99/98/98 75/75/75 77/78/78
|
||||
f 64/25/25 63/28/28 90/99/99 91/100/100
|
||||
f 102/82/82 101/97/97 77/78/78 79/80/80
|
||||
f 91/100/100 94/101/101 93/102/102 92/103/103
|
||||
f 92/103/103 93/102/102 78/77/77 76/76/76
|
||||
f 96/91/91 95/79/79 93/102/102 94/101/101
|
||||
f 95/79/79 78/77/77 93/102/102
|
||||
f 80/83/83 79/80/80 95/79/79 96/91/91
|
||||
f 97/104/104 82/90/90 96/91/91 94/101/101
|
||||
f 90/99/99 97/104/104 94/101/101 91/100/100
|
||||
f 90/99/99 89/105/105 98/106/106 97/104/104
|
||||
f 97/104/104 98/106/106 84/92/92 82/90/90
|
||||
f 88/96/96 86/93/93 98/106/106 89/105/105
|
||||
f 84/92/92 98/106/106 86/93/93
|
||||
f 80/83/83 81/86/86 104/85/85 103/81/81
|
||||
f 107/107/107 109/108/108 110/109/109 108/110/110
|
||||
f 109/108/108 111/111/111 127/112/112 110/109/109
|
||||
f 103/81/81 112/113/113 111/111/111 102/82/82
|
||||
f 105/84/84 115/114/114 113/115/115 104/85/85
|
||||
f 106/88/88 117/116/116 115/114/114 105/84/84
|
||||
f 114/117/117 128/118/118 112/113/113 113/115/115
|
||||
f 113/115/115 115/114/114 116/119/119 114/117/117
|
||||
f 115/114/114 117/116/116 118/120/120 116/119/119
|
||||
f 100/94/94 119/121/121 117/116/116 106/88/88
|
||||
f 119/121/121 120/122/122 118/120/120 117/116/116
|
||||
f 101/97/97 109/108/108 107/107/107 99/98/98
|
||||
f 74/51/51 123/123/123 122/124/124 73/52/52
|
||||
f 102/82/82 111/111/111 109/108/108 101/97/97
|
||||
f 123/123/123 124/125/125 125/126/126 126/127/127
|
||||
f 124/125/125 108/110/110 110/109/109 125/126/126
|
||||
f 128/118/118 126/127/127 125/126/126 127/112/112
|
||||
f 127/112/112 125/126/126 110/109/109
|
||||
f 112/113/113 128/118/118 127/112/112 111/111/111
|
||||
f 129/128/128 126/127/127 128/118/118 114/117/117
|
||||
f 122/124/124 123/123/123 126/127/127 129/128/128
|
||||
f 122/124/124 129/128/128 130/129/129 121/130/130
|
||||
f 129/128/128 114/117/117 116/119/119 130/129/129
|
||||
f 120/122/122 121/130/130 130/129/129 118/120/120
|
||||
f 116/119/119 118/120/120 130/129/129
|
||||
f 112/113/113 103/81/81 104/85/85 113/115/115
|
||||
f 121/130/130 72/61/61 73/52/52 122/124/124
|
||||
f 120/122/122 71/62/62 72/61/61 121/130/130
|
||||
f 123/123/123 74/51/51 70/63/63 124/125/125
|
||||
f 124/125/125 70/63/63 69/64/64 108/110/110
|
||||
f 119/121/121 68/65/65 71/62/62 120/122/122
|
||||
f 108/110/110 69/64/64 67/66/66 107/107/107
|
||||
f 107/107/107 67/66/66 66/67/67 99/98/98
|
||||
f 119/121/121 100/94/94 65/68/68 68/65/65
|
||||
f 89/105/105 90/99/99 63/28/28 62/69/69
|
||||
f 88/96/96 89/105/105 62/69/69 61/70/70
|
||||
f 91/100/100 92/103/103 60/71/71 64/25/25
|
||||
f 92/103/103 76/76/76 59/72/72 60/71/71
|
||||
f 87/95/95 88/96/96 61/70/70 58/73/73
|
||||
f 87/95/95 58/73/73 65/68/68 100/94/94
|
||||
f 76/76/76 75/75/75 57/74/74 59/72/72
|
||||
f 75/75/75 99/98/98 66/67/67 57/74/74
|