This commit is contained in:
Angelika Iskra 2023-01-14 12:00:59 +01:00
commit a50c6b8a92
1086 changed files with 260800 additions and 0 deletions

BIN
.vs/grk-project/v16/.suo Normal file

Binary file not shown.

Binary file not shown.

BIN
Debug/grk-cw1.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw1.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw2.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw2.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw3.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw3.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw4.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw4.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw5.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw5.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw7.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw7.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw8.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw8.pdb Normal file

Binary file not shown.

BIN
Debug/grk-cw9.exe Normal file

Binary file not shown.

BIN
Debug/grk-cw9.pdb Normal file

Binary file not shown.

BIN
Debug/room.exe Normal file

Binary file not shown.

BIN
Debug/room.pdb Normal file

Binary file not shown.

BIN
assimp-vc141-mt.dll Normal file

Binary file not shown.

BIN
assimp-vc141-mtd.dll Normal file

Binary file not shown.

BIN
cw 9/Debug/Box.obj Normal file

Binary file not shown.

BIN
cw 9/Debug/Camera.obj Normal file

Binary file not shown.

BIN
cw 9/Debug/Render_Utils.obj Normal file

Binary file not shown.

BIN
cw 9/Debug/SOIL.obj Normal file

Binary file not shown.

Binary file not shown.

BIN
cw 9/Debug/Texture.obj Normal file

Binary file not shown.

View 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
View 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

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.19041.0:
Debug|Win32|J:\GrafikaKomputerowa\grk\|

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
cw 9/Debug/image_DXT.obj Normal file

Binary file not shown.

BIN
cw 9/Debug/image_helper.obj Normal file

Binary file not shown.

BIN
cw 9/Debug/main.obj Normal file

Binary file not shown.

View 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>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.19041.0:
Debug|Win32|J:\GrafikaKomputerowa\grk\|

Binary file not shown.

BIN
cw 9/Debug/vc142.idb Normal file

Binary file not shown.

BIN
cw 9/Debug/vc142.pdb Normal file

Binary file not shown.

183
cw 9/Zadania 9.html Normal file
View 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>, &amp;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>, &amp;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&lt;lightSpacePosNormalized</code> można wziąć <code>closestDepth+bias&gt;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
View 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

Binary file not shown.

BIN
cw 9/assimp-vc141-mtd.dll Normal file

Binary file not shown.

BIN
cw 9/freeglut.dll Normal file

Binary file not shown.

BIN
cw 9/glew32.dll Normal file

Binary file not shown.

126
cw 9/grk-cw9.vcxproj Normal file
View 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>

View 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>

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
cw 9/img/3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
cw 9/img/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
cw 9/img/5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
cw 9/img/6.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
cw 9/img/7.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
cw 9/img/8.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

1254
cw 9/img/Figure_1.eps Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
cw 9/img/blending1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
cw 9/img/camera.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
cw 9/img/capture.webm Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
cw 9/img/noise_examples.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
cw 9/img/shadows1.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 KiB

BIN
cw 9/img/spotlight.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
cw 9/img/stride_offest.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
cw 9/img/struktura.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
cw 9/img/sun.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
cw 9/img/textures.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

BIN
cw 9/img/z_depth_graph.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
cw 9/img/z_depth_graph2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

5983
cw 9/models/bed.obj Normal file

File diff suppressed because it is too large Load Diff

335
cw 9/models/chair.obj Normal file
View 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

File diff suppressed because it is too large Load Diff

3188
cw 9/models/door.obj Normal file

File diff suppressed because it is too large Load Diff

6823
cw 9/models/drawer.obj Normal file

File diff suppressed because it is too large Load Diff

35997
cw 9/models/marbleBust.obj Normal file

File diff suppressed because it is too large Load Diff

528
cw 9/models/materace.obj Normal file
View 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

2108
cw 9/models/pencils.obj Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More