diff --git a/docs/documentation.aux b/docs/documentation.aux index c88635d3e648a55100f3b2087923bbdf517076ef..914bbb8a13d275b3f5a73648c90d47187351d87d 100644 --- a/docs/documentation.aux +++ b/docs/documentation.aux @@ -24,25 +24,34 @@ \citation{PixarPaper} \citation{PixarPaper} \citation{PixarPaper} +\citation{MullerPBD} \citation{UmenhofferSimulation} -\bibstyle{ACM-Reference-Format} -\bibdata{references} -\bibcite{PixarPaper}{{1}{2013}{{Iben et~al\mbox {.}}}{{Iben, Meyer, Petrovic, Soares, Anderson, and Witkin}}} -\bibcite{UmenhofferSimulation}{{2}{2016}{{Umenhoffer et~al\mbox {.}}}{{Umenhoffer, Marschal, and Suti}}} +\citation{MullerPBD} +\citation{FTLHair} +\citation{FTLHair} \@writefile{toc}{\contentsline {section}{\numberline {2}Overview of considered methods}{2}{section.2}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Mass Spring System}{2}{subsection.2.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Position Based Dynamics (PBD)}{2}{subsection.2.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Follow the Leader (FTL)}{2}{subsection.2.3}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{Acknowledgments}{2}{section*.7}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{References}{2}{section*.9}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {A}Supplementary development}{2}{appendix.A}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {A.1}OBJ Reader}{2}{subsection.A.1}\protected@file@percent } -\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Supported OBJ Data Types\relax }}{2}{table.caption.10}\protected@file@percent } -\newlabel{tab:objdatatypes}{{1}{2}{Supported OBJ Data Types\relax }{table.caption.10}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {A.2}Recording the simulation on-the-fly}{2}{subsection.A.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Follow-the-Leader (FTL)}{2}{subsection.2.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}Results}{2}{section.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Conclusion}{2}{section.4}\protected@file@percent } +\bibstyle{ACM-Reference-Format} +\bibdata{references} +\bibcite{PixarPaper}{{1}{2013}{{Iben et~al\mbox {.}}}{{Iben, Meyer, Petrovic, Soares, Anderson, and Witkin}}} +\bibcite{MullerPBD}{{2}{2007}{{M\"{u}ller et~al\mbox {.}}}{{M\"{u}ller, Heidelberger, Hennix, and Ratcliff}}} +\bibcite{FTLHair}{{3}{2012}{{Müller et~al\mbox {.}}}{{Müller, Kim, and Chentanez}}} +\bibcite{UmenhofferSimulation}{{4}{2016}{{Umenhoffer et~al\mbox {.}}}{{Umenhoffer, Marschal, and Suti}}} \newlabel{tocindent-1}{0pt} \newlabel{tocindent0}{0pt} \newlabel{tocindent1}{6.95pt} \newlabel{tocindent2}{13.79999pt} \newlabel{tocindent3}{0pt} +\@writefile{toc}{\contentsline {section}{\numberline {5}Further Work}{3}{section.5}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{Acknowledgments}{3}{section*.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{3}{section*.9}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {A}Supplementary development}{3}{appendix.A}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {A.1}OBJ Reader}{3}{subsection.A.1}\protected@file@percent } +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Supported OBJ Data Types\relax }}{3}{table.caption.10}\protected@file@percent } +\newlabel{tab:objdatatypes}{{1}{3}{Supported OBJ Data Types\relax }{table.caption.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2}Recording the simulation on-the-fly}{3}{subsection.A.2}\protected@file@percent } \newlabel{TotPages}{{3}{3}{}{page.3}{}} diff --git a/docs/documentation.bbl b/docs/documentation.bbl index b34746b0679c3c2844b59fd5d993c4d6213787af..ed7f9c6e2ac549723072d2930765c48ce09323d7 100644 --- a/docs/documentation.bbl +++ b/docs/documentation.bbl @@ -2,7 +2,7 @@ %%% Do NOT edit. File created by BibTeX with style %%% ACM-Reference-Format-Journals [18-Jan-2012]. -\begin{thebibliography}{2} +\begin{thebibliography}{4} %%% ==================================================================== %%% NOTE TO THE USER: you can override these defaults by providing @@ -59,6 +59,38 @@ \shownote{\url{http://graphics.pixar.com/library/CurlyHairB/paper.pdf}.} +\bibitem[\protect\citeauthoryear{M\"{u}ller, Heidelberger, Hennix, and + Ratcliff}{M\"{u}ller et~al\mbox{.}}{2007}]% + {MullerPBD} +\bibfield{author}{\bibinfo{person}{Matthias M\"{u}ller}, \bibinfo{person}{Bruno + Heidelberger}, \bibinfo{person}{Marcus Hennix}, {and} \bibinfo{person}{John + Ratcliff}.} \bibinfo{year}{2007}\natexlab{}. +\newblock \showarticletitle{Position Based Dynamics}. +\newblock \bibinfo{journal}{\emph{J. Vis. Comun. Image Represent.}} + \bibinfo{volume}{18}, \bibinfo{number}{2} (\bibinfo{date}{April} + \bibinfo{year}{2007}), \bibinfo{pages}{109–118}. +\newblock +\showISSN{1047-3203} +\urldef\tempurl% +\url{https://doi.org/10.1016/j.jvcir.2007.01.005} +\showDOI{\tempurl} + + +\bibitem[\protect\citeauthoryear{Müller, Kim, and Chentanez}{Müller + et~al\mbox{.}}{2012}]% + {FTLHair} +\bibfield{author}{\bibinfo{person}{Matthias Müller}, \bibinfo{person}{Tae + Kim}, {and} \bibinfo{person}{Nuttapong Chentanez}.} + \bibinfo{year}{2012}\natexlab{}. +\newblock \showarticletitle{Fast Simulation of Inextensible Hair and Fur}. +\newblock \bibinfo{journal}{\emph{VRIPHYS 2012 - 9th Workshop on Virtual + Reality Interactions and Physical Simulations}}. +\newblock +\urldef\tempurl% +\url{https://doi.org/10.2312/PE/vriphys/vriphys12/039-044} +\showDOI{\tempurl} + + \bibitem[\protect\citeauthoryear{Umenhoffer, Marschal, and Suti}{Umenhoffer et~al\mbox{.}}{2016}]% {UmenhofferSimulation} diff --git a/docs/documentation.blg b/docs/documentation.blg index 0841d62d68ea317c36fc24fe236cb1e177b9493d..d1cf04e333172d9444b022292a557198dd82c631 100644 --- a/docs/documentation.blg +++ b/docs/documentation.blg @@ -11,49 +11,51 @@ Reallocated glb_str_ptr (elt_size=4) to 20 items from 10. Reallocated global_strs (elt_size=200001) to 20 items from 10. Reallocated glb_str_end (elt_size=4) to 20 items from 10. Reallocated singl_function (elt_size=4) to 100 items from 50. +Warning--empty booktitle in FTLHair +Warning--no number and no volume in FTLHair Warning--empty booktitle in UmenhofferSimulation Warning--empty publisher in UmenhofferSimulation Warning--empty address in UmenhofferSimulation Warning--page numbers missing in both pages and numpages fields in UmenhofferSimulation -You've used 2 entries, +You've used 4 entries, 5959 wiz_defined-function locations, - 1349 strings with 15369 characters, -and the built_in function-call counts, 2600 in all, are: -= -- 243 -> -- 115 + 1372 strings with 15950 characters, +and the built_in function-call counts, 5148 in all, are: += -- 641 +> -- 208 < -- 0 -+ -- 38 -- -- 36 -* -- 204 -:= -- 271 -add.period$ -- 11 -call.type$ -- 2 -change.case$ -- 17 -chr.to.int$ -- 2 -cite$ -- 6 -duplicate$ -- 234 -empty$ -- 158 -format.name$ -- 44 -if$ -- 574 ++ -- 68 +- -- 64 +* -- 378 +:= -- 502 +add.period$ -- 21 +call.type$ -- 4 +change.case$ -- 32 +chr.to.int$ -- 4 +cite$ -- 10 +duplicate$ -- 438 +empty$ -- 294 +format.name$ -- 80 +if$ -- 1246 int.to.chr$ -- 2 int.to.str$ -- 1 -missing$ -- 10 -newline$ -- 62 -num.names$ -- 16 -pop$ -- 101 +missing$ -- 19 +newline$ -- 85 +num.names$ -- 32 +pop$ -- 172 preamble$ -- 1 -purify$ -- 35 +purify$ -- 68 quote$ -- 0 -skip$ -- 90 +skip$ -- 172 stack$ -- 0 -substring$ -- 148 -swap$ -- 26 +substring$ -- 301 +swap$ -- 54 text.length$ -- 0 text.prefix$ -- 0 top$ -- 0 -type$ -- 60 -warning$ -- 4 -while$ -- 9 +type$ -- 107 +warning$ -- 6 +while$ -- 18 width$ -- 0 -write$ -- 80 -(There were 4 warnings) +write$ -- 120 +(There were 6 warnings) diff --git a/docs/documentation.log b/docs/documentation.log index f341c48595a9c2e20f8512aa237e281fd1cb8b8c..e287b3acc38b7103689c14b95f5a83615ddc4c43 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) 8 DEC 2020 01:06 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.8) 8 DEC 2020 15:05 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -945,7 +945,7 @@ 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=51, 602.25pt x 401.5pt> +<teaser.png, id=63, 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 109. @@ -984,6 +984,9 @@ Overfull \hbox (5.12202pt too wide) in paragraph at lines 109--109 [1.1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./teaser.png>] +Underfull \vbox (badness 7667) has occurred while \output is active [] + + [2.2] Processing 'acks' comment. \openout3 = `comment.cut'. @@ -991,47 +994,53 @@ Processing 'acks' comment. Straight input of comment.cut. (./comment.cut) (./documentation.bbl LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be (Font) scaled to size 8.0pt on input line 49. +LaTeX Info: Redefining \tempurl on input line 75. +LaTeX Info: Redefining \tempurl on input line 90. ) -LaTeX Font Info: Trying to load font information for T1+zi4 on input line 20 -6. +LaTeX Font Info: Trying to load font information for T1+zi4 on input line 27 +9. (/usr/share/texlive/texmf-dist/tex/latex/inconsolata/t1zi4.fd File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata) ) LaTeX Font Info: Font shape `T1/zi4/m/n' will be -(Font) scaled to size 10.0pt on input line 206. +(Font) scaled to size 10.0pt on input line 279. Package microtype Info: Loading generic protrusion settings for font family (microtype) `zi4' (encoding: T1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. - [2.2] -Overfull \hbox (11.38634pt too wide) in paragraph at lines 258--261 + +Overfull \hbox (11.38634pt too wide) in paragraph at lines 331--334 \T1/LinuxLibertineT-TLF/m/n/10 (-20) at 24 FPS, with the nam-ing con-ven-tion r en-derXXXX[.bmp/.png], [] -Overfull \hbox (3.58836pt too wide) in paragraph at lines 263--267 +Overfull \hbox (3.58836pt too wide) in paragraph at lines 336--340 \T1/zi4/m/n/10 make_video.sh \T1/LinuxLibertineT-TLF/m/n/10 (-20) script to as- sem-ble the \T1/zi4/m/n/10 output.mp4 \T1/LinuxLibertineT-TLF/m/n/10 (-20) and delete [] + +Package balance Warning: You have called \balance in second column +(balance) Columns might not be balanced. + [3.3] -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 270. -Package atveryend Info: Empty hook `AfterLastShipout' on input line 270. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 343. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 343. (./documentation.aux) -Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 270. -Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 270. +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 343. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 343. Package rerunfilecheck Info: File `documentation.out' has not changed. -(rerunfilecheck) Checksum: 65AB89341A630399D97F71DAD998CCBB;1840. +(rerunfilecheck) Checksum: DBF0C13B581DE0E363C522F5DE55ECDB;2153. ) Here is how much of TeX's memory you used: - 19060 strings out of 481239 - 286199 string characters out of 5920377 - 587324 words of memory out of 5000000 - 33588 multiletter control sequences out of 15000+600000 - 657494 words of font info for 203 fonts, out of 8000000 for 9000 + 19112 strings out of 481239 + 287292 string characters out of 5920377 + 588528 words of memory out of 5000000 + 33600 multiletter control sequences out of 15000+600000 + 660874 words of font info for 227 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 63i,15n,100p,804b,468s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texlive/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}{/usr/ @@ -1050,10 +1059,10 @@ ublic/libertine/LinLibertineTBI.pfb></usr/share/texlive/texmf-dist/fonts/type1/ public/libertine/LinLibertineTI.pfb></usr/share/texlive/texmf-dist/fonts/type1/ public/newtx/txmiaX.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx /txsys.pfb> -Output written on documentation.pdf (3 pages, 429889 bytes). +Output written on documentation.pdf (3 pages, 437482 bytes). PDF statistics: - 173 PDF objects out of 1000 (max. 8388607) - 142 compressed objects within 2 object streams - 32 named destinations out of 1000 (max. 500000) - 36462 words of extra memory for PDF output out of 42996 (max. 10000000) + 197 PDF objects out of 1000 (max. 8388607) + 166 compressed objects within 2 object streams + 37 named destinations out of 1000 (max. 500000) + 36486 words of extra memory for PDF output out of 42996 (max. 10000000) diff --git a/docs/documentation.out b/docs/documentation.out index 2ae0f3749f119ace38d07f9bf690c5a4b34e267a..43fed1b048e313889dd2a315e9a60f19a3b354e4 100644 --- a/docs/documentation.out +++ b/docs/documentation.out @@ -3,9 +3,12 @@ \BOOKMARK [1][-]{section.2}{\376\377\0002\000\040\000O\000v\000e\000r\000v\000i\000e\000w\000\040\000o\000f\000\040\000c\000o\000n\000s\000i\000d\000e\000r\000e\000d\000\040\000m\000e\000t\000h\000o\000d\000s}{}% 3 \BOOKMARK [2][-]{subsection.2.1}{\376\377\0002\000.\0001\000\040\000M\000a\000s\000s\000\040\000S\000p\000r\000i\000n\000g\000\040\000S\000y\000s\000t\000e\000m}{section.2}% 4 \BOOKMARK [2][-]{subsection.2.2}{\376\377\0002\000.\0002\000\040\000P\000o\000s\000i\000t\000i\000o\000n\000\040\000B\000a\000s\000e\000d\000\040\000D\000y\000n\000a\000m\000i\000c\000s\000\040\000\050\000P\000B\000D\000\051}{section.2}% 5 -\BOOKMARK [2][-]{subsection.2.3}{\376\377\0002\000.\0003\000\040\000F\000o\000l\000l\000o\000w\000\040\000t\000h\000e\000\040\000L\000e\000a\000d\000e\000r\000\040\000\050\000F\000T\000L\000\051}{section.2}% 6 -\BOOKMARK [1][-]{section*.7}{\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000m\000e\000n\000t\000s}{}% 7 -\BOOKMARK [1][-]{section*.9}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 8 -\BOOKMARK [1][-]{appendix.A}{\376\377\000A\000\040\000S\000u\000p\000p\000l\000e\000m\000e\000n\000t\000a\000r\000y\000\040\000d\000e\000v\000e\000l\000o\000p\000m\000e\000n\000t}{}% 9 -\BOOKMARK [2][-]{subsection.A.1}{\376\377\000A\000.\0001\000\040\000O\000B\000J\000\040\000R\000e\000a\000d\000e\000r}{appendix.A}% 10 -\BOOKMARK [2][-]{subsection.A.2}{\376\377\000A\000.\0002\000\040\000R\000e\000c\000o\000r\000d\000i\000n\000g\000\040\000t\000h\000e\000\040\000s\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000o\000n\000-\000t\000h\000e\000-\000f\000l\000y}{appendix.A}% 11 +\BOOKMARK [2][-]{subsection.2.3}{\376\377\0002\000.\0003\000\040\000F\000o\000l\000l\000o\000w\000-\000t\000h\000e\000-\000L\000e\000a\000d\000e\000r\000\040\000\050\000F\000T\000L\000\051}{section.2}% 6 +\BOOKMARK [1][-]{section.3}{\376\377\0003\000\040\000R\000e\000s\000u\000l\000t\000s}{}% 7 +\BOOKMARK [1][-]{section.4}{\376\377\0004\000\040\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 8 +\BOOKMARK [1][-]{section.5}{\376\377\0005\000\040\000F\000u\000r\000t\000h\000e\000r\000\040\000W\000o\000r\000k}{}% 9 +\BOOKMARK [1][-]{section*.7}{\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000m\000e\000n\000t\000s}{}% 10 +\BOOKMARK [1][-]{section*.9}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 11 +\BOOKMARK [1][-]{appendix.A}{\376\377\000A\000\040\000S\000u\000p\000p\000l\000e\000m\000e\000n\000t\000a\000r\000y\000\040\000d\000e\000v\000e\000l\000o\000p\000m\000e\000n\000t}{}% 12 +\BOOKMARK [2][-]{subsection.A.1}{\376\377\000A\000.\0001\000\040\000O\000B\000J\000\040\000R\000e\000a\000d\000e\000r}{appendix.A}% 13 +\BOOKMARK [2][-]{subsection.A.2}{\376\377\000A\000.\0002\000\040\000R\000e\000c\000o\000r\000d\000i\000n\000g\000\040\000t\000h\000e\000\040\000s\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000o\000n\000-\000t\000h\000e\000-\000f\000l\000y}{appendix.A}% 14 diff --git a/docs/documentation.pdf b/docs/documentation.pdf index 81abadf61df538b2edc4d564327077da1cb36551..e8a5888b1a5c337099cb18a519f63c03afe05681 100644 Binary files a/docs/documentation.pdf and b/docs/documentation.pdf differ diff --git a/docs/documentation.tex b/docs/documentation.tex index 5bc4f705f201e8d68c24a562e26d6e7547a25810..9140a121a78baff8d67d35cd66f9cc5451dca75a 100644 --- a/docs/documentation.tex +++ b/docs/documentation.tex @@ -151,17 +151,90 @@ The \citet{PixarPaper} paper also features great further readings in their citations, which gives a great glimpse into related previous works. The main characteristic of this approach is that a Mass Spring System deals with -forces, and tries to stay true to the laws of physics. This will not be the case +forces, and tries to stay true to the laws of physics. It accounts for internal +and external forces from which accelerations are computed based on Newton's +second law of motion. A time integration method is then used to update the +velocities and finally the positions of the particles. This will not be the case with Position Based Dynamics. \subsection{Position Based Dynamics (PBD)} -\citet{UmenhofferSimulation} -Position Based Dynamics (PBD) +The paper by \citet{MullerPBD} presents an approach that omits the velocity as +well as the force layer of the then-present popular approaches for simulation +methods of dynamic systems in computer graphics. + +Position Based Dynamics (PBD) -- as its name suggests -- works with the position +of particles. A big advantage of such a system lies in its controllability, and +the easy reducability of overshooting problems present in force based systems. +Another favorable aspect is that PBD methods are generally easier with the maths +and somewhat easier to implement in terms of the needed mathematical and +physical background needed to grasp its inner workings. In addition, -- as it +works directly with the position of particles -- collision constraints can be +handled easily and penetrations can be resolved completely by projecting points +onto the penetrated surface. Although such measures can only be applied on the +expanse of physical accuracy, position based dynamics being only a ``good +enough'' approximation of how objects behave in real life. + +Chapter 2 of the paper by \citet{UmenhofferSimulation} builds on the +\citet{MullerPBD} paper and gives a concise overview of the position based +dynamics method, and goes on to show the type of constraints that can be applied +to control to behaviour of such a system -- which is present in both papers. + + +\subsection{Follow-the-Leader (FTL)} +The Dynamic Follow-The-Leader (FTL) method outlined in \citet{FTLHair} focuses +on the fast simulation of hair and fur on animated characters. The sheer number +of computation needed for simulating thousands of hair strands, each consisting +of numerous particles presents a big challenge. Also, as each strand is +inextensible, it is not trivial to come up with an algorithm that does its job +in feasible time. + +As it will be covered later in this article, the already introduced PBD method +needs multiple iterations per frame in order to keep the system from stretching +and becoming unstable. The FTL method by \citet{FTLHair} presents a method that +takes only a single iteration through the particles of each hair strand per +frame to achieve the desired results. + +As this sounds fascinating, and cuts the computation time needed substantially, +in the early stages of my project, I implemented the FTL method alongside PBD. +It \textit{works}, and is fast, although due to the iteration count being one, +when greater forces are being applied to the system, a substantial amount of +stretching was introduced to the system. As it seemed in comparison that the +``basic'' PBD method yielded the same -- or even more accurate -- results, and +it was feasible to allow myself to use multiple iterations per frame, I did +not further investigate if there could have been improvements made to my +implementation to eliminate the stretching in the presence of greater forces. + +\section{Results} + +\section{Conclusion} +After investigating and trying out multiple methods to simulate hair, we arrived +at the Position Based Dynamics (PBD) method. An overview of the PBD method, and +an introduction to the constraint types used in our implementation was given. +An implementation was made in C++ and OpenGL, which easily simulates the hair +strands in real time, although the limit of the real-time nature can easily be +surpassed when adding thousands of strands with hundreds of particles. + +\section{Further Work} +As this was part only of a semester-long Project Laboratory course, a great deal +of time was dedicated in the early stages of the project to investigate and +explore the subject area. This left only a sub-optimal time for implementing all +desired aspects of the simulation. -\subsection{Follow the Leader (FTL)} -The Dynamic Follow-The-Leader method outlined in \TODO{reference article} - +\begin{itemize} + \item Hair-hair collisions + \begin{itemize} + \item +\end{itemize} + \item Refinement and proper customizability of the propagation of hair + strands on the Head Object. + \begin{itemize} + \item A drawable texture map is considered for the ability to + tell the simulation where to put the hair strands on the + surface of the hair. + \end{itemize} + \item +\end{itemize} %% %% The acknowledgments section is defined using the "acks" environment diff --git a/docs/references.bib b/docs/references.bib index 1d0d4fd7a138fbe9ea6857fd573beb5270bb8a14..1a7a1804fc407fa104f96c616bd629be49434083 100644 --- a/docs/references.bib +++ b/docs/references.bib @@ -23,3 +23,43 @@ keywords = {mass-spring models, hair simulation}, location = {Anaheim, California}, series = {SCA '13} } + +@article{MullerPBD, +author = {M\"{u}ller, Matthias and Heidelberger, Bruno and Hennix, Marcus and Ratcliff, John}, +title = {Position Based Dynamics}, +year = {2007}, +issue_date = {April, 2007}, +publisher = {Academic Press, Inc.}, +address = {USA}, +volume = {18}, +number = {2}, +issn = {1047-3203}, +url = {https://doi.org/10.1016/j.jvcir.2007.01.005}, +doi = {10.1016/j.jvcir.2007.01.005}, +abstract = {The most popular approaches for the simulation of dynamic systems in computer graphics are force based. Internal and external forces are accumulated from which accelerations are computed based on Newton's second law of motion. A time integration method is then used to update the velocities and finally the positions of the object. A few simulation methods (most rigid body simulators) use impulse based dynamics and directly manipulate velocities. In this paper we present an approach which omits the velocity layer as well and immediately works on the positions. The main advantage of a position based approach is its controllability. Overshooting problems of explicit integration schemes in force based systems can be avoided. In addition, collision constraints can be handled easily and penetrations can be resolved completely by projecting points to valid locations. We have used the approach to build a real time cloth simulator which is part of a physics software library for games. This application demonstrates the strengths and benefits of the method.}, +journal = {J. Vis. Comun. Image Represent.}, +month = apr, +pages = {109–118}, +numpages = {10}, +keywords = {Physically based simulation, Cloth simulation, Integration schemes, Game physics} +} + +@inproceedings{FTLHair, +author = {Müller, Matthias and Kim, Tae and Chentanez, Nuttapong}, +year = {2012}, +month = {12}, +pages = {}, +title = {Fast Simulation of Inextensible Hair and Fur}, +journal = {VRIPHYS 2012 - 9th Workshop on Virtual Reality Interactions and + Physical Simulations}, +doi = {10.2312/PE/vriphys/vriphys12/039-044}, +url = {https://matthias-research.github.io/pages/publications/FTLHairFur.pdf} +} + +@inproceedings{PixarVolumetricHair, + title={Volumetric Methods for Simulation and Rendering of Hair}, + author={L. Petrovic and M. Henne and John Anderson Pixar}, + year={2006}, + url = {https://graphics.pixar.com/library/Hair/paper.pdf} + +}