diff --git a/docs/documentation.aux b/docs/documentation.aux index e616d66da8308aef6d3236728e5a4ed9cc59b3bf..5d4ccd19e75dc76ff09ee9f2cb6c4005fcb4a6be 100644 --- a/docs/documentation.aux +++ b/docs/documentation.aux @@ -48,10 +48,10 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Distance Constraint}{4}{subsection.3.3}\protected@file@percent } \newlabel{section:DistanceConstraint}{{3.3}{4}{Distance Constraint}{subsection.3.3}{}} \newlabel{eq:distance_constraint}{{1}{4}{Distance Constraint}{equation.3.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Bending Constraint}{4}{subsection.3.4}\protected@file@percent } -\newlabel{section:bendingConstraint}{{3.4}{4}{Bending Constraint}{subsection.3.4}{}} \newlabel{fig:dist_constr_proj}{{\caption@xref {fig:dist_constr_proj}{ on input line 427}}{4}{Distance Constraint}{figure.caption.7}{}} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Projection of the distance constraint $C(\boldsymbol {p_1}, \boldsymbol {p_2}) = \lvert \boldsymbol {p_1} - \boldsymbol {p_2} \rvert - d$. The corrections $\Delta \boldsymbol {p_i}$ are weighted according to the inverse masses $w_i = 1/m_i$.\relax }}{4}{figure.caption.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Bending Constraint}{4}{subsection.3.4}\protected@file@percent } +\newlabel{section:bendingConstraint}{{3.4}{4}{Bending Constraint}{subsection.3.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Collision Constraint}{4}{subsection.3.5}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Different distance and particle pairing definitions yield significantly different results. Particle masses were slightly randomized for a variance between strands. In each below simulation, $nr_{seg}$ particles of length $l_{seg}$ were generated. Distance constraints acting as bending constraints had a stiffness parameter $k$. Distance constraints responsible for keeping the particles $l_{seg}$ distance apart always had a $k_{pos}=1$ stiffness parameter.\relax }}{5}{figure.caption.8}\protected@file@percent } \newlabel{fig:bendingConstraint}{{3}{5}{Different distance and particle pairing definitions yield significantly different results. Particle masses were slightly randomized for a variance between strands. In each below simulation, $nr_{seg}$ particles of length $l_{seg}$ were generated. Distance constraints acting as bending constraints had a stiffness parameter $k$. Distance constraints responsible for keeping the particles $l_{seg}$ distance apart always had a $k_{pos}=1$ stiffness parameter.\relax }{figure.caption.8}{}} @@ -78,7 +78,6 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {7.5}Sequence for randomizing hair positions}{6}{subsection.7.5}\protected@file@percent } \newlabel{section:futureHalton}{{7.5}{6}{Sequence for randomizing hair positions}{subsection.7.5}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.6}Rendering}{6}{subsection.7.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {7.7}Moving to the GPU}{6}{subsection.7.7}\protected@file@percent } \bibstyle{ACM-Reference-Format} \bibdata{references} \bibcite{PixarPaper}{{1}{2013}{{Iben et~al\mbox {.}}}{{Iben, Meyer, Petrovic, Soares, Anderson, and Witkin}}} @@ -88,6 +87,7 @@ \bibcite{RappRealTime}{{5}{2014}{{Rapp}}{{Rapp}}} \bibcite{UmenhofferSimulation}{{6}{2016}{{Umenhoffer et~al\mbox {.}}}{{Umenhoffer, Marschal, and Suti}}} \citation{MullerPBD} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.7}Moving to the GPU}{7}{subsection.7.7}\protected@file@percent } \@writefile{toc}{\contentsline {section}{Acknowledgments}{7}{section*.10}\protected@file@percent } \@writefile{toc}{\contentsline {section}{References}{7}{section*.12}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {A}Constraint Projection}{7}{appendix.A}\protected@file@percent } diff --git a/docs/documentation.log b/docs/documentation.log index 10590d526fa7244ec14a9e785855433b9ced2d8a..68eb646ce3fe94cf529e3da971d8a1174dfbe6fc 100644 --- a/docs/documentation.log +++ b/docs/documentation.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.8) 10 DEC 2020 22:27 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.8) 11 DEC 2020 00:23 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -1283,11 +1283,11 @@ File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) (/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS) ) -<teaser.png, id=142, 602.25pt x 401.5pt> -File: teaser.png Graphic file (type png) -<use teaser.png> -Package pdftex.def Info: teaser.png used on input line 128. -(pdftex.def) Requested size: 505.89pt x 337.27606pt. +<teaser_redhead.png, id=142, 444.91219pt x 297.36093pt> +File: teaser_redhead.png Graphic file (type png) +<use teaser_redhead.png> +Package pdftex.def Info: teaser_redhead.png used on input line 128. +(pdftex.def) Requested size: 505.89pt x 338.11926pt. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be (Font) scaled to size 12.0pt on input line 128. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be @@ -1324,7 +1324,7 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] [1.1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} - <./teaser.png>] + <./teaser_redhead.png>] LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be (Font) scaled to size 10.0pt on input line 230. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be @@ -1380,7 +1380,10 @@ LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be (Font) scaled to size 7.0pt on input line 293. LaTeX Font Info: Font shape `T1/zi4/m/n' will be (Font) scaled to size 8.0pt on input line 298. -[2.2] + +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [2.2] Underfull \vbox (badness 10000) has occurred while \output is active [] [3.3] @@ -1437,7 +1440,11 @@ Underfull \hbox (badness 10000) in paragraph at lines 625--625 / drive / folders / 1n79xSokrBe2lKQixX _ [] -[6.6] Processing 'acks' comment. + +Underfull \vbox (badness 3919) has occurred while \output is active [] + + [6.6] +Processing 'acks' comment. \openout3 = `comment.cut'. Comment 'acks' writing to comment.cut. @@ -1485,8 +1492,8 @@ Package rerunfilecheck Info: File `documentation.out' has not changed. ) Here is how much of TeX's memory you used: 30722 strings out of 481239 - 535825 string characters out of 5920377 - 819874 words of memory out of 5000000 + 535873 string characters out of 5920377 + 819887 words of memory out of 5000000 44731 multiletter control sequences out of 15000+600000 724208 words of font info for 377 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 @@ -1518,7 +1525,7 @@ tineTZ.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/txexs.pfb></ usr/share/texlive/texmf-dist/fonts/type1/public/newtx/txmiaX.pfb></usr/share/te xlive/texmf-dist/fonts/type1/public/txfonts/txsyb.pfb></usr/share/texlive/texmf -dist/fonts/type1/public/newtx/txsys.pfb> -Output written on documentation.pdf (8 pages, 624343 bytes). +Output written on documentation.pdf (8 pages, 627309 bytes). PDF statistics: 467 PDF objects out of 1000 (max. 8388607) 403 compressed objects within 5 object streams diff --git a/docs/documentation.pdf b/docs/documentation.pdf index 2bf0c6012304def2dec425ec1869d1e74407cf64..efff0b46b345166beaff638a38eb20bc8cc0b477 100644 Binary files a/docs/documentation.pdf and b/docs/documentation.pdf differ diff --git a/docs/documentation.tex b/docs/documentation.tex index 68050b1ffdf4fb4935479822c98d160f25399019..59ab91330747d88c240e5a9f45e5794fc2e8d4e5 100644 --- a/docs/documentation.tex +++ b/docs/documentation.tex @@ -116,7 +116,7 @@ %% information and the body of the document, and typically spans the %% page. \begin{teaserfigure} - \includegraphics[width=\textwidth]{teaser.png} + \includegraphics[width=\textwidth]{teaser_redhead.png} \caption{The achieved visual look} \Description{Using 400 hair pieces, with 25 particles on each piece of hair.} \label{fig:teaser} diff --git a/docs/teaser_redhead.png b/docs/teaser_redhead.png new file mode 100644 index 0000000000000000000000000000000000000000..11f8035426608e6ff854a1dde04417b3b5cb62f3 Binary files /dev/null and b/docs/teaser_redhead.png differ diff --git a/src/rendering/Scene.cpp b/src/rendering/Scene.cpp index 19cdd7af7542296bd8e9d0ae7419e7269967bacb..1a4bf9143a088446d24502c0068341c46f4d5580 100644 --- a/src/rendering/Scene.cpp +++ b/src/rendering/Scene.cpp @@ -13,9 +13,9 @@ Scene::Scene(int w, int h) : camera(vec3(0, -.15f, .5), // Camera position (wEye void Scene::Build() { - size_t nrSims = 200; - size_t nrSegments = 30; - float lSeg = 0.025f; + size_t nrSims = 250; + size_t nrSegments = 45; + float lSeg = 0.02f; Shader *basicShader = new BasicShader(); @@ -24,16 +24,16 @@ void Scene::Build() { auto sphere = new Sphere(); Shader *phongShader = new PhongShader(); Material *headMaterial = new Material; - headMaterial->kd = vec3(0.5f, 0.5f, 0.5f); - headMaterial->ks = vec3(.7f, .7f, .7f); - headMaterial->ka = vec3(.15f, .15f, .15f); - headMaterial->shininess = 10; + headMaterial->kd = vec3(.8f, 0.8f, 0.8f); + headMaterial->ks = vec3(.5f, .5f, .5f); + headMaterial->ka = vec3(1.f, 1.f, 1.f); + headMaterial->shininess = 100; - Texture *headTexture = new UniformColorTexture(.25f, .25f, .35f); + Texture *headTexture = new UniformColorTexture(.49f, .8666f, .78f); // Texture *headTexture = new CheckerBoardTexture(1, 0); // auto headObject = new HeadObject(phongShader, sphere, headMaterial, headTexture); - auto headObject = new HeadObject(phongShader, new ObjGeometry("../data/susanne.obj"), headMaterial, headTexture); + auto headObject = new HeadObject(phongShader, new ObjGeometry("../data/sphere.obj"), headMaterial, headTexture); headObject->Scale(vec3(.35, .35, .35)); objects.push_back(headObject); @@ -51,18 +51,18 @@ void Scene::Build() { // objects.push_back(testObject); // Lights - lights.resize(1); + lights.resize(3); lights[0].wLightPos = vec4(0.0f, 3.0f, 1.5f, 0); // ideal point -> directional light source - lights[0].La = vec3(3.0f, 3.0f, 3.0f); + lights[0].La = vec3(0.0f, 7.0f, 7.0f); lights[0].Le = vec3(1, 1, 1); -// lights[1].wLightPos = vec4(2.0f, 3.0f, 1.0f, 0); // ideal point -> directional light source -// lights[1].La = vec3(0.2f, 0.2f, 0.2f); -// lights[1].Le = vec3(1, 1, 1); + lights[1].wLightPos = vec4(2.0f, 3.0f, 1.0f, 0); // ideal point -> directional light source + lights[1].La = vec3(0.f, 3.5f, 3.5f); + lights[1].Le = vec3(1, 1, 1); -// lights[2].wLightPos = vec4(0, 0, 1, 0); // ideal point -> directional light source -// lights[2].La = vec3(0.1f, 0.1f, 0.1f); -// lights[2].Le = vec3(1, 1, 1); + lights[2].wLightPos = vec4(0, 0, 1, 0); // ideal point -> directional light source + lights[2].La = vec3(0.f, 3.5f, 3.5f); + lights[2].Le = vec3(1, 1, 1); } void Scene::Render() {