diff --git a/docs/documentation.aux b/docs/documentation.aux index 0aaf0d2f43d641d951dd31323b2b85e984d02cd5..9204b4f93cbc94f0dcda6cd05a75cc49a1c88764 100644 --- a/docs/documentation.aux +++ b/docs/documentation.aux @@ -35,13 +35,10 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Follow-the-Leader (FTL)}{2}{subsection.2.3}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {3}Simulation of a Single Hair Strand}{2}{section.3}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}A Particle}{2}{subsection.3.1}\protected@file@percent } +\citation{MullerPBD} \citation{PixarVolumetricHair} \citation{FTLHair} \citation{RappRealTime} -\citation{UmenhofferSimulation} -\bibstyle{ACM-Reference-Format} -\bibdata{references} -\bibcite{PixarPaper}{{1}{2013}{{Iben et~al\mbox {.}}}{{Iben, Meyer, Petrovic, Soares, Anderson, and Witkin}}} \@writefile{loa}{\contentsline {algocf}{\numberline {1}{\ignorespaces pseudo code for the PBD simulation\relax }}{3}{algocf.1}\protected@file@percent } \newlabel{alg:pseudoPBD}{{1}{3}{A Particle}{algocf.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {4}Putting Hair on the Head}{3}{section.4}\protected@file@percent } @@ -52,9 +49,10 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Refinement and proper customizability of the propagation of hair strands on the head object.}{3}{subsection.7.2}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Better customizability}{3}{subsection.7.3}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Halton sequence for randomizing hair positions}{3}{subsection.7.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {7.5}Rendering}{3}{subsection.7.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {7.6}Moving to the GPU}{3}{subsection.7.6}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{Acknowledgments}{3}{section*.8}\protected@file@percent } +\citation{UmenhofferSimulation} +\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{PixarVolumetricHair}{{4}{2006}{{Petrovic et~al\mbox {.}}}{{Petrovic, Henne, and Pixar}}} @@ -62,9 +60,12 @@ \bibcite{UmenhofferSimulation}{{6}{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{tocindent1}{5.56pt} +\newlabel{tocindent2}{11.49998pt} \newlabel{tocindent3}{0pt} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.5}Rendering}{4}{subsection.7.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.6}Moving to the GPU}{4}{subsection.7.6}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{Acknowledgments}{4}{section*.8}\protected@file@percent } \@writefile{toc}{\contentsline {section}{References}{4}{section*.10}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {A}Supplementary development}{4}{appendix.A}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {A.1}OBJ Reader}{4}{subsection.A.1}\protected@file@percent } diff --git a/docs/documentation.log b/docs/documentation.log index 14924faebef54dced24218cec755469603384ef0..5f1c3b4484043cfeb19e5571b60684c604177c56 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) 9 DEC 2020 00:40 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.8) 9 DEC 2020 14:06 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -740,19 +740,10 @@ LaTeX Info: Redefining \smaller on input line 151. \algocf@algoframe=\box59 \algocf@algobox=\box60 ) -(/usr/share/texlive/texmf-dist/tex/latex/algorithms/algorithmic.sty -Package: algorithmic 2009/08/24 v0.1 Document Style `algorithmic' -\c@ALC@unique=\count303 -\c@ALC@line=\count304 -\c@ALC@rem=\count305 -\c@ALC@depth=\count306 -\ALC@tlm=\skip94 -\algorithmicindent=\skip95 -) -Package hyperref Info: Option `colorlinks' set `true' on input line 24. -Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 24. +Package hyperref Info: Option `colorlinks' set `true' on input line 25. +Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 25. -\c@theorem=\count307 +\c@theorem=\count303 (/usr/share/texlive/texmf-dist/tex/latex/preprint/balance.sty Package: balance 1999/02/23 4.3 (PWD) @@ -762,113 +753,113 @@ Include comment 'screenonly' Excluding comment 'printonly' Include comment 'anonsuppress' (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode -\l__kernel_color_stack_int=\count308 +\l__kernel_color_stack_int=\count304 \l__pdf_internal_box=\box61 ) (./documentation.aux) \openout1 = `documentation.aux'. -LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 24. +LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 25. LaTeX Font Info: Trying to load font information for OML+nxlmi on input line - 24. + 25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/omlnxlmi.fd File: omlnxlmi.fd 2013/11/19 Fontinst v1.933 font definitions for OML/nxlmi. ) -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 24. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 25. LaTeX Font Info: Trying to load font information for U+ntxexa on input line -24. +25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/untxexa.fd File: untxexa.fd 2012/04/16 Fontinst v1.933 font definitions for U/ntxexa. ) -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 24. -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 24. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 25. LaTeX Font Info: Trying to load font information for LMS+ntxsy on input line - 24. + 25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/lmsntxsy.fd File: lmsntxsy.fd 2016/07/02 Fontinst v1.933 font definitions for LMS/ntxsy. ) -LaTeX Font Info: ... okay on input line 24. -LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 24. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 25. LaTeX Font Info: Trying to load font information for LMX+ntxexx on input lin -e 24. +e 25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/lmxntxexx.fd File: lmxntxexx.fd 2016/07/03 Fontinst v1.933 font definitions for LMX/ntxexx. ) -LaTeX Font Info: ... okay on input line 24. +LaTeX Font Info: ... okay on input line 25. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 8.0pt on input line 24. +(Font) scaled to size 8.0pt on input line 25. LaTeX Font Info: Trying to load font information for OT1+LinuxLibertineT-TLF - on input line 24. + on input line 25. (/usr/share/texlive/texmf-dist/tex/latex/libertine/OT1LinuxLibertineT-TLF.fd File: OT1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for OT1/ LinuxLibertineT-TLF. ) LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 8.0pt on input line 24. +(Font) scaled to size 8.0pt on input line 25. <<ot1.cmap>> LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.2pt on input line 24. +(Font) scaled to size 6.2pt on input line 25. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 5.5pt on input line 24. +(Font) scaled to size 5.5pt on input line 25. <<oml.cmap>> -LaTeX Font Info: Trying to load font information for U+msa on input line 24. +LaTeX Font Info: Trying to load font information for U+msa on input line 25. (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Trying to load font information for U+msb on input line 24. +LaTeX Font Info: Trying to load font information for U+msb on input line 25. (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) LaTeX Font Info: Trying to load font information for U+ntxmia on input line -24. +25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/untxmia.fd File: untxmia.fd 2018/04/14 Fontinst v1.933 font definitions for U/ntxmia. ) LaTeX Font Info: Trying to load font information for U+ntxsym on input line -24. +25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/untxsym.fd File: untxsym.fd 2015/03/20 Fontinst v1.933 font definitions for U/ntxsym. ) LaTeX Font Info: Trying to load font information for U+ntxsyc on input line -24. +25. (/usr/share/texlive/texmf-dist/tex/latex/newtx/untxsyc.fd File: untxsyc.fd 2012/04/12 Fontinst v1.933 font definitions for U/ntxsyc. ) -LaTeX Info: Redefining \microtypecontext on input line 24. +LaTeX Info: Redefining \microtypecontext on input line 25. Package microtype Info: Generating PDF output. Package microtype Info: Character protrusion enabled (level 2). Package microtype Info: Using default protrusion set `alltext'. Package microtype Info: Automatic font expansion enabled (level 2), (microtype) stretch: 20, shrink: 20, step: 1, non-selected. Package microtype Info: Using default expansion set `basictext'. -LaTeX Info: Redefining \showhyphens on input line 24. +LaTeX Info: Redefining \showhyphens on input line 25. Package microtype Info: No adjustment of tracking. Package microtype Info: No adjustment of interword spacing. Package microtype Info: No adjustment of character kerning. @@ -879,7 +870,7 @@ Package microtype Info: Loading generic protrusion settings for font family ABD: EveryShipout initializing macros \AtBeginShipoutBox=\box62 -Package hyperref Info: Link coloring ON on input line 24. +Package hyperref Info: Link coloring ON on input line 25. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section @@ -887,11 +878,11 @@ Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section (/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) ) -\c@section@level=\count309 +\c@section@level=\count305 ) -LaTeX Info: Redefining \ref on input line 24. -LaTeX Info: Redefining \pageref on input line 24. -LaTeX Info: Redefining \nameref on input line 24. +LaTeX Info: Redefining \ref on input line 25. +LaTeX Info: Redefining \pageref on input line 25. +LaTeX Info: Redefining \nameref on input line 25. (./documentation.out) (./documentation.out) \@outlinefile=\write4 @@ -906,16 +897,16 @@ File: se-utf8.def 2019/11/29 v1.12 stringenc: UTF-8 ) (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count310 +\scratchcounter=\count306 \scratchdimen=\dimen195 \scratchbox=\box63 -\nofMPsegments=\count311 -\nofMParguments=\count312 +\nofMPsegments=\count307 +\nofMParguments=\count308 \everyMPshowfont=\toks35 -\MPscratchCnt=\count313 +\MPscratchCnt=\count309 \MPscratchDim=\dimen196 -\MPnumerator=\count314 -\makeMPintoPDFobject=\count315 +\MPnumerator=\count310 +\makeMPintoPDFobject=\count311 \everyMPtoPDFconversion=\toks36 ) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf @@ -960,8 +951,8 @@ e * \@reversemarginfalse * (1in=72.27pt=25.4mm, 1cm=28.453pt) -\c@mv@tabular=\count316 -\c@mv@boldtabular=\count317 +\c@mv@tabular=\count312 +\c@mv@boldtabular=\count313 (/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba tim @@ -972,38 +963,38 @@ Package caption Info: End \AtBeginDocument code. Excluding 'CCSXML' comment. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 20.74pt on input line 111. +(Font) scaled to size 20.74pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 20.74pt on input line 111. +(Font) scaled to size 20.74pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 10.0pt on input line 111. +(Font) scaled to size 10.0pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 14.4pt on input line 111. +(Font) scaled to size 14.4pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 14.4pt on input line 111. +(Font) scaled to size 14.4pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 12.0pt on input line 111. +(Font) scaled to size 12.0pt on input line 113. LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o -n input line 111. +n input line 113. (/usr/share/texlive/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin uxBiolinumT-TLF. ) LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 10.0pt on input line 111. +(Font) scaled to size 10.0pt on input line 113. Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxBiolinumT-TLF' (encoding: T1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 10.0pt on input line 111. +(Font) scaled to size 10.0pt on input line 113. Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxLibertineT-TLF' (encoding: OT1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 7.3pt on input line 111. +(Font) scaled to size 7.3pt on input line 113. (/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) @@ -1014,35 +1005,35 @@ File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS) <teaser.png, id=99, 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 111. +Package pdftex.def Info: teaser.png used on input line 113. (pdftex.def) Requested size: 505.89pt x 337.27606pt. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 12.0pt on input line 111. +(Font) scaled to size 12.0pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 7.3pt on input line 111. +(Font) scaled to size 7.3pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.2pt on input line 111. +(Font) scaled to size 6.2pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 8.0pt on input line 111. +(Font) scaled to size 8.0pt on input line 113. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/it' will be -(Font) scaled to size 10.0pt on input line 111. +(Font) scaled to size 10.0pt on input line 113. LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF - on input line 111. + on input line 113. (/usr/share/texlive/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF.fd File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/ LinuxLibertineT-TLF. ) LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 10.0pt on input line 111. +(Font) scaled to size 10.0pt on input line 113. Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxLibertineT-TLF' (encoding: TS1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be -(Font) scaled to size 10.0pt on input line 111. +(Font) scaled to size 10.0pt on input line 113. -Overfull \hbox (5.12202pt too wide) in paragraph at lines 111--111 +Overfull \hbox (5.12202pt too wide) in paragraph at lines 113--113 []\T1/LinuxLibertineT-TLF/b/it/10 Keywords: \T1/LinuxLibertineT-TLF/m/n/10 (-2 0) hair sim-u-la-tion, po-si-tion based dy-nam-ics, OpenGL [] @@ -1051,13 +1042,22 @@ Overfull \hbox (5.12202pt too wide) in paragraph at lines 111--111 <./teaser.png>] LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be -(Font) scaled to size 10.0pt on input line 213. +(Font) scaled to size 10.0pt on input line 215. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be -(Font) scaled to size 7.3pt on input line 213. +(Font) scaled to size 7.3pt on input line 215. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be -(Font) scaled to size 5.5pt on input line 213. +(Font) scaled to size 5.5pt on input line 215. + +Overfull \hbox (14.9743pt too wide) in paragraph at lines 217--222 +\T1/LinuxLibertineT-TLF/m/n/10 (-20) tion $\OML/nxlmi/m/it/10 C[] \OT1/LinuxLib +ertineT-TLF/m/n/10 (-20) : \U/ntxsym/m/n/10 R[] \LMS/ntxsy/m/n/10 7! \U/ntxsym/ +m/n/10 R$\T1/LinuxLibertineT-TLF/m/n/10 (-20) . It op-er-ates on a set of in-di +ces $\LMS/ntxsy/m/n/10 f\OML/nxlmi/m/it/10 i[]; [] i[]\LMS/ntxsy/m/n/10 g\OML/n +xlmi/m/it/10 ; i[] \LMS/ntxsy/m/n/10 2 + [] + -Overfull \hbox (20.05922pt too wide) in paragraph at lines 221--226 +Overfull \hbox (20.05922pt too wide) in paragraph at lines 223--228 []\T1/LinuxLibertineT-TLF/m/n/10 (-20) Constraint $\OML/nxlmi/m/it/10 c$ \T1/Li nuxLibertineT-TLF/m/n/10 (-20) with type \T1/LinuxLibertineT-TLF/m/it/10 (-20) equal-ity \T1/LinuxLibertineT-TLF/m/n/10 (-20) is sat-is-fied if $\OML/nxlmi/m/ @@ -1066,7 +1066,7 @@ it/10 C[]\LMS/ntxsy/m/n/10 [] -Overfull \hbox (12.99283pt too wide) in paragraph at lines 221--226 +Overfull \hbox (12.99283pt too wide) in paragraph at lines 223--228 \OT1/LinuxLibertineT-TLF/m/n/10 (-20) 0$\T1/LinuxLibertineT-TLF/m/n/10 (-20) . If its type is \T1/LinuxLibertineT-TLF/m/it/10 (-20) in-equal-ity\T1/LinuxLiber tineT-TLF/m/n/10 (-20) , then it is sat-is-fied if $\OML/nxlmi/m/it/10 C[]\LMS/ @@ -1074,35 +1074,46 @@ ntxsy/m/n/10 [] -Overfull \hbox (10.0pt too wide) detected at line 237 -[][] - [] - - Underfull \vbox (badness 10000) has occurred while \output is active [] [2.2] -LaTeX Font Info: Trying to load font information for T1+zi4 on input line 23 -9. +LaTeX Font Info: Trying to load font information for T1+zi4 on input line 25 +4. (/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 239. +(Font) scaled to size 10.0pt on input line 254. 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. +LaTeX Font Info: Font shape `T1/zi4/m/n' will be +(Font) scaled to size 7.0pt on input line 254. -Processing 'acks' comment. +Overfull \hbox (18.40462pt too wide) in paragraph at lines 280--280 +[][]|[]\T1/zi4/m/n/10 projectConstraints($\OML/nxlmi/m/it/10 C[]; [] ; C[]; par +ticles$\T1/zi4/m/n/10 ) + [] + +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.0pt on input line 280. +LaTeX Font Info: Font shape `T1/zi4/m/n' will be +(Font) scaled to size 8.0pt on input line 285. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 8.0pt on input line 291. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 6.2pt on input line 291. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 8.0pt on input line 295. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 8.0pt on input line 329. +[3.3] Processing 'acks' comment. \openout3 = `comment.cut'. Comment 'acks' writing to comment.cut. 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. - [3.3] LaTeX Info: Redefining \tempurl on input line 75. LaTeX Info: Redefining \tempurl on input line 90. LaTeX Info: Redefining \tempurl on input line 104. @@ -1114,16 +1125,9 @@ Underfull \hbox (badness 10000) in paragraph at lines 111--118 [] ) -Overfull \hbox (11.38634pt too wide) in paragraph at lines 418--421 -\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 423--427 -\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 +Overfull \hbox (18.1797pt too wide) in paragraph at lines 493--496 +[]\T1/LinuxLibertineT-TLF/m/n/8 (-20) For han-dling the ex-port of the ren-dere +d im-age into files, the stb_image_write.h[][][][][] [] @@ -1131,47 +1135,51 @@ Package balance Warning: You have called \balance in second column (balance) Columns might not be balanced. [4.4] -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 429. -Package atveryend Info: Empty hook `AfterLastShipout' on input line 429. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 509. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 509. (./documentation.aux) -Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 429. -Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 429. +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 509. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 509. Package rerunfilecheck Info: File `documentation.out' has not changed. (rerunfilecheck) Checksum: 86A066FEE8792F691364A237681A9047;4299. ) Here is how much of TeX's memory you used: - 20382 strings out of 481239 - 307739 string characters out of 5920377 - 618891 words of memory out of 5000000 - 34760 multiletter control sequences out of 15000+600000 - 684959 words of font info for 292 fonts, out of 8000000 for 9000 + 20413 strings out of 481239 + 309446 string characters out of 5920377 + 618195 words of memory out of 5000000 + 34693 multiletter control sequences out of 15000+600000 + 717829 words of font info for 368 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 - 63i,15n,100p,804b,592s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/texlive/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}{/usr/ -share/texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.enc}{/usr/share/ -texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}{/usr/share/texliv -e/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc}{/usr/share/texlive/texm -f-dist/fonts/enc/dvips/libertine/lbtn_ki75ao.enc}{/usr/share/texlive/texmf-dist -/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/share/texlive/texmf-dist/fonts -/enc/dvips/libertine/lbtn_76gpa5.enc}{/usr/share/texlive/texmf-dist/fonts/enc/d -vips/libertine/lbtn_nh77jq.enc}</usr/share/texlive/texmf-dist/fonts/type1/publi -c/inconsolata/Inconsolata-zi4r.pfb></usr/share/texlive/texmf-dist/fonts/type1/p -ublic/newtx/LibertineMathBMI.pfb></usr/share/texlive/texmf-dist/fonts/type1/pub -lic/newtx/LibertineMathBMI7.pfb></usr/share/texlive/texmf-dist/fonts/type1/publ -ic/newtx/LibertineMathMI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/ -newtx/LibertineMathMI5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/ne -wtx/LibertineMathMI7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libe -rtine/LinBiolinumT.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libert -ine/LinLibertineT.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/liberti -ne/LinLibertineTB.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/liberti -ne/LinLibertineTBI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libert -ine/LinLibertineTI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/ -txmiaX.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/txfonts/txsyb.pfb> -</usr/share/texlive/texmf-dist/fonts/type1/public/newtx/txsys.pfb> -Output written on documentation.pdf (4 pages, 476184 bytes). + 63i,19n,100p,804b,588s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_fygcup.enc}{/us +r/share/texlive/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}{/usr/share/ +texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.enc}{/usr/share/texliv +e/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}{/usr/share/texlive/texm +f-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc}{/usr/share/texlive/texmf-dist +/fonts/enc/dvips/libertine/lbtn_ki75ao.enc}{/usr/share/texlive/texmf-dist/fonts +/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/share/texlive/texmf-dist/fonts/enc/d +vips/libertine/lbtn_76gpa5.enc}{/usr/share/texlive/texmf-dist/fonts/enc/dvips/l +ibertine/lbtn_nh77jq.enc}</usr/share/texlive/texmf-dist/fonts/type1/public/inco +nsolata/Inconsolata-zi4r.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/ +newtx/LibertineMathBMI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/ne +wtx/LibertineMathBMI5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/new +tx/LibertineMathBMI7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newt +x/LibertineMathMI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/L +ibertineMathMI5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/Lib +ertineMathMI7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/Liber +tineMathRM.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/LinB +iolinumT.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/LinLib +ertineT.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/LinLibe +rtineTB.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/LinLibe +rtineTBI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/LinLib +ertineTI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/LinLib +ertineTZ.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/txmiaX.pfb +></usr/share/texlive/texmf-dist/fonts/type1/public/txfonts/txsyb.pfb></usr/shar +e/texlive/texmf-dist/fonts/type1/public/newtx/txsys.pfb> +Output written on documentation.pdf (4 pages, 572023 bytes). PDF statistics: - 288 PDF objects out of 1000 (max. 8388607) - 244 compressed objects within 3 object streams - 55 named destinations out of 1000 (max. 500000) - 40142 words of extra memory for PDF output out of 42996 (max. 10000000) + 328 PDF objects out of 1000 (max. 8388607) + 278 compressed objects within 3 object streams + 75 named destinations out of 1000 (max. 500000) + 45262 words of extra memory for PDF output out of 51595 (max. 10000000) diff --git a/docs/documentation.pdf b/docs/documentation.pdf index 2b0f0a0f7463aec6bb2994b27783be1479b60fcf..ee518687ac384c5960291e82c5838564949c7866 100644 Binary files a/docs/documentation.pdf and b/docs/documentation.pdf differ diff --git a/docs/documentation.tex b/docs/documentation.tex index 1077027df5db5414d0a7179b35aea583fcac538d..3a46daf845ce9943d9104a0ff59199c1ca89645c 100644 --- a/docs/documentation.tex +++ b/docs/documentation.tex @@ -17,12 +17,14 @@ \newcommand{\specialcell}[2][t]{% \begin{tabular}[#1]{@{}l@{}}#2\end{tabular}} -\usepackage[]{algorithm2e} -\usepackage{algorithmic} + \usepackage[ruled, linesnumbered]{algorithm2e} +% \usepackage{algorithmic} + \renewcommand{\b}{\boldsymbol} %% end of the preamble, start of the body of the document source. \begin{document} +% \renewcommand{\@algocf@capt@plain}{top} % formerly {bottom} %% %% The "title" command has an optional parameter, %% allowing the author to define a "short title" to be used in page headers. @@ -204,17 +206,17 @@ not further investigate if there could have been improvements made to my implementation to eliminate the stretching in the presence of greater forces. -\section{Simulation of a Single Hair Strand} +\section{Position Based Simulation} -\subsection{A Particle} +\subsection Algorithm Overview -We model an $S$ hair strand as a chain of $P$ particles and a set of $C$ +We model an $S$ hair strand as a chain of $N$ particles and a set of $M$ constraints. Each particle $p \in [1,\ldots,N]$ has three atributes: mass ($m_p$), position ($\boldsymbol{x_p}$) and velocity ($\boldsymbol{v_p}$). -A constraint $c \in [1,\ldots,C]$ with cardinality $n_c$ is a function $C_c +A constraint $c \in [1,\ldots,M]$ with cardinality $n_c$ is a function $C_c : \mathbb{R} ^{3n_c} \mapsto \mathbb{R}$. It operates on a set of indices $\{i_1,\ldots -i_{n_c}\}, i_k \in [1,...,P]$. The constraint funtion also has a stiffnes +i_{n_c}\}, i_k \in [1,...,N]$. The constraint funtion also has a stiffnes parameter $k_c \in [0...1]$ and a type of either \emph{equality} or \emph{inequality}. @@ -226,16 +228,98 @@ strength of the constraint in a range from zero to one. Given these notations, the algorithm works in the following way: +\TODO{decide about syntax: array of particles (OOP) or array of v, x and m?} \begin{algorithm} \caption{pseudo code for the PBD simulation} \label{alg:pseudoPBD} - \begin{algorithmic} - \IF {$i \geq maxval$} - \STATE asd - \ENDIF - \end{algorithmic} + + \SetCommentSty{scriptsize} + \SetNlSty{texttt}{(}{)} + + % to turn off vertical lines: + % \SetAlgoNoLine + + \SetKwBlock{Loop}{loop}{end} + + \SetKwFunction{dampVelocities}{dampVelocities} + \SetKwFunction{genCollCon}{generateCollisionConstraints} + \SetKwFunction{projCon}{projectConstraints} + \SetKwFunction{velUpdate}{velocityUpdate} + + \SetKwProg{loopTimes}{loop}{ times}{end loop} + + \ForEach{p in particles}{ + initialize $\b{p_x} = \b{x_p^0}, \b{p_v} = \b{v_p^0}, p_w = 1/m_p$ + } + + \Loop{ + \ForEach{p in particles}{ + $\b{p_v} \gets \b{p_v} + \Delta t \cdot p_w \cdot \b{f_{external}}$ + } + \dampVelocities{$p_1, \ldots, p_N$} + \\ + \ForEach{p in particles}{ + $\b{p_{tmp}} \gets \b{p_x} + \Delta t \cdot \b{p_v}$ + + } + \ForEach{p in particles}{ + \genCollCon{$p_x \to p_{tmp}$} + } + \loopTimes{numberOfIterations}{ + \projCon{$C_1,\ldots, C_{M+M_{coll}}, particles$}\\ + \tcc*[f]{only the temporary positions of $particles$ are needed} + } + \ForEach{p in particles}{ + $\b{p_v} \gets (\b{p_{tmp}} - \b{p_x})/\Delta t$\\ + $\b{p_x} \gets \b{p_{tmp}}$ + } + \velUpdate{$particles$}\\ + \tcc*[f]{velocities of colliding particles are modified according to + friction and restitution coefficients.} + } \end{algorithm} +\newcommand{\lineRef}[2]{\footnotesize{\texttt{(#1)}-\texttt{(#2)}}} +\newcommand{\lineRefSingle}[1]{\footnotesize{\texttt{(#1)}}} + +Lines \lineRef{1}{3} initialize the particles. We store the inverse masses $w$ +in order to be able to store infinitely heavy particles that are stationary +during the simulation. ($\frac{1}{\infty} \approx 0$) + +The core idea of position based dynamics is shown in lines \lineRef{9}{11}, +\lineRef{15}{17} and \lineRef{18}{21}. In line \lineRefSingle{10}, estimated +positions for each particle $\b{p}$ are calculated using and explicit forward +Euler integration step. In line \lineRefSingle{16} the iterative solver manipulates +these temporary position estimates such that they satisfy the constraints. It +does this by repeatedly projecting each constraint in a Gauss-Seidel type +fashion \TODO{See section ...}. Once the solver finishes with the iteartions, in +lines \lineRef{19}{20} each particle is moved to the calculated (once temporary) +positions, and the velocity of each particle is updated accordingly. + +Velocities are manipulated in lines \lineRefSingle{6}, \lineRefSingle{8} and +\lineRefSingle{19}. + +Line \lineRefSingle{6} allows to account for external forces +in the simulation if some of the forces cannot be converted to positional +constraints. \emph{(For example the pulling force between subsequent particles +are modelled as distance constraints instead of external forces, and so are the +forces generated by the particles colliding with other objects.} We use it to +add gravity, and to generate wind effects for demonstration purposes. If only +the gravitational force is present, then the line becomes $\b{p_v} \gets \b{p_v} ++ \Delta t \cdot \b{g}$, where $\b{g}$ is the gravitational acceleration. + +In line \lineRefSingle{8} the velocities can be damped, if necessary. \emph{Section +3.5} of the \citet{MullerPBD} paper gives some more sophisticated methods for +damping, although the paper also points out that any form of damping can be +used. In our case, simply applying a $k_s$ damping coefficient with value +between $98\%$ to $99.9\%$ seemed to be a good enough solution. + +The given constraints $C_1, \ldots, C_M$ are fixed throughout the simulation. In +addition to these initial constraints, line \lineRef{13} generates additional +$M_coll$ collisition constrants. These change from time step to time step. The +projection step in line \lineRef{16} considers both the fixed and the collision +constraints. Our implementation + \begin{verbatim} class Particle { vec3 pos;