<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>egor larionov</title>
    <subtitle>Technical writing and personal projects.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://elrnv.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://elrnv.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-04-11T00:00:00+00:00</updated>
    <id>https://elrnv.com/atom.xml</id>
    <entry xml:lang="en">
        <title>Quaffure: Real-Time Quasi-Static Neural Hair Simulation </title>
        <published>2025-04-11T00:00:00+00:00</published>
        <updated>2025-04-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/quaffure/"/>
        <id>https://elrnv.com/projects/quaffure/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/quaffure/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;quaffure-teaser.png&quot; alt=&quot;Quaffure Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Realistic hair motion is crucial for high-quality avatars, but it is often limited by the computational resources available for real-time applications. To address this challenge, we propose a novel neural approach to predict physically plausible hair deformations that generalizes to various body poses, shapes, and hairstyles. Our model is trained using a self-supervised loss, eliminating the need for expensive data generation and storage. We demonstrate our method&#x27;s effectiveness through numerous results across a wide range of pose and shape variations, showcasing its robust generalization capabilities and temporally smooth results. Our approach is highly suitable for real-time applications with an inference time of only a few milliseconds on consumer hardware and its ability to scale to predicting the drape of 1000 grooms in 0.3 seconds.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2412.10061&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tuurstuyck.github.io&#x2F;quaffure&#x2F;quaffure.html&quot;&gt;Webpage&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;_kaSzSsfJuQ&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@inproceedings{stuyck2024quaffure,
  title = {
    Quaffure: Real-Time Quasi-Static Neural Hair Simulation
  },
  author = {
    Stuyck, Tuur and
    Lin, Gene Wei-Chin and
    Larionov, Egor and
    Chen, Hsiao-yu and
    Bozic, Aljaz and
    Sarafianos, Nikolaos and
    Roble, Doug
  },
  booktitle = {
    Proceedings of the IEEE&#x2F;CVF Conference on
    Computer Vision and Pattern Recognition (CVPR)
  },
  month = {June},
  year = {2025}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>PGC: Physics-Based Gaussian Cloth from a Single Pose</title>
        <published>2025-03-26T00:00:00+00:00</published>
        <updated>2025-03-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/physics-based-gaussian-cloth/"/>
        <id>https://elrnv.com/projects/physics-based-gaussian-cloth/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/physics-based-gaussian-cloth/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;pgc-teaser.png&quot; alt=&quot;PGC Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We introduce a novel approach to reconstruct simulation-ready garments with intricate appearance. Despite recent advancements, existing methods often struggle to balance the need for accurate garment reconstruction with the ability to generalize to new poses and body shapes or require large amounts of data to achieve this. In contrast, our method only requires a multi-view capture of a single static frame. We represent garments as hybrid mesh-embedded 3D Gaussian splats, where the Gaussians capture near-field shading and high-frequency details, while the mesh encodes far-field albedo and optimized reflectance parameters. We achieve novel pose generalization by exploiting the mesh from our hybrid approach, enabling physics-based simulation and surface rendering techniques, while also capturing fine details with Gaussians that accurately reconstruct garment details. Our optimized garments can be used for simulating garments on novel poses, and garment relighting.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2503.20779&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;phys-gaussian-cloth.github.io&#x2F;&quot;&gt;Webpage&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;Pi4Kw2wUBSU&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@inproceedings{guo2025pgc,
  title = {
    PGC: Physics-Based Gaussian Cloth from a Single Pose
  },
  author = {
    Guo, Michelle and
    Chiang, Matt Jen-Yuan and
    Santesteban, Igor and
    Sarafianos, Nikolaos
    and Chen, Hsiao-yu
    and Halimi, Oshri
    and Bo{\v{z}}i{\v{c}}, Alja{\v{z}} and
    Saito, Shunsuke and
    Wu, Jiajun and
    Liu, C. Karen and
    Stuyck, Tuur and
    Larionov, Egor
  },
  booktitle = {
    Proceedings of the IEEE&#x2F;CVF Conference on
    Computer Vision and Pattern Recognition (CVPR)
  },
  month = {June},
  year = {2025}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>DiffAvatar: Simulation-Ready Garment Optimization with Differentiable Simulation</title>
        <published>2024-03-29T00:00:00+00:00</published>
        <updated>2024-03-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/diff-avatar/"/>
        <id>https://elrnv.com/projects/diff-avatar/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/diff-avatar/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;diff-avatar-teaser.png&quot; alt=&quot;DiffAvatar Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The realism of digital avatars is crucial in enabling telepresence applications with self-expression and customization. While physical simulations can produce realistic motions for clothed humans, they require high-quality garment assets with associated physical parameters for cloth simulations. However, manually creating these assets and calibrating their parameters is labor-intensive and requires specialized expertise. Current methods focus on reconstructing geometry, but don&#x27;t generate complete assets for physics-based applications. To address this gap, we propose DiffAvatar, a novel approach that performs body and garment co-optimization using differentiable simulation. By integrating physical simulation into the optimization loop and accounting for the complex nonlinear behavior of cloth and its intricate interaction with the body, our framework recovers body and garment geometry and extracts important material parameters in a physically plausible way. Our experiments demonstrate that our approach generates realistic clothing and body shape suitable for downstream applications.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2311.12194&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;people.csail.mit.edu&#x2F;liyifei&#x2F;publication&#x2F;diffavatar&#x2F;&quot;&gt;MIT&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;vH2MCXneAUE&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@inproceedings{li2023diffavatar,
  title = {
    {DiffAvatar}:
    Simulation-Ready Garment Optimization with Differentiable Simulation
  },
  author = {
    Li, Yifei  and
    Chen, Hsiao-yu and
    Larionov, Egor and
    Sarafianos, Nikolaos and
    Matusik, Wojciech and
    Stuyck, Tuur
  },
  booktitle = {
    Proceedings of the IEEE&#x2F;CVF Conference on
    Computer Vision and Pattern Recognition (CVPR)
  },
  month = {June},
  eprint = {2311.12194},
  year = {2024}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Estimating Cloth Elasticity Parameters From Homogenized Yarn-Level Models</title>
        <published>2024-01-26T00:00:00+00:00</published>
        <updated>2024-01-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/yarn-cloth/"/>
        <id>https://elrnv.com/projects/yarn-cloth/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/yarn-cloth/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;yarn-cloth-teaser.jpg&quot; alt=&quot;Cloth elasticity from yarn-level models Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Using knowledge of fabric yarn structure and material properties, we propose a forward estimation pipeline to generate realistic shell-level simulations with automatically determined material parameters. For each real-world fabric, we start by observing the underlying yarn structure and derive the yarn model parameters from standard estimates of the Young&#x27;s moduli as well as simple measurements of the fabric. After sampling a range of in-plane and out-of-plane deformations, we tile the yarns periodically on each deformed surface, simulate and record the yarn responses, which are subsequently used for optimizing the membrane and bending elasticity parameters of a shell model. We validate our results by comparing against real fabric captures and measurements. Finally, we simulate full-body garments and compare to reference footage.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;pdf&#x2F;10.1145&#x2F;3677388.3696340&quot;&gt;PDF&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2401.15169&quot;&gt;arXiv&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;10.1145&#x2F;3677388.3696340&quot;&gt;ACM&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;bjNjxqX34AE?si=cTdjLZAwqyc6DSWm&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;div class=&quot;iframe-container&quot;&gt;
&lt;iframe class=&quot;responsive-iframe&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;bjNjxqX34AE?si=Y2kyv4wTr1qjqi61&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@inproceedings{zhang2024yarncloth,
  author = {
    Zhang, Joy Xiaoji and
    Lin, Gene Wei-Chin and
    Bode, Lukas and
    Chen, Hsiao-Yu and
    Stuyck, Tuur and
    Larionov, Egor
  },
  title = {
    Estimating Cloth Elasticity Parameters From Homogenized Yarn-Level Models
  },
  year = {2024},
  isbn = {9798400710902},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  url = {https:&#x2F;&#x2F;doi.org&#x2F;10.1145&#x2F;3677388.3696340},
  doi = {10.1145&#x2F;3677388.3696340},
  booktitle = {
    Proceedings of the 17th ACM SIGGRAPH Conference on
    Motion, Interaction, and Games
  },
  articleno = {7},
  numpages = {12},
  keywords = {
    homogenization,
    physics-based animation,
    yarn-level cloth simulation
  },
  location = {Arlington, VA, USA},
  series = {MIG &amp;#39;24}
}

&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>PhysGraph: Physics-Based Integration Using Graph Neural Networks</title>
        <published>2023-11-04T00:00:00+00:00</published>
        <updated>2023-11-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/physgraph/"/>
        <id>https://elrnv.com/projects/physgraph/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/physgraph/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;physgraph-teaser.png&quot; alt=&quot;PhysGraph Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Physics-based simulation of mesh based domains remains a challenging task. State-of-the-art techniques can produce realistic results but require expert knowledge. A major bottleneck in many approaches is the step of integrating a potential energy in order to compute velocities or displacements. Recently, learning based method for physics-based simulation have sparked interest with graph based approaches being a promising research direction. One of the challenges for these methods is to generate models that are mesh independent and generalize to different material properties. Moreover, the model should also be able to react to unforeseen external forces like ubiquitous collisions. Our contribution is based on a simple observation: evaluating forces is computationally relatively cheap for traditional simulation methods and can be computed in parallel in contrast to their integration. If we learn how a system reacts to forces in general, irrespective of their origin, we can learn an integrator that can predict state changes due to the total forces with high generalization power. We effectively factor out the physical model behind resulting forces by relying on an opaque force module. We demonstrate that this idea leads to a learnable module that can be trained on basic internal forces of small mesh patches and generalizes to different mesh typologies, resolutions, material parameters and unseen forces like collisions at inference time. Our proposed paradigm is general and can be used to model a variety of physical phenomena. We focus our exposition on the detail enhancement of coarse clothing geometry which has many applications including computer games, virtual reality and virtual try-on.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2301.11841&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2301.11841&quot;&gt;arXiv&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;s8ZFvdQdMBc?si=PTEpPDlNna6kuhiS&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@misc{halimi2023physgraph,
  title = {
    PhysGraph: Physics-Based Integration Using Graph Neural Networks
  }, 
  author = {
    Oshri Halimi and
    Egor Larionov and
    Zohar Barzelay and
    Philipp Herholz and
    Tuur Stuyck
  },
  year = {2023},
  eprint = {2301.11841},
  archivePrefix = {arXiv},
  primaryClass = {cs.GR},
  url = {https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2301.11841}, 
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>In situ measurement of friction on the human body</title>
        <published>2023-06-01T00:00:00+00:00</published>
        <updated>2023-06-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/in-situ-measurement-of-friction-on-the-human-body/"/>
        <id>https://elrnv.com/projects/in-situ-measurement-of-friction-on-the-human-body/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/in-situ-measurement-of-friction-on-the-human-body/">&lt;p&gt;Measuring friction on the human body is challenging on areas where the surface of the skin is
curved. Handheld devices for measuring friction may make it easier to rapidly measure from
hard-to-reach areas, however, the orientation of the probe relative to the surface is often
suboptimal to reliably measure the normal force.&lt;&#x2F;p&gt;
&lt;p&gt;Here, the friction on the surfaces of a mannequin and a human body are measured and corrected using
a curvature correction technique. This is accomplished by accounting for the shape of the
measurement surface and the orientation of the measurement device relative to that surface. Two
strategies for constructing the surface shape of the measurement surface are compared.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Preprint&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;&#x2F;friction_measurement_on_the_human_body.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Publication&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;abs&#x2F;pii&#x2F;S0301679X23002347&quot;&gt;Elsevier&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{whlp23,
    title = {In situ measurement of friction on the human body},
    journal = {Tribology International},
    volume = {184},
    pages = {108447},
    year = {2023},
    issn = {0301-679X},
    doi = {https:&#x2F;&#x2F;doi.org&#x2F;10.1016&#x2F;j.triboint.2023.108447},
    url = {https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;pii&#x2F;S0301679X23002347},
    author = {Pearson A. Wyder-Hodge and Egor Larionov and Dinesh K. Pai},
    keywords = {Friction, Measurement, Sliding, Topography},
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Constrained dynamics with frictional contact on smooth surfaces</title>
        <published>2022-12-31T00:00:00+00:00</published>
        <updated>2022-12-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/friction-and-differentiable-simulation/"/>
        <id>https://elrnv.com/projects/friction-and-differentiable-simulation/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/friction-and-differentiable-simulation/">&lt;p&gt;Friction and contact pose a great challenge to efficient and accurate
simulation of deformable objects for computer graphics and engineering
applications.  In contrast to many engineering applications, simulation software
for graphics often permits larger approximation errors in favour of better
predictability, controllability and efficiency.
This dissertation explores modern methods for frictional contact resolution in
computer graphics.  In particular, the focus is on offline simulation of smooth
elastic objects subject to contact with other elastic solids and cloth.  We
explore traditional non-smooth friction formulations as well as smoothed
frictional contact, which lends itself well to differentiable simulation and
analysis.  We then explore a particular application of differentiable simulation
to motivate the direction of research.&lt;&#x2F;p&gt;
&lt;p&gt;In graphics, even smooth objects are typically approximated using piecewise
linear polyhedra, which exhibit sliding artifacts that can be interpreted as
artificial friction making simulations less predictable.  We develop a technique
for improving fidelity of sliding contact between smooth objects.&lt;&#x2F;p&gt;
&lt;p&gt;Frictional contacts are traditionally resolved using non-smooth models, which
are complex to analyse and difficult to compute to a desirable error estimate.
We propose a unified description of the equations of motion subject to
frictional contacts using a smooth model that converges to an accurate friction
response. We further analyse the implications of this formulation and compare
our results to state-of-the-art methods.&lt;&#x2F;p&gt;
&lt;p&gt;The smooth model uniquely resolves frictional contacts, while also being fully
differentiable.  This allows inverse problems using our formulation to be solved
by gradient-based methods.  We begin our exploration of differentiable
simulation applications with a parameter estimation task.  Elastic parameters
are estimated for a three distinct cloth materials using a novel capture,
registration and estimation pipeline. Static equilibrium cloth configurations
are efficiently estimated using a popular compliant constraint dynamics.  In
this work we address a common issue of bifurcation in cloth, which causes final
configuration mismatches during estimation.  Finally, we postulate an extension
to compliant constraint dynamics using our friction model, to show how our
previous work can be used in parameter estimation tasks involving contact and
friction.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;&#x2F;phd&#x2F;egor_larionov_thesis.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Publication&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;open.library.ubc.ca&#x2F;soa&#x2F;cIRcle&#x2F;collections&#x2F;ubctheses&#x2F;24&#x2F;items&#x2F;1.0422992&quot;&gt;UBC&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Code&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;softy.git&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h1 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h1&gt;
&lt;pre&gt;&lt;code&gt;@phdthesis{larionov22phd,
  series = {Electronic Theses and Dissertations (ETDs) 2008+},
  title = {Constrained dynamics with frictional contact on smooth surfaces},
  url = {https:&#x2F;&#x2F;open.library.ubc.ca&#x2F;collections&#x2F;ubctheses&#x2F;24&#x2F;items&#x2F;1.0422992},
  DOI = {http:&#x2F;&#x2F;dx.doi.org&#x2F;10.14288&#x2F;1.0422992}, school={University of British Columbia},
  author = {Larionov, Egor},
  year = {2022},
  collection = {Electronic Theses and Dissertations (ETDs) 2008+}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Unphased Wrinkles: Estimating cloth elasticity parameters using a frequency-based loss</title>
        <published>2022-12-16T00:00:00+00:00</published>
        <updated>2022-12-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/unphased-wrinkles/"/>
        <id>https://elrnv.com/projects/unphased-wrinkles/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/unphased-wrinkles/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;unphased-wrinkles-teaser.png&quot; alt=&quot;Unphased Wrinkles Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Generating realistic clothing for virtual applications like online retail and digital avatars is crucial but requires expert knowledge of 3D tools to generating believable simulations.  Recently, a number of works proposed to estimate cloth material properties from specialized capture setups. However, these systems tend to be monolithic, complex and expensive. We propose a simplified method for automatically determining parameters based on easily captured real-world fabrics.  While existing methods carefully design experiments to isolate stretch parameters from bending modes, we embrace that stretching fabrics causes wrinkling and propose a novel specialized loss for comparing wrinkled fabrics.  We designed our objective function to capture material-specific behavior, resulting in similar values for different wrinkle configurations of the same material. We estimate bending first, given that membrane stiffness has little effect on bending. We use differentiable simulation to find an optimal set of parameters that minimizes the difference between simulated cloth and deformed target cloth. Furthermore, our pipeline decouples the capture method from the optimization by registering a template mesh to the scanned data. These choices simplify the capture system and allow for wrinkles in scanned fabrics.  We demonstrate our method on captured data of three different real-world fabrics and on three digital fabrics produced by a third-party simulator.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2212.08790&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@misc{larionov2022estimatingclothelasticityparameters,
      title={Estimating Cloth Elasticity Parameters Using Position-Based Simulation of Compliant Constrained Dynamics}, 
      author={Egor Larionov and Marie-Lena Eckert and Katja Wolff and Tuur Stuyck},
      year={2022},
      eprint={2212.08790},
      archivePrefix={arXiv},
      primaryClass={cs.GR},
      url={https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2212.08790}, 
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Implicit Frictional Dynamics with Soft Constraints</title>
        <published>2022-11-24T00:00:00+00:00</published>
        <updated>2022-11-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/implicit-frictional-dynamics/"/>
        <id>https://elrnv.com/projects/implicit-frictional-dynamics/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/implicit-frictional-dynamics/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;implicit-frictional-dynamics-teaser.png&quot; alt=&quot;Implicit Frictional Dynamics Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Dynamics simulation with frictional contacts is important for a wide range of
applications, from cloth simulation to object manipulation. Recent methods
using smoothed lagged friction forces have enabled robust and differentiable
simulation of elastodynamics with friction. However, the resulting frictional
behavior can be inaccurate and may not converge to analytic
solutions.
Here we evaluate the accuracy of lagged friction models
in comparison with implicit frictional contact systems.
We show that major inaccuracies near
the stick-slip threshold in such systems are caused by lagging of friction
forces rather than by smoothing the Coulomb friction curve.
Furthermore, we demonstrate how systems involving implicit or lagged
friction can be correctly used with higher-order time integration and
highlight limitations in earlier attempts.
We demonstrate how to exploit forward-mode automatic differentiation to
simplify and, in some cases, improve the performance of the inexact Newton
method.
Finally, we show that other complex phenomena can also be simulated
effectively while maintaining smoothness of the entire system.  We extend our
method to exhibit stick-slip frictional behavior and preserve volume on
compressible and nearly-incompressible media using soft constraints.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2211.10618&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Code&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;softy&#x2F;tree&#x2F;tvcg2024&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;&#x2F;vid&#x2F;implicit-frictional-dynamics.webm&quot;&gt;WEBM&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;vpv99doOdGs&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@misc{larionov2022implicitfriction,
  title={Implicit frictional dynamics with soft constraints},
  author={
    Egor Larionov and
    Andreas Longva and
    Uri M. Ascher and
    Jan Bender and
    Dinesh K. Pai
  },
  year={2022},
  eprint={2211.10618},
  archivePrefix={arXiv},
  primaryClass={cs.GR},
  url={https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2211.10618},
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>In situ measurement of friction on curved surfaces</title>
        <published>2022-09-01T00:00:00+00:00</published>
        <updated>2022-09-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/in-situ-measurement-of-friction-on-curved-surfaces/"/>
        <id>https://elrnv.com/projects/in-situ-measurement-of-friction-on-curved-surfaces/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/in-situ-measurement-of-friction-on-curved-surfaces/">&lt;p&gt;In situ measurement of frictional properties, particularly of human skin, is challenging. A major
challenge is that the measured surface may be curved and oriented arbitrarily relative to the
measurement device, making it difficult to obtain accurate and reliable friction estimates.&lt;&#x2F;p&gt;
&lt;p&gt;Here we propose a method to simultaneously estimate the orientation of the surface during friction
measurements, using a custom-made hand-held tribometer. The method accounts for the position and
orientation of the tribometer relative to the shape of the measured surface. Our simple calibration
method allows lightweight tribometers to be built with cheaper materials like plastic, without
sacrificing accuracy.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Preprint&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;&#x2F;friction_measurement_on_curved_surfaces.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Publication&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;abs&#x2F;pii&#x2F;S0301679X22001645&quot;&gt;Elsevier&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{whlp22,
    title = {In situ measurement of friction on curved surfaces},
    journal = {Tribology International},
    volume = {173},
    pages = {107591},
    year = {2022},
    issn = {0301-679X},
    doi = {https:&#x2F;&#x2F;doi.org&#x2F;10.1016&#x2F;j.triboint.2022.107591},
    url = {https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;pii&#x2F;S0301679X22001645},
    author = {Pearson A. Wyder-Hodge and Egor Larionov and Dinesh K. Pai},
    keywords = {Friction, Measurement, Sliding, Topography},
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Houdini Plugins</title>
        <published>2022-05-31T00:00:00+00:00</published>
        <updated>2022-05-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/software/houdini-plugins/"/>
        <id>https://elrnv.com/software/houdini-plugins/</id>
        
        <content type="html" xml:base="https://elrnv.com/software/houdini-plugins/">&lt;p&gt;I developed the following plugins for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sidefx.com&#x2F;&quot;&gt;Houdini&lt;&#x2F;a&gt; to aid my research in
soft tissue simulation.
All binaries here are built from open source code available on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&quot;&gt;GitHub&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h1&gt;
&lt;p&gt;The following instructions demonstrate how to install Houdini plugins on various platforms.
Remember to replace the given Houdini version with the desired one.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;linux&quot;&gt;Linux&lt;&#x2F;h2&gt;
&lt;p&gt;After downloading the appropriate plugin binary, simply drop it into your &lt;code&gt;~&#x2F;houdini18.5&#x2F;dso&lt;&#x2F;code&gt;
folder.  To make sure that Houdini sees the plugins, create a symlink to the
versioned library with&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;ln -s ~&#x2F;houdini18.5&#x2F;dso&#x2F;vtkio.so.0.2.0 ~&#x2F;houdini18.5&#x2F;dso&#x2F;vtkio.so
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;where &lt;code&gt;vtkio.so.0.2.0&lt;&#x2F;code&gt; should be substituted with one of the dynamic libraries provided below and
&lt;code&gt;houdini18.5&lt;&#x2F;code&gt; should correspond to the correct Houdini version.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;macos&quot;&gt;macOS&lt;&#x2F;h2&gt;
&lt;p&gt;These instructions are similar to what is done on Linux.&lt;&#x2F;p&gt;
&lt;p&gt;After downloading the appropriate plugin binary, simply drop it into your
&lt;code&gt;~&#x2F;Library&#x2F;Preferences&#x2F;houdini&#x2F;18.5&#x2F;dso&lt;&#x2F;code&gt; folder.  Make sure no other version of the same plugin
resides in the &lt;code&gt;~&#x2F;LibraryPreferences&#x2F;houdini&#x2F;18.5&#x2F;dso&lt;&#x2F;code&gt; directory to avoid conflicts.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;windows&quot;&gt;Windows&lt;&#x2F;h2&gt;
&lt;p&gt;After downloading the appropriate zip file, unzip it into your &lt;code&gt;%UserProfile%\Documents\houdini18.5\dso&lt;&#x2F;code&gt;
folder.  Note that this will overwrite any existing versions of the same plugin you had installed
before, so make sure to back up any previous versions.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;i-o-extensions&quot;&gt;I&#x2F;O Extensions&lt;&#x2F;h1&gt;
&lt;p&gt;The following plugins enable Houdini to import and export additional types of mesh files.
The code for these plugins is hosted on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;hdkrs&quot;&gt;GitHub&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vtk-i-o&quot;&gt;VTK I&#x2F;O&lt;&#x2F;h2&gt;
&lt;p&gt;This plugin allows one to import and export Legacy &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vtk.org&quot;&gt;VTK&lt;&#x2F;a&gt; files (in binary format).
These files have support for primitive and point attributes in polygonal or tetrahedral meshes.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Version&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Build&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Download Link&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;strong&gt;v0.3.0&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Linux 3.10 x86 64bit for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;lin&#x2F;vtkio.so.0.3.0&quot;&gt;&lt;samp&gt;vtkio.so.0.3.0&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (12MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 12.3 x86 64bit for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;mac&#x2F;vtkio.0.3.0.dylib&quot;&gt;&lt;samp&gt;vtkio.0.3.0.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (7.9MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 12.3 arm 64bit for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;arm&#x2F;mac&#x2F;vtkio.0.3.0.dylib&quot;&gt;&lt;samp&gt;vtkio.0.3.0.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (7.0MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Windows 10 x86 64bit for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;win&#x2F;vtkio.0.3.0.zip&quot;&gt;&lt;samp&gt;vtkio.0.3.0.zip&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (1.7MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;strong&gt;v0.2.0&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Linux 5.8 x86 64bit  for Houdini 18.5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;vtkio.so.0.2.0&quot;&gt;&lt;samp&gt;vtkio.so.0.2.0&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (14MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 10.15 x86 64bit for Houdini 18.5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;vtkio.0.2.0.dylib&quot;&gt;&lt;samp&gt;vtkio.0.2.0.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (10MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Windows 10 x86 64bit for Houdini 18.5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;vtkio.0.2.0.zip&quot;&gt;&lt;samp&gt;vtkio.0.2.0.zip&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (1.2MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;strong&gt;v0.1.0&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Linux 5.0 x86 64bit for Houdini 17.5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;vtkio.so.0.1.0&quot;&gt;&lt;samp&gt;vtkio.so.0.1.0&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (6.4MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 10.14 x86 64bit for Houdini 17.5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;vtkio.0.1.0.dylib&quot;&gt;&lt;samp&gt;vtkio.0.1.0.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (5.3MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Windows 10 x86 64bit for Houdini 17.5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;vtkio.0.1.0.zip&quot;&gt;&lt;samp&gt;vtkio.0.1.0.zip&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (0.7MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;msh-i-o&quot;&gt;Msh I&#x2F;O&lt;&#x2F;h2&gt;
&lt;p&gt;An importer (exporting not yet supported) for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gmsh.info&quot;&gt;Gmsh&lt;&#x2F;a&gt; version 4.1 files into Houdini.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Build Version&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Download Link&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Linux 3.10 x86 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;lin&#x2F;mshio.so.0.1.1&quot;&gt;&lt;samp&gt;mshio.so.0.1.1&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (4.0MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 12.3 x86 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;mac&#x2F;mshio.0.1.1.dylib&quot;&gt;&lt;samp&gt;mshio.0.1.1.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (2.5MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 12.3 arm 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;arm&#x2F;mac&#x2F;mshio.0.1.1.dylib&quot;&gt;&lt;samp&gt;mshio.0.1.1.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (2.2MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Windows 10 x86 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;win&#x2F;mshio.0.1.1.zip&quot;&gt;&lt;samp&gt;mshio.0.1.1.zip&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (0.5MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;obj-i-o&quot;&gt;Obj I&#x2F;O&lt;&#x2F;h2&gt;
&lt;p&gt;This is a slightly faster (at the time of this writing) alternative for importing and exporting
Wavefront OBJ files in Houdini compared to the builtin version.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Build Version&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Download Link&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Linux 3.10 x86 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;lin&#x2F;objio.so.0.1.1&quot;&gt;&lt;samp&gt;objio.so.0.1.1&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (4.0MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 12.3 x86 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;mac&#x2F;objio.0.1.1.dylib&quot;&gt;&lt;samp&gt;objio.0.1.1.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (2.9MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;macOS 12.3 arm 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;arm&#x2F;mac&#x2F;objio.0.1.1.dylib&quot;&gt;&lt;samp&gt;objio.0.1.1.dylib&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (2.2MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Windows 10 x86 64bit version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt; for Houdini 19.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;x86&#x2F;win&#x2F;objio.0.1.1.zip&quot;&gt;&lt;samp&gt;objio.0.1.1.zip&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (0.5MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h1 id=&quot;implicits-sop&quot;&gt;Implicits SOP&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;em&gt;Implicits&lt;&#x2F;em&gt; is a SOP that computes various types of implicit surfaces. The current implementation
takes a collection of points (for example on a grid) on the first input and another polygon mesh on
the second input, and computes an implicit function on the points in the first input representing
the mesh provided by the second input. The supported implicit functions include &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;rodolphe-vaillant.fr&#x2F;?e=12&quot;&gt;Hermite Radial
Basis Functions&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;graphics.berkeley.edu&#x2F;papers&#x2F;Shen-IAI-2004-08&#x2F;&quot;&gt;Moving Least Squares
Surfaces&lt;&#x2F;a&gt;. Actual documentation is
warranted, and is planned to be released with the code.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Build Version&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Download Link&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Linux 5.0 x86 64bit dynamic library version &lt;strong&gt;0.1.1&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;a href=&quot;&#x2F;software&#x2F;sop_implicits.so.0.1.1&quot;&gt;&lt;samp&gt;sop_implicits.so.0.1.1&lt;&#x2F;samp&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (7.8MB)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h1 id=&quot;compatibility&quot;&gt;Compatibility&lt;&#x2F;h1&gt;
&lt;p&gt;These plugins have to be compatible with the right version of Houdini
as well as the operating system (OS). The given OS version numbers above show versions
that were tested to work. Most likely a wider range of OS versions will work.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;acknowledgments&quot;&gt;Acknowledgments&lt;&#x2F;h1&gt;
&lt;p&gt;These plugins depend on many third-party open source libraries, which means this work would not be
possible without all of the open source contributors involved in developing the supporting software.
I would also like to thank the folks at SideFX for building a powerful tool like Houdini, providng
support, stellar documentation and loads of online learning resources.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Simulating deformable objects for computer animation: a numerical perspective</title>
        <published>2022-01-01T00:00:00+00:00</published>
        <updated>2022-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/deformables-for-animation/"/>
        <id>https://elrnv.com/projects/deformables-for-animation/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/deformables-for-animation/">&lt;p&gt;We examine a variety of numerical methods that arise when considering dynamical systems in the
context of physics-based simulations of deformable objects.  Such problems arise in various
applications, including animation, robotics, control and fabrication.  The goals and merits
of suitable numerical algorithms for these applications are different from those of typical
numerical analysis research in dynamical systems.  Here the mathematical model is not fixed &lt;em&gt;a
priori&lt;&#x2F;em&gt; but must be adjusted as necessary to capture the desired behaviour, with an emphasis on
effectively producing lively animations of objects with complex geometries.  Results are often judged
by how realistic they appear to observers (by the &quot;eye-norm&quot;) as well as by the efficacy of the
numerical procedures employed.  And yet, we show that with an adjusted view numerical analysis and
applied mathematics can contribute significantly to the development of appropriate methods and their
analysis in a variety of areas including finite element methods, stiff and highly oscillatory ODEs,
model reduction, and constrained optimization.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2103.01891.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2103.01891&quot;&gt;arXiv&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.aimsciences.org&#x2F;article&#x2F;doi&#x2F;10.3934&#x2F;jcd.2021021&quot;&gt;JCD&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{alsp21,
    title = {
        Simulating deformable objects for computer animation:
        A numerical perspective
    },
    author = {
        Uri M. Ascher and
        Egor Larionov and
        Seung Heon Sheen and
        Dinesh K. Pai
    },
    year = {2021},
    journal = {Journal of Computational Dynamics},
    volume = {0},
    number = {},
    pages = {-},
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Volume Preserving Simulation of Soft Tissue with Skin</title>
        <published>2021-10-04T00:00:00+00:00</published>
        <updated>2021-10-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/volume-preserving-simulation-of-soft-tissue-with-skin/"/>
        <id>https://elrnv.com/projects/volume-preserving-simulation-of-soft-tissue-with-skin/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/volume-preserving-simulation-of-soft-tissue-with-skin/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;volume_teaser.png&quot; alt=&quot;Volume Preserving Simulation Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Simulation of human soft tissues in contact with their environment is essential in many fields, including
visual effects and apparel design. Biological tissues are nearly incompressible. However, standard methods
employ compressible elasticity models and achieve incompressibility indirectly by setting Poisson’s ratio to
be close to 0.5. This approach can produce results that are plausible qualitatively but inaccurate quantatively.
This approach also causes numerical instabilities and locking in coarse discretizations or otherwise poses
a prohibitive restriction on the size of the time step. We propose a novel approach to alleviate these issues
by replacing indirect volume preservation using Poisson’s ratios with direct enforcement of zonal volume
constraints, while controlling fine-scale volumetric deformation through a cell-wise compression penalty.
To increase realism, we propose an epidermis model to mimic the dramatically higher surface stiffness on
real skinned bodies. We demonstrate that our method produces stable realistic deformations with precise
volume preservation but without locking artifacts. Due to the volume preservation not being tied to mesh
discretization, our method also allows a resolution consistent simulation of incompressible materials. Our
method improves the stability of the standard neo-Hookean model and the general compression recovery in
the Stable neo-Hookean model.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;2109.01170.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;abs&#x2F;10.1145&#x2F;3480143&quot;&gt;ACM&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=avHcilUto5A&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{slp21,
    author = {Sheen, Seung Heon and Larionov, Egor and Pai, Dinesh K.},
    title = {Volume Preserving Simulation of Soft Tissue with Skin},
    year = {2021},
    issue_date = {September 2021},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {4},
    number = {3},
    url = {https:&#x2F;&#x2F;doi.org&#x2F;10.1145&#x2F;3480143},
    doi = {10.1145&#x2F;3480143},
    journal = {Proc. ACM Comput. Graph. Interact. Tech.},
    month = sep,
    articleno = {32},
    numpages = {23},
    keywords = {finite element method, incompressibility, neo-Hookean elasticity, soft-tissue simulation, volume constraint}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Frictional Contact on Smooth Elastic Solids</title>
        <published>2021-04-29T00:00:00+00:00</published>
        <updated>2021-04-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/frictional-contact-on-smooth-elastic-solids/"/>
        <id>https://elrnv.com/projects/frictional-contact-on-smooth-elastic-solids/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/frictional-contact-on-smooth-elastic-solids/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;fcses_banner.png&quot; alt=&quot;Frictional Contact Teaser&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Frictional contact between deformable elastic objects remains a difficult simulation problem in
computer graphics. Traditionally, contact has been resolved using sophisticated collision detection
schemes and methods that build on the assumption that contact happens between polygons. While
polygonal surfaces are an efficient representation for solids, they lack some intrinsic properties
that are important for contact resolution. Generally, polygonal surfaces are not equipped with an
intrinsic inside and outside partitioning or a smooth distance field close to the surface.&lt;&#x2F;p&gt;
&lt;p&gt;Here we propose a new method for resolving frictional contacts against deforming implicit surface
representations that addresses these problems. We augment a moving least squares (MLS) implicit
surface formulation with a local kernel for resolving contacts, and develop a simple parallel
transport approximation to enable transfer of frictional impulses. Our variational formulation of
dynamics and elasticity enables us to naturally include contact constraints, which are resolved as
one Newton-Raphson solve with linear inequality constraints. We extend this formulation by
forwarding friction impulses from one time step to the next, used as external forces in the
elasticity solve. This maintains the decoupling of friction from elasticity thus allowing for
different solvers to be used in each step. In addition, we develop a variation of staggered
projections, that relies solely on a non-linear optimization without constraints and does not
require a discretization of the friction cone. Our results compare favorably to a popular industrial
elasticity solver (used for visual effects), as well as recent academic work in frictional contact,
both of which rely on polygons for contact resolution. We present examples of coupling between rigid
bodies, cloth and elastic solids.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;&#x2F;fcses_tog21.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;10.1145&#x2F;3446663&quot;&gt;ACM&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;&#x2F;vid&#x2F;fcses_tog2021.webm&quot;&gt;WEBM&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Code&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;softy&#x2F;tree&#x2F;tog2021&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{lfp21,
    author = {Larionov, Egor and Fan, Ye and Pai, Dinesh K.},
    title = {Frictional Contact on Smooth Elastic Solids},
    year = {2021},
    issue_date = {April 2021},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {40},
    number = {2},
    issn = {0730-0301},
    url = {https:&#x2F;&#x2F;doi.org&#x2F;10.1145&#x2F;3446663},
    doi = {10.1145&#x2F;3446663},
    journal = {ACM Trans. Graph.},
    month = apr,
    articleno = {15},
    numpages = {17},
    keywords = {contact, elasticity, dry friction}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>About Me</title>
        <published>2020-01-28T00:00:00+00:00</published>
        <updated>2020-01-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/about/"/>
        <id>https://elrnv.com/about/</id>
        
        <content type="html" xml:base="https://elrnv.com/about/">&lt;p&gt;I am currently a researcher at Meta Reality Labs working on physically based animation.
I did my PhD on &lt;a href=&quot;&#x2F;phd&#x2F;egor_larionov_thesis.pdf&quot;&gt;simulation problems relating to contact and
friction&lt;&#x2F;a&gt; at the University of British Columbia supervised
by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sensorimotor.cs.ubc.ca&#x2F;pai&#x2F;&quot;&gt;Dinesh K. Pai&lt;&#x2F;a&gt;.  During my Master&#x27;s, I studied fluid
simulation at the University of Waterloo supervised by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cs.uwaterloo.ca&#x2F;~c2batty&#x2F;&quot;&gt;Christopher Batty&lt;&#x2F;a&gt;.
In undergrad I majored in Pure Mathematics and Computer Science with a minor in
Physics, also at the University of Waterloo.  I am interested in problems relating to the simulation of
natural phenomena, and how they can influence our experience in the virtual world.&lt;&#x2F;p&gt;
&lt;p&gt;I am also passionate about open source. I have written and contributed to a number of open source
projects, which can be found on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&quot;&gt;github&lt;&#x2F;a&gt; or
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;elrnv&quot;&gt;gitlab&lt;&#x2F;a&gt;.  My goal in open source is to improve the quality of software
tools available for creators and researchers.  In my field, I believe that code quality has a
significant impact on research progress and quality of results.&lt;&#x2F;p&gt;
&lt;img class=&quot;imgborder alignright&quot; src=&quot;&#x2F;img&#x2F;iceland_crater.jpg&quot; alt=&quot;Standing on the Hverfjall crater in northern Iceland&quot;&gt;
&lt;p&gt;This is me on the Hverfjall volcanic crater with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;M%C3%BDvatn&quot;&gt;lake Mývatn&lt;&#x2F;a&gt; in the background.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m a big fan of climbing, mountain biking, canoeing and travelling.
Otherwise, I spend the majority of my time working indoors, hunched in front of a computer.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>The Human Touch: Measuring Contact with Real Human Soft Tissues</title>
        <published>2018-08-12T00:00:00+00:00</published>
        <updated>2018-08-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/human-touch/"/>
        <id>https://elrnv.com/projects/human-touch/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/human-touch/">&lt;p&gt;Simulating how the human body deforms in contact with external objects, tight clothing, or other
humans is of central importance to many fields. Despite great advances in numerical methods, the
material properties required to accurately simulate the body of a real human have been sorely
lacking. Here we show that mechanical properties of the human body can be directly measured using a
novel hand-held device. We describe a complete pipeline for measurement, modeling, parameter
estimation, and simulation using the finite element method. We introduce a phenomenological model
(the sliding thick skin model) that is effective for both simulation and parameter estimation. Our
data also provide new insights into how the human body actually behaves. The methods described here
can be used to create personalized models of an individual human or of a population. Consequently,
our methods have many potential applications in computer animation, product design, e-commerce, and
medicine.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cs.ubc.ca&#x2F;research&#x2F;HumanTouch&#x2F;HumanTouchSIGGRAPH2018.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;10.1145&#x2F;3197517.3201296&quot;&gt;ACM&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?time_continue=3&amp;amp;v=redCdmnDZwY&amp;amp;feature=emb_logo&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{prwwflhds18,
    author = {
        Pai, Dinesh K. and
        Rothwell, Austin and
        Wyder-Hodge, Pearson and
        Wick, Alistair and
        Fan, Ye and
        Larionov, Egor and
        Harrison, Darcy and
        Neog, Debanga Raj and
        Shing, Cole
    },
    title = {
        The Human Touch:
        Measuring Contact with Real Human Soft Tissues
    },
    year = {2018},
    issue_date = {August 2018},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {37},
    number = {4},
    issn = {0730-0301},
    url = {https:&#x2F;&#x2F;doi.org&#x2F;10.1145&#x2F;3197517.3201296},
    doi = {10.1145&#x2F;3197517.3201296},
    journal = {ACM Trans. Graph.},
    month = jul,
    articleno = {Article 58},
    numpages = {12},
    keywords = {
        contact, finite element, soft tissues, biomechanics,
        measurement, human simulation
    }
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Variational Stokes: A Unified Pressure-Viscosity Solver for Accurate Viscous Liquids</title>
        <published>2017-07-30T00:00:00+00:00</published>
        <updated>2017-07-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/variational-stokes-a-unified-pressure-viscosity-solver-for-accurate-viscous-liquids/"/>
        <id>https://elrnv.com/projects/variational-stokes-a-unified-pressure-viscosity-solver-for-accurate-viscous-liquids/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/variational-stokes-a-unified-pressure-viscosity-solver-for-accurate-viscous-liquids/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;variational_stokes_banner.png&quot; alt=&quot;Variational Stokes Teaser Figure&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We propose a novel unsteady Stokes solver for coupled viscous and pressure forces in grid-based
liquid animation which yields greater accuracy and visual realism than previously achieved. Modern
fluid simulators treat viscosity and pressure in separate solver stages, which reduces accuracy and
yields incorrect free surface behavior. Our proposed implicit variational formulation of the Stokes
problem leads to a symmetric positive definite linear system that gives properly coupled forces,
provides unconditional stability, and treats difficult boundary conditions naturally through simple
volume weights. Surface tension and moving solid boundaries are also easily incorporated.
Qualitatively, we show that our method recovers the characteristic rope coiling instability of
viscous liquids and preserves fine surface details, while previous grid-based schemes do not.
Quantitatively, we demonstrate that our method is convergent through grid refinement studies on
analytical problems in two dimensions. We conclude by offering practical guidelines for choosing an
appropriate viscous solver, based on the scenario to be animated and the computational costs of
different methods.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;www.acm.org&#x2F;publications&#x2F;policies&#x2F;artifact-review-badging#functional&quot;&gt;&lt;img class=&quot;acm-badge&quot; style=&quot;float:left&quot; src=&quot;https:&#x2F;&#x2F;www.acm.org&#x2F;binaries&#x2F;content&#x2F;gallery&#x2F;acm&#x2F;publications&#x2F;large-replication-badges&#x2F;artifacts_evaluated_functional.jpg&quot;&#x2F;&gt;&lt;&#x2F;a&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;www.acm.org&#x2F;publications&#x2F;policies&#x2F;artifact-review-badging#replicated&quot;&gt;&lt;img class=&quot;acm-badge&quot; src=&quot;https:&#x2F;&#x2F;www.acm.org&#x2F;binaries&#x2F;content&#x2F;gallery&#x2F;acm&#x2F;publications&#x2F;large-replication-badges&#x2F;results_replicated.jpg&quot;&#x2F;&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: right&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Paper&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;variational-stokes-a-unified-pressure-viscosity-solver-for-accurate-viscous-liquids&#x2F;papers&#x2F;variational_stokes&#x2F;larionov_2017.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Project Page&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;10.1145&#x2F;3072959.3073628&quot;&gt;ACM&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Trailer&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4ongq0IVx1A&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=QJePco0_os8&quot;&gt;YouTube&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Media&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZEjUqZU1hNQ&quot;&gt;Two minute papers&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Code&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;stokes-houdini&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Supplemental Notes&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cs.uwaterloo.ca&#x2F;~c2batty&#x2F;papers&#x2F;Larionov2017&#x2F;supplemental.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;Supplemental Video&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cs.uwaterloo.ca&#x2F;~c2batty&#x2F;papers&#x2F;Larionov2017&#x2F;supp_video.mp4&quot;&gt;MP4&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;@article{lbb17,
    author = {
        Larionov, Egor and
        Batty, Christopher and
        Bridson, Robert
    },
    title = {
        Variational Stokes:
        A Unified Pressure-Viscosity Solver
        for Accurate Viscous Liquids
    },
    year = {2017},
    issue_date = {July 2017},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {36},
    number = {4},
    issn = {0730-0301},
    url = {https:&#x2F;&#x2F;doi.org&#x2F;10.1145&#x2F;3072959.3073628},
    doi = {10.1145&#x2F;3072959.3073628},
    journal = {ACM Trans. Graph.},
    month = jul,
    articleno = {Article 101},
    numpages = {11},
    keywords = {liquids, viscosity, free surfaces, stokes}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>2D Surface Tension Liquids</title>
        <published>2016-07-10T18:48:39+00:00</published>
        <updated>2016-07-10T18:48:39+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/surface-tension-liquids/"/>
        <id>https://elrnv.com/projects/surface-tension-liquids/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/surface-tension-liquids/">&lt;p&gt;Liquid simulation has been an interest of mine for some time now.  Water, maybe the most ubiquitous
liquid familiar to us, exhibits many fascinating visual properties.  This makes water simulation a
very hot topic in the visual effects industry.&lt;&#x2F;p&gt;
&lt;p&gt;In the history of liquid simulation, there hasn&#x27;t been one single efficient, clear cut method for
simulating water in all its capacity.  Each method has its advantages and disadvantages.  In the
visual effects industry, prominent methods for liquid simulation are grid-based (e.g. Houdini,
Blender).  These methods tend to have poor support for stable surface forces, because they typically
lack an explicit surface representation.&lt;&#x2F;p&gt;
&lt;p&gt;To remedy this issue, I developed a method for liquid simulation that couples with existing
grid-based methods and can exhibit stable surface tension effects, under the supervision of
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cs.uwaterloo.ca&#x2F;~c2batty&#x2F;&quot;&gt;Christopher Batty&lt;&#x2F;a&gt;. This project took just over a year to
complete and resulted in my Master&#x27;s thesis titled &lt;a href=&quot;&#x2F;masters_thesis.pdf&quot;&gt;&quot;The Mimetic Approach to Incompressible Surface
Tension Flows&quot;&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;masters_thesis.pdf&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;thesis_thumbnail.png&quot; alt=&quot;The Mimetic Approach to Incompressible Surface Tension Flows&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;It can also be found on the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;uwspace.uwaterloo.ca&#x2F;handle&#x2F;10012&#x2F;10410&quot;&gt;university repository&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The following supplemental video outlines various results I was able to achieve in 2D:&lt;&#x2F;p&gt;
&lt;div class=&#x27;embed-container&#x27;&gt;
&lt;iframe src=&quot;https:&#x2F;&#x2F;player.vimeo.com&#x2F;video&#x2F;174123728&quot; frameborder=&quot;0&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;vimeo.com&#x2F;174123728&quot;&gt;The Mimetic Approach to Incompressible Surface Tension Flows&lt;&#x2F;a&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;vimeo.com&#x2F;user54225153&quot;&gt;Egor Larionov&lt;&#x2F;a&gt; on &lt;a href=&quot;https:&#x2F;&#x2F;vimeo.com&quot;&gt;Vimeo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;A number of jupyter notebooks with Julia code used for numerical studies related to MFD can be
found on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;mfd-notebooks&quot;&gt;github&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;bibtex&quot;&gt;BibTeX&lt;&#x2F;h1&gt;
&lt;pre&gt;&lt;code&gt;@mastersthesis{larionov2016mimetic,
  title={The Mimetic Approach to Incompressible Surface Tension Flows},
  author={Larionov, Egor},
  year={2016},
  school={University of Waterloo}
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on Transient Imaging</title>
        <published>2016-02-22T01:00:08+00:00</published>
        <updated>2016-02-22T01:00:08+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/blog/transient-imaging/"/>
        <id>https://elrnv.com/blog/transient-imaging/</id>
        
        <content type="html" xml:base="https://elrnv.com/blog/transient-imaging/">&lt;p&gt;In fall 2014, I took a seminar course in computer graphics, where we reviewed an emerging technology of capturing the propagation of light pulses. This work was sparked in recent years by the work of Velten, Raskar and Bawendi from MIT in their 2011 paper titled &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;opg.optica.org&#x2F;abstract.cfm?uri=ISA-2011-IMB4&quot;&gt;&lt;strong&gt;&quot;Picosecond camera for time-of-flight imaging&quot;&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;. In response to this work, a team at the University of British Columbia (UBC) developed a much cheaper alternative (with certain limitations) to the hardware setup originally proposed by Velten et al. In their 2013 SIGGRAPH paper titled &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.cs.ubc.ca&#x2F;labs&#x2F;imager&#x2F;tr&#x2F;2013&#x2F;TransientPMD&#x2F;&quot;&gt;&lt;strong&gt;&quot;Low-budget Transient Imaging using Photonic Mixer Devices&quot;&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, Heide et al. developed a way to modify and use a relatively cheap time-of-flight (ToF) camera built by &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.pmdtec.com&#x2F;&quot;&gt;PMD technologies&lt;&#x2F;a&gt; (called &lt;em&gt;CamBoard nano&lt;&#x2F;em&gt;, which is sold out, and possibly replaced by their &lt;em&gt;CamBoard pico&lt;&#x2F;em&gt; model) along with inexpensive lasers to capture light propagation. Although their setup is more limited than the one presented by Velten et al., it has certainly showed that transient imaging research can be more accessible to researchers with a smaller hardware budget.&lt;&#x2F;p&gt;
&lt;p&gt;The team from MIT posted a few videos of their results on YouTube. Here is one of them featuring a pulse of light going through a coke bottle:&lt;&#x2F;p&gt;
&lt;div class=&#x27;embed-container&#x27;&gt;
&lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;-fSqFWcb4rE&quot; frameborder=&quot;0&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;&#x2F;div&gt;&lt;br&gt;
&lt;p&gt;The team from UBC also posted a video of their results on Vimeo:&lt;&#x2F;p&gt;
&lt;div class=&#x27;embed-container&#x27;&gt;
&lt;iframe src=&quot;https:&#x2F;&#x2F;player.vimeo.com&#x2F;video&#x2F;64112013&quot; frameborder=&quot;0&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;vimeo.com&#x2F;64112013&quot;&gt;Low-budget Transient Imaging using Photonic Mixer Devices&lt;&#x2F;a&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;vimeo.com&#x2F;user16976856&quot;&gt;Felix Heide&lt;&#x2F;a&gt; on &lt;a href=&quot;https:&#x2F;&#x2F;vimeo.com&quot;&gt;Vimeo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;In 2014, paper by Lin et al., titled &lt;strong&gt;&quot;Fourier analysis on transient imaging by multifrequency time-of-flight camera&quot;&lt;&#x2F;strong&gt;, appeared in the Computer Vision and Pattern Recognition (CVPR) conference proceedings improving on the method proposed by Heide et al. for retrieving a transient image from the data captured by their time-of-flight camera. I found their discovery very elegant and decided to study it to see if I can find any further improvements. Over the course of the seminar, I compiled a set of notes giving a detailed description of the mathematical tools proposed by Lin et al. while analyzing possible areas of improvement (although I couldn&#x27;t make any new contributions of my own). So since nothing came of my dabbling in this field, I decided to release these notes that may perhaps be of use to someone freshly pursuing this area of research. I recommend reading the original paper by Lin et al. and perhaps even Heide et al., before diving into these notes.&lt;&#x2F;p&gt;
&lt;p&gt;Notes on Fourier analysis on ToF transient imaging:
&lt;a href=&quot;&#x2F;fourier_tof.pdf&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;fourier_tof_thumbnail.png&quot; alt=&quot;Notes on Fourier analysis on ToF transient imaging&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Weighted Lloyd&#x27;s Method for Voronoi Tesselation</title>
        <published>2015-08-12T20:09:19+00:00</published>
        <updated>2015-08-12T20:09:19+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/blog/weighted-lloyds-method-for-voronoi-tesselation/"/>
        <id>https://elrnv.com/blog/weighted-lloyds-method-for-voronoi-tesselation/</id>
        
        <content type="html" xml:base="https://elrnv.com/blog/weighted-lloyds-method-for-voronoi-tesselation/">&lt;p&gt;This summer, I developed an algorithm to tesselate an image with Voronoi regions. I used a weighed Lloyd&#x27;s method to distribute the Voronoi regions evenly throughout the image. You can now see the method on a dedicated &lt;a href=&quot;&#x2F;voronoi-js&#x2F;index.html&quot;&gt;static page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The implementation is done entirely in JavaScript using the &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;threejs.org&#x2F;&quot;&gt;three.js&lt;&#x2F;a&gt; library as well as &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;code.google.com&#x2F;p&#x2F;dat-gui&#x2F;&quot;&gt;dat.gui&lt;&#x2F;a&gt; for exposing different parameters controlling the generated image.&lt;&#x2F;p&gt;
&lt;p&gt;After seeing a series of lectures given by &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.cgl.uwaterloo.ca&#x2F;~csk&#x2F;&quot;&gt;Craig Kaplan&lt;&#x2F;a&gt; on computational &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Stippling&quot;&gt;stippling&lt;&#x2F;a&gt; methods, in particular on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cs.ubc.ca&#x2F;labs&#x2F;imager&#x2F;tr&#x2F;2002&#x2F;secord2002b&#x2F;secord.2002b.pdf&quot;&gt;Weighed Voronoi Stippling&lt;&#x2F;a&gt;, I gained an interest in applications for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Voronoi_diagram&quot;&gt;Voronoi diagrams&lt;&#x2F;a&gt;. This gave me an idea to create an algorithm to crystallize an image using a collection of flat coloured Voronoi regions. Furthermore, I wanted the Voronoi regions to be evenly spaced, and I wanted more regions in detailed areas of the image. To get this effect I used a weighted Lloyd&#x27;s method, where the weights are taken from the gradient of the image being tessellated.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;lloyd-s-algorithm&quot;&gt;Lloyd&#x27;s algorithm&lt;&#x2F;h2&gt;
&lt;p&gt;The basic Lloyd&#x27;s method is simple. I will present the concept in the familiar 2D domain. First we define the Voronoi tesselation. Take a random set of \(n\) points, \( \mathcal{P} = \{\vec{x}_i\}_{i=1}^n \), where \( \vec{x}_i \in \mathbb{R}^2 \). Then the Voronoi tessellation generated by \( \mathcal{P} \) is the set of Voronoi &lt;em&gt;regions&lt;&#x2F;em&gt; \( \mathcal{V} = \{ V_i \} \) defined for each point \(i\) by
$$ V_i = \left\{ \vec{x} \in \mathbb{R}^2 \mathrel{}:\mathrel{} \|\vec{x} - \vec{x}_i\| &amp;lt; \|\vec{x} - \vec{x}_j\|,\ \, \forall j\not=i \right\}. $$
The points in \( \mathcal{P} \) are called Voronoi &lt;em&gt;sites&lt;&#x2F;em&gt;. Furthermore, each Voronoi region has a centroid
$$ C_i = \frac{1}{A_i} \iint_{V_i} \vec{x}_i\, d\vec{x} $$
where \( A_i = \iint_{V_i} d\vec{x} \) is the &lt;em&gt;area&lt;&#x2F;em&gt; of the Voronoi region.&lt;&#x2F;p&gt;
&lt;p&gt;Lloyd&#x27;s algorithm consists of recomputing the Voronoi tessellation using the newly computed centroids as Voronoi sites. Repeating this process will spread the points evenly throughout the domain.&lt;&#x2F;p&gt;
&lt;p&gt;Since we are working in a pixelated domain, it is trivial to discretize the above integrals to compute region areas and centroids. Suppose \( p_k \) is the centre of pixel \( k \), and let \( N_i = \left|\{p_k \in V_i\}\right| \) approximate the number of the pixels covered by Voronoi region \( i \). Then the centroid of region \( i \) can be computed using the midpoint rule as \( c_i = \frac{1}{a_i}\sum_{p_k \in V_i} p_k \Delta x^2 \), where \( \Delta x^2 \) is the area of a pixel and \( a_i = N_i\Delta x^2 \) is the total area estimate. This simplifies to
$$ c_i = \frac{1}{N_i}\sum_{p_k \in V_i} p_k. $$&lt;&#x2F;p&gt;
&lt;h3 id=&quot;implementation&quot;&gt;Implementation&lt;&#x2F;h3&gt;
&lt;p&gt;It remains to describe how we can determine if a pixel is in a Voronoi region computationally.&lt;&#x2F;p&gt;
&lt;p&gt;A standard method to visualize a Voronoi diagram is by rendering partially overlapping 3D cones aligned in a plane and all facing in one direction:&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;cones.png&quot; alt=&quot;Voronoi Cones&quot;&gt;
&lt;p&gt;It should be clear from the image above that removing lighting effects and using an orthogonal projection (as opposed to a perspective projection) will effectively render a Voronoi diagram.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, in order to compute the areas and centroids, we need to distinguish between different regions. This can be done by assigning a unique colour to each cone, which lets us to represent over 16 million regions if we use the standard web colours. Meaning that we can use a 24 bit number to be our identifier and interpret it as an RGB triplet when rendering the regions to a render target. We can then read the pixels from this target and determine which region they belong to. More specifically, given values \(r,g,b \in \{0..255\}\) read back from the render target, we can compute the identifier as
$$ i = b + 256g + 256^2r. $$
The render target used for computation should look similar to this:&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;blue_voronoi.png&quot; alt=&quot;Computational Voronoi Regions&quot;&gt;
&lt;p&gt;If you want to actually tesselate an image into Voronoi regions, then you can simply compute the average colour on each region as you iterate through the pixels of render target and the target image simultaneously. The average region colour is given by
$$ r_i = \frac{1}{N_i}\sum_{p_k \in V_i} r_k $$
where \( r_k \) is the colour of \(k\)th pixel. This is done separately for all three colours (red, green and blue).&lt;&#x2F;p&gt;
&lt;p&gt;As an example we will use an image of Tux, the Linux mascot:&lt;&#x2F;p&gt;
&lt;center&gt;&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;tux.png&quot; alt=&quot;Tux&quot;&gt;&lt;&#x2F;center&gt;
&lt;p&gt;Using just Lloyd&#x27;s method we can already get a nice crystallization effect:&lt;&#x2F;p&gt;
&lt;center&gt;&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;unweighted_tux.png&quot; alt=&quot;Crystallized Tux&quot;&gt;&lt;&#x2F;center&gt;
&lt;h2 id=&quot;weighted-lloyd-s-method&quot;&gt;Weighted Lloyd&#x27;s Method&lt;&#x2F;h2&gt;
&lt;p&gt;An interesting extension of Lloyd&#x27;s method is moving the pixels into regions with a larger prescribed &quot;density&quot;. In a sense we want to add a &quot;bias&quot; or &quot;weight&quot; to some areas of an image where we want more points to cluster. This is exactly the approach taken in &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cs.ubc.ca&#x2F;labs&#x2F;imager&#x2F;tr&#x2F;2002&#x2F;secord2002b&#x2F;secord.2002b.pdf&quot;&gt;Weighed Voronoi Stippling&lt;&#x2F;a&gt;, except we will use a different weight. The motivation is that in areas of an image with more detail can benefit from a higher resolution or clustering of Voronoi regions. This can help direct the viewer&#x27;s attention to more interesting areas of an image.&lt;&#x2F;p&gt;
&lt;p&gt;We start by assuming that we have a weight function \( w_k \in \mathbb{R}^+ \) that assigns each pixel \( k \), a positive real number. Then for each Voronoi region \( i \), we can compute a weighted centroid:
$$ \tilde{c}_i = \frac{1}{W_i} \sum_{p_k\in V_i} w_kp_k $$
where \( W_i = \sum_{p_k\in V_i} w_k \) is the sum of all the weights. We can now use the weighted centroids \( \tilde{c}_i \) as the new Voronoi sites in the subsequent step in the algorithm to achieve the desired clustering.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gradient-weight-function&quot;&gt;Gradient Weight Function&lt;&#x2F;h3&gt;
&lt;p&gt;The choice of the weight function determines the quality of region clustering. One possible way to cluster Voronoi regions near a highly detailed area is to weigh the centroids with the gradient of the image. In fact we only want the magnitude of the gradient. We can compute gradient in \( x \) and \( y \) directions at pixel boundaries by taking the difference of two pixel values. That is if \( I \) is our image function, then
$$ \nabla I = \left(\frac{\partial I}{\partial x}, \frac{\partial I}{\partial y}\right)^T $$
is the gradient, where \( \frac{\partial I}{\partial x}\) can be descretized as \(\frac{I_{i,j} - I_{i+1,j}}{\Delta x} \) between pixels \((i,j)\) and \((i+1,j)\). Similarily we can compute the partial derivative in the \( y \) direction. We will then interpolate the gradient values to the pixel centers. A reader familiar with numerical differentiation will recognize this as the central difference approximation to each partial derivative. Finally, by taking the 1-norm of the result we get an approximation to the magnitude of the continous gradient:&lt;&#x2F;p&gt;
&lt;p&gt;$$ |\nabla I|_1 \approx
\left|\frac{I_{i+1,j} - I_{i-1,j}}{2\Delta x} \right| +
\left|\frac{I_{i,j+1} - I_{i,j-1}}{2\Delta x} \right| $$&lt;&#x2F;p&gt;
&lt;h3 id=&quot;results&quot;&gt;Results&lt;&#x2F;h3&gt;
&lt;p&gt;If the image has a sparse and sharp gradient (as it occurs in coarse drawings for instance), then the Voronoi regions will align with the boundaries in the image. With the gradient weighted Lloyd&#x27;s method used on Tux, we get the following image:&lt;&#x2F;p&gt;
&lt;center&gt;&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;gradient_tux.png&quot; alt=&quot;Crystallized Tux with gradient weighted Lloyd&#x27;s method&quot;&gt;&lt;&#x2F;center&gt;
&lt;p&gt;I chose this example specifically to emphasize the effect of the gradient weight. This is a
drastically different image than the one using the vanilla Lloyd&#x27;s method, but we need not stop
here. We can add another step and blur the gradient of the original image to produce a smoother
weight function. We can use any kind of blurring algorithm since we don&#x27;t actually see the blurred
gradient. I use the standard Gaussian blur to smooth the gradient (an efficient
implementation can be found &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;blog.ivank.net&#x2F;fastest-gaussian-blur.html&quot;&gt;here&lt;&#x2F;a&gt;). With a blur
radius of 5 pixels we can achieve the following result:&lt;&#x2F;p&gt;
&lt;center&gt;&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;weight_blur_tux.png&quot; alt=&quot;Crystallized Tux with smoothed gradient weighted Lloyd&#x27;s method&quot;&gt;&lt;&#x2F;center&gt;
&lt;p&gt;Here we can see more clustering of Voronoi regions around the boundaries in the image, as compared to the crystallization using the unweighted Lloyd&#x27;s method.&lt;&#x2F;p&gt;
&lt;p&gt;Applied to photographs, we can get nice stylized crystallizations, although the weights don&#x27;t change the result much, since photographs are typically detailed everywhere:&lt;&#x2F;p&gt;
&lt;div style=&quot;display:inline-block;vertical-align:top;&quot;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;shannon_falls_bc.png&quot; alt=&quot;Shannon Falls British Columbia&quot;&gt;
&lt;p style=&quot;text-align:center;&quot;&gt;Original&lt;&#x2F;p&gt;&lt;&#x2F;div&gt;
&lt;div style=&quot;display:inline-block;&quot;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;weighted-voronoi&#x2F;shannon_falls_bc_crystal.png&quot; alt=&quot;Shannon Falls Crystallized&quot;&gt;
&lt;p style=&quot;text-align:center;&quot;&gt;Crystallized&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;m rather surprised that this experiment turned out as well as it did. I found it particularly interesting how the Voronoi regions align to form the final configuration in a fluid-like manner. I would be interested to see how this animation will look when applied to a video sequence.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>SPH for Weakly Compressible Fluids</title>
        <published>2015-02-09T05:53:02+00:00</published>
        <updated>2015-02-09T05:53:02+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/sph-for-weakly-compressible-fluids/"/>
        <id>https://elrnv.com/projects/sph-for-weakly-compressible-fluids/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/sph-for-weakly-compressible-fluids/">&lt;p&gt;In winter 2014, I took a course on physically-based simulation, and had the opportunity to work on a fluid simulator project. I finally found some time to organize my work and upload it to &lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;elrnv&#x2F;sph-cpp&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;. The project outlines two notable methods in fluid simulation using &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Smoothed-particle_hydrodynamics&quot;&gt;Smoothed Particle Hydrodynamics&lt;&#x2F;a&gt; (SPH):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;matthias-research.github.io&#x2F;pages&#x2F;publications&#x2F;sca03.pdf&quot;&gt;&quot;Particle-Based Fluid Simulation for Interactive Applications&quot; by M. Muller, D. Charypar and M. Gross&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cg.informatik.uni-freiburg.de&#x2F;publications&#x2F;2007_SCA_SPH.pdf&quot;&gt;&quot;Weakly Compressible SPH for Free Surface Flows&quot; by M. Becker, M. Teschner&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;A partial implementation of the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cg.informatik.uni-freiburg.de&#x2F;publications&#x2F;2013_TVCG_IISPH.pdf&quot;&gt;Implicit Incompressible SPH&lt;&#x2F;a&gt; method developed by M. Ihmsen et al. can also be found in the codebase. I&#x27;m not planning to finish it, but I &lt;em&gt;can&lt;&#x2F;em&gt; be convinced otherwise.&lt;&#x2F;p&gt;
&lt;p&gt;The initial idea of the project was to create a functioning SPH solver. However, after learning about the large variety of different approaches to SPH, I decided to write a more generic application which can simulate different types of SPH fluids simultaneously. For instance the current implementation allows two different SPH fluids (from the two bullets above) to interact.&lt;&#x2F;p&gt;
&lt;p&gt;I also wrote a SIGGRAPH style &lt;strong&gt;&lt;a href=&quot;&#x2F;cs888&#x2F;cs888proj.pdf&quot;&gt;report&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; explaining what I&#x27;ve learned about SPH:
&lt;a href=&quot;&#x2F;cs888&#x2F;cs888proj.pdf&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;cs888proj_thumbnail.png&quot; alt=&quot;SIGGRAPH style report&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Lastly, I uploaded a small &lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;zRr84SF6FZw&quot;&gt;video&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; demonstrating the application on youtube:&lt;&#x2F;p&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;zRr84SF6FZw&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
&lt;p&gt;I&#x27;m always happy to get feedback and&#x2F;or answer questions, so feel free to add a comment or fire me an email. Fluid simulation is a fascinating topic, and my main research interest, at the moment.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Implicit Surface Method for Shape Reconstruction</title>
        <published>2014-02-06T08:47:00+00:00</published>
        <updated>2014-02-06T08:47:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/implicit-surface-method-for-shape-reconstruction/"/>
        <id>https://elrnv.com/projects/implicit-surface-method-for-shape-reconstruction/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/implicit-surface-method-for-shape-reconstruction/">&lt;p&gt;A few months ago I wrote an implementation of an implicit surface method for shape reconstruction
developed, in part, by H. Zhao, S. Osher, B. Merriman, and M. Kang, in their paper (2000) titled
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;pii&#x2F;S1077314200908750&quot;&gt;&quot;Implicit and Non-parametric Shape Reconstruction from Unorganized
Data&quot;&lt;&#x2F;a&gt;.
This paper describes a level-set method for reconstructing a surface given a collection of points,
curves and surface patches. My implementation deals with points alone and it is written entirely for
MATLAB. You can download the &lt;strong&gt;&lt;a href=&quot;&#x2F;cs870&#x2F;cs870proj.tar.gz&quot;&gt;code and examples of generated images
here&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;. This download package also includes a brief
11 page writeup, explaining the details of the method and implementation. Alternatively you can look
at the &lt;strong&gt;&lt;a href=&quot;&#x2F;cs870&#x2F;cs870proj.pdf&quot;&gt;writeup&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; directly. Note that the algorithm at
the end, used to compute the minimum local feature size is incorrect.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Experiment with 2D Particle Simulation and Artificial Neural Networks</title>
        <published>2013-12-09T00:00:00+00:00</published>
        <updated>2013-12-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/cs686-ai-project/"/>
        <id>https://elrnv.com/projects/cs686-ai-project/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/cs686-ai-project/">&lt;p&gt;In an effort to learn more about artificial neural networks, I implemented a simple method to
learn the collision response between a pair of circular particles with a constant radius.
Although not practically useful, this exercise was enlightening. The details can be found in the
writeup:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;cs686&#x2F;cs686proj.pdf&quot;&gt;&lt;img src=&quot;&#x2F;cs686&#x2F;cs686proj_paper_thumb.png&quot; alt=&quot;2D Particle Simulation with Feed-Forward Neural Networks&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Slides for Papers on Motion Tracking and Surface Reconstruction</title>
        <published>2013-11-25T22:58:00+00:00</published>
        <updated>2013-11-25T22:58:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/blog/slides-for-cs870-talks/"/>
        <id>https://elrnv.com/blog/slides-for-cs870-talks/</id>
        
        <content type="html" xml:base="https://elrnv.com/blog/slides-for-cs870-talks/">&lt;p&gt;CS 870 is a course at the University of Waterloo that briefly covers numerical PDE solutions, especially to the level set PDE developed by Stanley Osher and James A. Sethian in a paper called &quot;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;math.berkeley.edu&#x2F;~sethian&#x2F;Papers&#x2F;sethian.osher.88.pdf&quot;&gt;Fronts propagating with curvature-dependent speed&lt;&#x2F;a&gt;&quot; from 1988. I presented two papers for this class (with links to slides):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;&#x2F;cs870&#x2F;srslides.pdf&quot;&gt;Implicit Shape Reconstruction Using a Level Set Method&lt;&#x2F;a&gt; (2000)
This paper presents a level-set based method to tightly wrap a 3D surface around a set of data points.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;&#x2F;cs870&#x2F;trslides.pdf&quot;&gt;Level Set Approach for Motion Detection and Tracking&lt;&#x2F;a&gt; (1998)
Here, the authors extend the geodesic active contour model, which segments images, to detect and track moving objects in motion sequences.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Note that the background for the level set method itself is omitted.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on Numerical Analysis</title>
        <published>2013-09-16T22:05:00+00:00</published>
        <updated>2013-09-16T22:05:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/blog/numerical-analysis-course-notes/"/>
        <id>https://elrnv.com/blog/numerical-analysis-course-notes/</id>
        
        <content type="html" xml:base="https://elrnv.com/blog/numerical-analysis-course-notes/">&lt;p&gt;I decided to typeset the course notes for the Numerical Analysis course (AM740&#x2F;CM770&#x2F;CS770) at the University of Waterloo for fall 2013 taught by Hans De Sterck. Use them at your own risk, since they may contain errors:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;cs770&#x2F;cs770notes.pdf&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;cs770notes_thumbnail.png&quot; alt=&quot;Notes on Fourier analysis on ToF transient imaging&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Undergraduate Research Seminar Talk on Information Theory</title>
        <published>2013-03-03T10:22:00+00:00</published>
        <updated>2013-03-03T10:22:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/blog/ura-talk-on-information-theory/"/>
        <id>https://elrnv.com/blog/ura-talk-on-information-theory/</id>
        
        <content type="html" xml:base="https://elrnv.com/blog/ura-talk-on-information-theory/">&lt;p&gt;At the end of my undergraduate research semester in the summer of 2012 with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;uwaterloo.ca&#x2F;institute-for-quantum-computing&#x2F;&quot;&gt;IQC&lt;&#x2F;a&gt;, I compiled a talk on classical and quantum information. I tried to start with an introduction to classical information and transition into quantum information on a very basic level. This talk should be appropriate for all audiences with a basic background in linear algebra. These notes on Classical and Quantum Information are somewhat incomplete, and will remain so, unless I give this talk again some day:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;quantum&#x2F;seminartalk.pdf&quot;&gt;&lt;img src=&quot;&#x2F;quantum&#x2F;seminartalk_thumb.png&quot; alt=&quot;Seminar talk on Information Theory&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ray Tracer Project</title>
        <published>2012-12-07T04:33:00+00:00</published>
        <updated>2012-12-07T04:33:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/projects/cs488-final-project/"/>
        <id>https://elrnv.com/projects/cs488-final-project/</id>
        
        <content type="html" xml:base="https://elrnv.com/projects/cs488-final-project/">&lt;p&gt;I implemented a ray tracer with rigid body dynamics for my final CS488 project. Unfortunately I didn&#x27;t have time to complete collision detection for all primitives, and could only demonstrate colliding spheres.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ray-tracer-with-rigid-body-dynamics&quot;&gt;Ray Tracer with Rigid Body Dynamics&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#1&quot;&gt;Dynamic Objects&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#2&quot;&gt;Rigid Body Collisions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#3&quot;&gt;Texture Mapping&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#4&quot;&gt;Bump Mapping&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#5&quot;&gt;Multi-threaded Rendering&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#6&quot;&gt;Intensity Threshold Optimization&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#7&quot;&gt;Antialiasing&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#8&quot;&gt;Additional Primitives&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#9&quot;&gt;Constructive Solid Geometry&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#10&quot;&gt;Rube Goldberg machine&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;objective-1-2-dynamic-objects&quot;&gt;&lt;a name=&quot;1&quot;&gt;&lt;&#x2F;a&gt;&lt;a name=&quot;2&quot;&gt;&lt;&#x2F;a&gt; Objective 1 &amp;amp; 2: Dynamic Objects&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;cs488&#x2F;vid&#x2F;dynamics_demo.mpg&quot;&gt;Example of two spheres colliding&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;objective-3-texture-mapping&quot;&gt;&lt;a name=&quot;3&quot;&gt;&lt;&#x2F;a&gt; Objective 3: Texture Mapping&lt;&#x2F;h3&gt;
&lt;p&gt;The images show texture mapping for all primitives, a simple mesh (background) and a CSG object.&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;texture_demo_no_alias.png&quot;&gt;
No antialiasing, but with bilinear interpolation.
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;texture_demo_no_alias_bilin.png&quot;&gt;
No antialiasing or bilinear interpolation.
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;texture_demo.png&quot;&gt;
All features enabled.
&lt;h3 id=&quot;objective-4-bump-mapping&quot;&gt;&lt;a name=&quot;4&quot;&gt;&lt;&#x2F;a&gt; Objective 4: Bump Mapping&lt;&#x2F;h3&gt;
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;bump_demo.png&quot;&gt;
Bump mapping for all primitives, a simple mesh (background) and a CSG object.
&lt;h3 id=&quot;objective-5-multi-threaded-rendering&quot;&gt;&lt;a name=&quot;5&quot;&gt;&lt;&#x2F;a&gt; Objective 5: Multi-threaded Rendering&lt;&#x2F;h3&gt;
&lt;p&gt;The final scene (see &lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#10&quot;&gt;Objective 10&lt;&#x2F;a&gt;), which has one frame, is rendered with a varying number of threads. All features of the ray tracer were enabled. The following renders were performed with the unix &quot;time&quot; command, on the following machine:
&lt;code&gt;gl25.student.cs Asus based AMD quad core, 4gb ram, 2x500g hd, Asus ENGTX260GL&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;# of Threads&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;real&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;user&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;sys&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;n = 1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;274.23s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;273.321s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.704s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;n = 5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;108.91s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;269.028s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.669s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;n = 10&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;93.64s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;268.232s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.776s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;n = 20&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;81.41s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;270.123s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.732s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;n = 50&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;98.66s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;301.526s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;61.047s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Thus running the ray tracer with 20 threads speeds up the run time by 3.37 times, or by 3 minutes and 12 seconds, which is a significant improvement.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;objective-6-intensity-threshold-optimization&quot;&gt;&lt;a name=&quot;6&quot;&gt;&lt;&#x2F;a&gt;Objective 6: Intensity Threshold Optimization&lt;&#x2F;h3&gt;
&lt;p&gt;I used my final scene to demonstrate the gain of the intensity threshold optimization, which actually showed a significant increase in performance.&lt;&#x2F;p&gt;
&lt;p&gt;Antialiasing was disabled, the reflection depth was set at 5, and 4 threads was used. The threshold used was large value of 0.000001. The following renders were performed with the unix &quot;time&quot; command, on the following machine&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;gl25.student.cs Asus based AMD quad core, 4gb ram, 2x500g hd, Asus ENGTX260GL&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Threshold&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;No Threshold&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;real&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;16.90s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;40.13s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;user&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;39.094s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;131.640s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;sys&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.568s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.608s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Thus we have found a significant increase in performance (~ 2.5 times) by using the intensity threshold check.  Note that without the check, 1752362 more shader computations were made.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;objective-7-anti-aliasing&quot;&gt;&lt;a name=&quot;7&quot;&gt;&lt;&#x2F;a&gt;Objective 7: Anti-aliasing&lt;&#x2F;h3&gt;
&lt;p&gt;The given scene (slightly modified) from CS488 Assignment 4 with polyhedral cows is used to demonstrate antialiasing&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;macho_no_alias.png&quot;&gt;
The original scene with anti-aliasing disabled
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;macho_hi.png&quot;&gt;
The red shows where the anti-aliasing algorithm was used to smooth edges.
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;macho_alias.png&quot;&gt;
Anti-aliasing enabled.
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;macho_rand.png&quot;&gt;
A randomized version of the same algorithm
&lt;h3 id=&quot;objective-8-additional-primitives&quot;&gt;&lt;a name=&quot;8&quot;&gt;&lt;&#x2F;a&gt;Objective 8: Additional Primitives&lt;&#x2F;h3&gt;
&lt;p&gt;See Objectives &lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#3&quot;&gt;3&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;elrnv.com&#x2F;projects&#x2F;cs488-final-project&#x2F;#4&quot;&gt;4&lt;&#x2F;a&gt; for examples of implemented primitives.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;objective-9-constructive-solid-geometry&quot;&gt;&lt;a name=&quot;9&quot;&gt;&lt;&#x2F;a&gt;Objective 9: Constructive Solid Geometry&lt;&#x2F;h3&gt;
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;csg_demo.png&quot;&gt;
A sequence of two spheres with union, intersection, and difference. In addition a more complex CSG model is also provided: The cup is two cylinders subtracted, and intersected with two spheres to provide rounded edges. The half torus was generated by instancing multiple cylinders and taking their union.
&lt;h3 id=&quot;objective-10-rube-goldberg-machine&quot;&gt;&lt;a name=&quot;10&quot;&gt;&lt;&#x2F;a&gt;Objective 10: Rube Goldberg machine&lt;&#x2F;h3&gt;
&lt;img src=&quot;&#x2F;cs488&#x2F;img&#x2F;rube.png&quot;&gt;
A sample image of the proposed Rube Goldberg machine.
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on Continuity of Quantum Channel Capacities</title>
        <published>2012-09-15T01:40:00+00:00</published>
        <updated>2012-09-15T01:40:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://elrnv.com/blog/notes-on-continuity-of-channel-capacities/"/>
        <id>https://elrnv.com/blog/notes-on-continuity-of-channel-capacities/</id>
        
        <content type="html" xml:base="https://elrnv.com/blog/notes-on-continuity-of-channel-capacities/">&lt;p&gt;I spent the summer of 2012 as an undergraduate research assistant working under Debbie Leung at the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;uwaterloo.ca&#x2F;institute-for-quantum-computing&#x2F;&quot;&gt;Institute for Quantum Computing&lt;&#x2F;a&gt;. Since then I have decided to pursue a career in computer graphics, although quantum information remains one of my amateur interests. I have compiled the notes I took during this research semester into one document:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;quantum&#x2F;researchnotes.pdf&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;researchnotes_thumbnail.png&quot; alt=&quot;Research notes on continuity of channel capacities&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;There is little organization within these notes, however they summarize some of the necessary background to start the study of quantum information, and include a few proofs of theorems from various Quantum Information books, as well as a few new ideas aimed at proving the continuity of a particular quantum capacity. These notes aren&#x27;t complete in any sense, because unfortunately I didn&#x27;t get a chance to typeset all of my work.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
