<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2472128688820563081</id><updated>2024-08-30T08:37:12.122-07:00</updated><category term="GPGPU"/><category term="MeshLab"/><category term="MeshLab SDF"/><category term="3d"/><category term="3d graphics programming"/><category term="3d programming"/><category term="Android"/><category term="Android game"/><category term="Android programming"/><category term="CUDA"/><category term="GPU"/><category term="MeshLab plugin"/><category term="Ogre"/><category term="Ogre deferred shading"/><category term="Shape diameter function"/><category term="Shape diameter function meshlab"/><category term="VCG lib"/><category term="ambient occlusion"/><category term="auto rigger"/><category term="auto skeletonisation"/><category term="character rigging"/><category term="depth peeling"/><category term="directx"/><category term="directx programming"/><category term="game engine architecture"/><category term="game logic"/><category term="game programming"/><category term="game view"/><category term="global illumination"/><category term="glsl"/><category term="hlsl"/><category term="model view controller"/><category term="obscurance"/><category term="openCL"/><category term="opengl"/><category term="opengl programming"/><category term="programming"/><category term="real-time global illumination"/><category term="reflective shadow maps"/><category term="rsm"/><category term="skeletonisation"/><category term="volumetric obscurance"/><title type='text'>Andrea Baldacci - 3D Graphics Programmer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-5780924366048600201</id><published>2016-10-13T01:57:00.004-07:00</published><updated>2016-10-13T01:59:49.431-07:00</updated><title type='text'>New website!</title><content type='html'>This blog is discontinued. Please refer to the page&amp;nbsp;&lt;a href=&quot;http://andreabaldacci.it/&quot;&gt;andreabaldacci.it.&lt;/a&gt; </content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/5780924366048600201/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2016/10/new-website.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/5780924366048600201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/5780924366048600201'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2016/10/new-website.html' title='New website!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-5459380397333230050</id><published>2013-07-17T02:39:00.000-07:00</published><updated>2013-07-21T11:08:17.149-07:00</updated><title type='text'>Global illumination with Ogre: Source code released</title><content type='html'>&lt;span style=&quot;background-color: white;&quot;&gt;Here it is the code of global illumination demo for Ogre. This demo relies on&amp;nbsp;Ogre 1.7.1 and its deffered shading system. As I stated in the previous posts, it is a very basic technique ( Based on &quot;Reflective Shadow Maps&quot; by Carsten Dachsbacher and Marc Stamminger ) for a faster and more advanced implementation ( or to adapt it to your needs ) you can contact me ( baldacci85&#39;at&#39;hotmail&#39;dot&#39;it).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;a href=&quot;http://db.tt/pX6fpSwu&quot;&gt;http://db.tt/pX6fpSwu&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eef7ed; color: #333333; font-family: &#39;Lucida Grande&#39;, &#39;Trebuchet MS&#39;, Verdana, Helvetica, Arial, sans-serif; font-size: 12.800000190734863px; line-height: 18.200000762939453px;&quot;&gt;(Please note that, for now, the binary is compiled in debug mode, and that in the demo are included and activated the motion blur and dof ).&lt;/span&gt;&lt;br /&gt;
&lt;br style=&quot;background-color: #eef7ed; color: #333333; font-family: &#39;Lucida Grande&#39;, &#39;Trebuchet MS&#39;, Verdana, Helvetica, Arial, sans-serif; font-size: 12.800000190734863px; line-height: 18.200000762939453px; margin: 0px; padding: 0px;&quot; /&gt;
&lt;span style=&quot;background-color: #eef7ed; color: #333333; font-family: &#39;Lucida Grande&#39;, &#39;Trebuchet MS&#39;, Verdana, Helvetica, Arial, sans-serif; font-size: 12.800000190734863px; line-height: 18.200000762939453px;&quot;&gt;The overlay pannel was included in a previous version, maybe I can include it again. In the provided demo, there is a single spot light and 256 virtual points lights that simulates the indirect illumination.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eef7ed; color: #333333; font-family: &#39;Lucida Grande&#39;, &#39;Trebuchet MS&#39;, Verdana, Helvetica, Arial, sans-serif; font-size: 12.800000190734863px; line-height: 18.200000762939453px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4aTrxBIf6xw1NSulQlJgriPRiA3zpSf_QRgwbkuP5hJIy2uoPIhACs4YcnpcdqYEa6MEFeespc6fgqs0YRbLiaocbMDCaFNiF-NzyH5DpA9fYJ1B6LxQNqVt7R9niOoq4YxvIAQY6OAb/s1600/133217_178558178830612_8054888_o.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4aTrxBIf6xw1NSulQlJgriPRiA3zpSf_QRgwbkuP5hJIy2uoPIhACs4YcnpcdqYEa6MEFeespc6fgqs0YRbLiaocbMDCaFNiF-NzyH5DpA9fYJ1B6LxQNqVt7R9niOoq4YxvIAQY6OAb/s320/133217_178558178830612_8054888_o.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggljaXFs0pc-MLiwn9yMiRkH-NpYgcXa6HKfCsleTu2aFXdeEqbZGdVP1GhOpTYPA1ekkjiPxCCxbVHT5VYGfYt6MmW_HY55S7Vpx9FbCfgl6bOa7kLwLRvyy9GnyZMIAcgmlE7KqloKHX/s1600/screenshot07212013_194521364.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggljaXFs0pc-MLiwn9yMiRkH-NpYgcXa6HKfCsleTu2aFXdeEqbZGdVP1GhOpTYPA1ekkjiPxCCxbVHT5VYGfYt6MmW_HY55S7Vpx9FbCfgl6bOa7kLwLRvyy9GnyZMIAcgmlE7KqloKHX/s320/screenshot07212013_194521364.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: #eef7ed; color: #333333; font-family: &#39;Lucida Grande&#39;, &#39;Trebuchet MS&#39;, Verdana, Helvetica, Arial, sans-serif; font-size: 12.800000190734863px; line-height: 18.200000762939453px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/5459380397333230050/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2013/07/global-illumination-with-ogre-source.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/5459380397333230050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/5459380397333230050'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2013/07/global-illumination-with-ogre-source.html' title='Global illumination with Ogre: Source code released'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4aTrxBIf6xw1NSulQlJgriPRiA3zpSf_QRgwbkuP5hJIy2uoPIhACs4YcnpcdqYEa6MEFeespc6fgqs0YRbLiaocbMDCaFNiF-NzyH5DpA9fYJ1B6LxQNqVt7R9niOoq4YxvIAQY6OAb/s72-c/133217_178558178830612_8054888_o.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-4627979976804636115</id><published>2012-01-17T05:30:00.000-08:00</published><updated>2012-01-17T05:30:39.581-08:00</updated><title type='text'>Global illumination with Ogre: Color bleeding</title><content type='html'>As requested, here it is a screenshot of color bleeding in the reflective shadow maps demo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBwGvZewB56TlKQ-sqx1hDcWVyXjL8zJ71k49o78ZFsUFmPAD_rdImLVbIAmyL8DM8Um0IHfqI3nuxG_KdLf98v2hCEvP5cNjRfQlj0EJ5BGuNotQKDSamJlZhdnm1GQpCV8R-oYsX1jzF/s1600/colorbleeding.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBwGvZewB56TlKQ-sqx1hDcWVyXjL8zJ71k49o78ZFsUFmPAD_rdImLVbIAmyL8DM8Um0IHfqI3nuxG_KdLf98v2hCEvP5cNjRfQlj0EJ5BGuNotQKDSamJlZhdnm1GQpCV8R-oYsX1jzF/s320/colorbleeding.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/4627979976804636115/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2012/01/global-illumination-with-ogre-color.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/4627979976804636115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/4627979976804636115'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2012/01/global-illumination-with-ogre-color.html' title='Global illumination with Ogre: Color bleeding'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBwGvZewB56TlKQ-sqx1hDcWVyXjL8zJ71k49o78ZFsUFmPAD_rdImLVbIAmyL8DM8Um0IHfqI3nuxG_KdLf98v2hCEvP5cNjRfQlj0EJ5BGuNotQKDSamJlZhdnm1GQpCV8R-oYsX1jzF/s72-c/colorbleeding.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-257547009539300739</id><published>2012-01-02T02:36:00.000-08:00</published><updated>2013-07-21T11:08:41.242-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="global illumination"/><category scheme="http://www.blogger.com/atom/ns#" term="Ogre"/><category scheme="http://www.blogger.com/atom/ns#" term="Ogre deferred shading"/><category scheme="http://www.blogger.com/atom/ns#" term="real-time global illumination"/><category scheme="http://www.blogger.com/atom/ns#" term="reflective shadow maps"/><category scheme="http://www.blogger.com/atom/ns#" term="rsm"/><title type='text'>Global illumination with Ogre: Reflective Shadow Maps</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsJNlVetq3qwkYa-UttmZg6W9bHGLGA7pA3cJsFmGZXqurtj9CZEe3sXWkIeqsgBOOf3MLIimBeK1koun5EZU2qNBV38iUYfMQH3hDI7lwfWLbIBlXI-xXTsMyG9jlFjumwMByG_KnXgLW/s1600/SampleBrowser_d+2012-01-02+11-53-07-89.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5692988493473319234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsJNlVetq3qwkYa-UttmZg6W9bHGLGA7pA3cJsFmGZXqurtj9CZEe3sXWkIeqsgBOOf3MLIimBeK1koun5EZU2qNBV38iUYfMQH3hDI7lwfWLbIBlXI-xXTsMyG9jlFjumwMByG_KnXgLW/s320/SampleBrowser_d+2012-01-02+11-53-07-89.jpg&quot; style=&quot;cursor: hand; cursor: pointer; display: block; height: 168px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
This is a simple implementation of the paper: Reflective Shadow Maps by Carsten Dachsbacher and Marc Stamminger (University of Erlangen-Nuremberg). Despite this particular techinque is quite old, many other subsequent papers are based on this idea. I used &lt;b&gt;Ogre&lt;/b&gt; and his d&lt;b&gt;eferred shading framework&lt;/b&gt; to build this app. By computing the indirect illumination with a low resolution&amp;nbsp;image, the&amp;nbsp;frame rate&amp;nbsp;reaches&lt;b&gt; 20 fps @ 1920x1080 with approximately 600.000 triangles &lt;/b&gt;(on a Radeon HD 5800)&lt;b&gt;. &lt;/b&gt;Source code will be provided soon (leave a comment if interested)&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbcJLHTGJAyUarq2fnLF01PVfP6kUKhO9F7uDvmxvvvkM925u0NiJS8IHJAk5Af1T4jqR3RL9LMrNpjZyeT1n-RskhxHhqsVOc55qWYJMk0TGSdQFiseSB5xsiYUmW5cmjdvQUvZVTeOXd/s1600/133217_178558178830612_8054888_o.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbcJLHTGJAyUarq2fnLF01PVfP6kUKhO9F7uDvmxvvvkM925u0NiJS8IHJAk5Af1T4jqR3RL9LMrNpjZyeT1n-RskhxHhqsVOc55qWYJMk0TGSdQFiseSB5xsiYUmW5cmjdvQUvZVTeOXd/s320/133217_178558178830612_8054888_o.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvu7y01qoOQF6LVytUb9O282_D23_1Sqzr0k3CGhx1lyiuw7xeJsS8695mqO9kyaVJEq9HdpeyCYi9Kw0Xb2ZpfWitmYArMTpAtmQ7tvf2iStmSQfWTQcuLF7XiKLPBa4fYcWQeyENyf8r/s1600/screenshot07212013_194521364.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvu7y01qoOQF6LVytUb9O282_D23_1Sqzr0k3CGhx1lyiuw7xeJsS8695mqO9kyaVJEq9HdpeyCYi9Kw0Xb2ZpfWitmYArMTpAtmQ7tvf2iStmSQfWTQcuLF7XiKLPBa4fYcWQeyENyf8r/s320/screenshot07212013_194521364.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/257547009539300739/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2012/01/global-illumination-with-ogre.html#comment-form' title='11 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/257547009539300739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/257547009539300739'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2012/01/global-illumination-with-ogre.html' title='Global illumination with Ogre: Reflective Shadow Maps'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsJNlVetq3qwkYa-UttmZg6W9bHGLGA7pA3cJsFmGZXqurtj9CZEe3sXWkIeqsgBOOf3MLIimBeK1koun5EZU2qNBV38iUYfMQH3hDI7lwfWLbIBlXI-xXTsMyG9jlFjumwMByG_KnXgLW/s72-c/SampleBrowser_d+2012-01-02+11-53-07-89.jpg" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-4634355288009452738</id><published>2011-08-02T14:11:00.000-07:00</published><updated>2011-08-03T03:04:21.634-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GPGPU"/><category scheme="http://www.blogger.com/atom/ns#" term="GPU"/><category scheme="http://www.blogger.com/atom/ns#" term="MeshLab"/><category scheme="http://www.blogger.com/atom/ns#" term="MeshLab SDF"/><category scheme="http://www.blogger.com/atom/ns#" term="Shape diameter function"/><title type='text'>More details on the  Shape Diameter Function filter in MeshLab</title><content type='html'>&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;font-family:times new roman;font-size:130%;&quot;  &gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:100%;&quot;  &gt;&lt;span style=&quot;font-size:85%;&quot;&gt;This is the first of a series of short tutorials on how I have coded the  MeshLab filters for Obscurance and Shape Diameter Function. I will also  give some more details on the two functions.&lt;br /&gt;The first thing to  point out is that the core calculation for both filters is GPU based.  Indeed everything relies on a depth peeling engine. But first let&#39;s see  what obscurance and SDF are.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;font-family:times new roman;font-size:130%;&quot;  &gt;Shape Diameter Funtion&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot; class=&quot;caption&quot;  &gt;As I wrote in a recent post, SDF  is a scalar function de&lt;span class=&quot;text_exposed_show&quot;&gt;fined   on the mesh surface. It expresses a measure of the &lt;span style=&quot;font-weight: bold;&quot;&gt;neighborhood  diameter&lt;/span&gt; of the  object at each point on the surface on the mesh surface. You can think about SDF as reasonable measure of &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot; class=&quot;caption&quot;  &gt;&lt;span class=&quot;text_exposed_show&quot;&gt;the &#39;thickness&#39; of an object. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;Given a point on the mesh surface,&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;several rays are sent inside a cone, centered around the point&#39;s inward-normal, to the other side of the mesh (see the image below). The result is a weighted sum of all rays lenghts.&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMMUBxKNsSSajQNLWOCYDLywH2JScJIK4RC8Ylng4Rdt9NoVvaJnF26UajLLZoeyyT1XZiKrdXbkP5zGUVFkCzu4tH8v9GRGSShu9yXKDThFmkOXn3XAFdXFjS21mSMuqPJCUGzDNR6iOn/s1600/snapshotBunnyjpg.jpg&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 224px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMMUBxKNsSSajQNLWOCYDLywH2JScJIK4RC8Ylng4Rdt9NoVvaJnF26UajLLZoeyyT1XZiKrdXbkP5zGUVFkCzu4tH8v9GRGSShu9yXKDThFmkOXn3XAFdXFjS21mSMuqPJCUGzDNR6iOn/s400/snapshotBunnyjpg.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636388589575259682&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;br /&gt;If you are familiar with statistics, you may know that such method can be affected by the presesence of outliers, that are very long or very short rays that differ very much from all other rays. These rays should be ignored before computing the weighted sum. You can do it calculating the median of all rays length and removing values below or above a certain percentile. Actually some shapes are more affected by this problem. Watch this figure:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GTtSAqeWxDwOB8Qy118UzChVvD5iWOQgwG_IL_O1ermoUv4BjTQBB600D-GTx3QlsYKVViTCufWhTM3gNHXeooym2IpEF52j1r0k_UxpM6i6dhsP0QdXfEL0jqOI4jHk-RCNyrDl1scR/s1600/torus00.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 193px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GTtSAqeWxDwOB8Qy118UzChVvD5iWOQgwG_IL_O1ermoUv4BjTQBB600D-GTx3QlsYKVViTCufWhTM3gNHXeooym2IpEF52j1r0k_UxpM6i6dhsP0QdXfEL0jqOI4jHk-RCNyrDl1scR/s400/torus00.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636399005711554258&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;You can see (if you are blind, like me, click on the image to zoom out) that there is something strange with this mesh. I would expect to have the same color for both the internal and external of the model, but on the extern there are some blue blurs (that mean larger parts). Watch the two figures below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTxfksl4qOllbCA6A0yYJzwSPFkKoEn-_jJUGaDq9Cszz6ycfNLYkqyf12pBYEgtPgxESKmaEXhS2q8J5NK-mm04_BvxjlK7OVWFbQADUoEPRJ_TBmUSuw2nNCg0lJ4N5gyyGB_MVIW7mF/s1600/torusOut.jpg&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 193px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTxfksl4qOllbCA6A0yYJzwSPFkKoEn-_jJUGaDq9Cszz6ycfNLYkqyf12pBYEgtPgxESKmaEXhS2q8J5NK-mm04_BvxjlK7OVWFbQADUoEPRJ_TBmUSuw2nNCg0lJ4N5gyyGB_MVIW7mF/s400/torusOut.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636401666096651410&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgApjD_Gz1N37SBec4uwWN-CaRJ_9A9-oQ8Ru5mbXROPshSigKfF5o4_qTieo_HAgPkTL4aDYjV6_wHapukEzMJ25hF6MJrgAyRfWdGtK5g-Y6TQzUuGMKK0s_Mq4AtgbLwp_eF4xLOgGZL/s1600/torusIn.jpg&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 193px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgApjD_Gz1N37SBec4uwWN-CaRJ_9A9-oQ8Ru5mbXROPshSigKfF5o4_qTieo_HAgPkTL4aDYjV6_wHapukEzMJ25hF6MJrgAyRfWdGtK5g-Y6TQzUuGMKK0s_Mq4AtgbLwp_eF4xLOgGZL/s400/torusIn.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636402252237413474&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;br /&gt;As you can see, in the second case rays are very similar as they have no chance &quot;to escape&quot; to very distant locations.&lt;br /&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;font-family:times new roman;font-size:100%;&quot;  &gt;Outliers Removal&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;&lt;span&gt;&lt;br /&gt;Unfortunately, doing outliers removal using the GPU is a hard task. You should trace each ray and save all intermediate result and then sort to find out the median. This sound even worse, if you notice that, in GPU computing, you are forced to trace in parallel the same ray for all vertices. For large mesh the ammount of intermediate result to be saved would be impratical. The solution (suggested by my teacher, &lt;a href=&quot;http://vcg.isti.cnr.it/%7Ecignoni/&quot;&gt;prof.Cignoni &lt;/a&gt;) is to use a local outliers removal. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;Infact, the removal is made on the fly with a supersampling of the depth buffer. For each ray that we trace, we take multiple depth values near the point of intersection and we output only the median of these values. You may argue that I should have raytraced the depth buffer instead than just sampling it. Indeed, it would be more correct, but extremely slow, I tried a raytrace function like the one you use in parallax occlusion mapping. If you have a better idea (maybe a clever multi-pass approach) let me know.&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:85%;&quot;  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:arial;font-size:85%;&quot;  &gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-family:times new roman;font-size:130%;&quot;  &gt;False intersections&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:85%;&quot;  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;An other detail that add robustness to our SDF function is the false intersection removal&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;&quot;  &gt;.&lt;/span&gt;&lt;span style=&quot;;font-family:times new roman;font-size:85%;&quot;  &gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;font-family:times new roman;&quot;&gt; &lt;/span&gt;For each each ray we check the normal at the point of intersection and ignore intersections where the normal at intersection point is in the same direction as that of the point-of-origin. The &quot;same direction&quot; is actually defined as an angle difference less than 90°. In a nutshell, we want the point of intersection to approximately face the point of origin of the ray.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);font-size:130%;&quot; &gt;More strict measure&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;br /&gt;&lt;br /&gt;What if you are interested in a more strict measure of the mesh? That is you would like the antipodal distance at eache point on the mesh. In this case, you can simply reduce the cone angle to very low values like 20° or maybe 10° degrees. Smaller values are not suggested, as the exact antipodal distance is not well defined for shapes approximated by a triangular mesh. Moreover you should strongly increase the number of rays to be traced. This is due to the fact that, in a GPU implementation, is necessary to sample (uniformly, in this case) the sphere around the mesh and reject directions that don&#39;t fall within the cone around the vertex normal. Than, if you use a very small cone, there is chance that no directions fall within this cone.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/4634355288009452738/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/08/meshlab-plugin-development-depth.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/4634355288009452738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/4634355288009452738'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/08/meshlab-plugin-development-depth.html' title='More details on the  Shape Diameter Function filter in MeshLab'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMMUBxKNsSSajQNLWOCYDLywH2JScJIK4RC8Ylng4Rdt9NoVvaJnF26UajLLZoeyyT1XZiKrdXbkP5zGUVFkCzu4tH8v9GRGSShu9yXKDThFmkOXn3XAFdXFjS21mSMuqPJCUGzDNR6iOn/s72-c/snapshotBunnyjpg.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-3429335564479263991</id><published>2011-08-02T13:51:00.000-07:00</published><updated>2012-01-02T03:22:37.417-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android game"/><category scheme="http://www.blogger.com/atom/ns#" term="Android programming"/><category scheme="http://www.blogger.com/atom/ns#" term="game engine architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="game logic"/><category scheme="http://www.blogger.com/atom/ns#" term="game programming"/><category scheme="http://www.blogger.com/atom/ns#" term="game view"/><category scheme="http://www.blogger.com/atom/ns#" term="model view controller"/><title type='text'>A new project started: an Andoid game in development!</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlyRUhcCaaMZbl8UIfNcjbb6mSP7sLd3dwRMfyruv7FM4dWUoeOyK9DYtEGmzkmN450H36epwju5gM2eOKaWvMjq4Mgwo7bH7VgQhIlIvIXah6lVXMZOK4QSiKMW_TFBhYh56fx2BIrI7R/s1600/wa3r.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5636365293281670642&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlyRUhcCaaMZbl8UIfNcjbb6mSP7sLd3dwRMfyruv7FM4dWUoeOyK9DYtEGmzkmN450H36epwju5gM2eOKaWvMjq4Mgwo7bH7VgQhIlIvIXah6lVXMZOK4QSiKMW_TFBhYh56fx2BIrI7R/s320/wa3r.png&quot; style=&quot;cursor: pointer; float: right; height: 240px; margin: 0pt 0pt 10px 10px; width: 320px;&quot; /&gt;&lt;/a&gt;I have started a new amazing project! A mobile game for the Android platform. It will be something like &quot;Worms&quot;...do you rember it? I really loved that game. Actually I wanna create &amp;nbsp;a well structured game engine, that can be used for several projects. &amp;nbsp;I have six months to get things done! Let&#39;s see what can  I do!</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/3429335564479263991/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/08/new-project-started-andoid-game-in.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/3429335564479263991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/3429335564479263991'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/08/new-project-started-andoid-game-in.html' title='A new project started: an Andoid game in development!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlyRUhcCaaMZbl8UIfNcjbb6mSP7sLd3dwRMfyruv7FM4dWUoeOyK9DYtEGmzkmN450H36epwju5gM2eOKaWvMjq4Mgwo7bH7VgQhIlIvIXah6lVXMZOK4QSiKMW_TFBhYh56fx2BIrI7R/s72-c/wa3r.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-2090560943331646895</id><published>2011-07-30T04:52:00.000-07:00</published><updated>2011-07-30T04:56:40.484-07:00</updated><title type='text'>A tutorial on  Obscurance and SDF coming soon</title><content type='html'>In a couple of  days I will post a detailed description of my MeshLab plugin that includes the Obscurance and Shape Diameter Function filter, including an explanation of the source code. Stay tuned!  :)</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/2090560943331646895/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/tutorial-on-obscurance-and-sdf-coming.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/2090560943331646895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/2090560943331646895'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/tutorial-on-obscurance-and-sdf-coming.html' title='A tutorial on  Obscurance and SDF coming soon'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-6616688723758732708</id><published>2011-07-29T09:08:00.000-07:00</published><updated>2011-08-12T02:24:53.403-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="auto rigger"/><category scheme="http://www.blogger.com/atom/ns#" term="auto skeletonisation"/><category scheme="http://www.blogger.com/atom/ns#" term="character rigging"/><category scheme="http://www.blogger.com/atom/ns#" term="MeshLab SDF"/><category scheme="http://www.blogger.com/atom/ns#" term="Shape diameter function meshlab"/><category scheme="http://www.blogger.com/atom/ns#" term="skeletonisation"/><title type='text'>GPU - accelerated Shape Diameter Function filter for MeshLab</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVnbdJZupTTXF-wWn0tIQMdcB_ebGN2D3AqpqgzM3IU8fXI8lFFeaoEXd9q9GJZbOCMR5_EjHpALVTtuTnDRQPYzZzNUBTKaxuVqD3gXP6bHQPsBC-L0PS6nMqrtIKxyakA_iKaN5mXg-z/s1600/sdf_snapshot.jpg&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 322px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVnbdJZupTTXF-wWn0tIQMdcB_ebGN2D3AqpqgzM3IU8fXI8lFFeaoEXd9q9GJZbOCMR5_EjHpALVTtuTnDRQPYzZzNUBTKaxuVqD3gXP6bHQPsBC-L0PS6nMqrtIKxyakA_iKaN5mXg-z/s400/sdf_snapshot.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5634813534790535298&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJghHo5nLksdnEkSTaYCF0FfXOhnM45mniyPUCyvV5OgrEJc2JmHy57EfVxnJNXgzBOfVBrDMrduQD-xgc7UtayORhq9-Xt9CyiYyDmVNB6aDxduWCZWoqzIFp6yNYTAeEQ5378zPNhRFJ/s1600/snapshot00.png&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;An other MeshLab&#39;s filter coming! I developed (together with the previous filter of Obscurance) one filter that calculates t&lt;span class=&quot;caption&quot;&gt;he Shape-Diameter Function (SDF). SDF  is a scalar function de&lt;span class=&quot;text_exposed_hide&quot;&gt;&lt;/span&gt;&lt;span class=&quot;text_exposed_show&quot;&gt;fined  on the mesh surface. It expresses a measure of the neighborhood diameter of the  object at each point on the surface on the mesh surface&lt;a href=&quot;http://www.cs.tau.ac.il/%7Eliors/research/projects/sdf/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;. You can think about SDF as reasonable measure of the &#39;thickness&#39; of an object.&lt;br /&gt;It is useful to segment 3D objects into meaningful parts but also a pratical way to evaluate the thickness of your objects before 3D  printing them. &lt;/span&gt;&lt;/span&gt; The SDF is also used for the auto-skeletonisation of characters, animals ecc... It would be nice to exploit this work developing a filter for auto-rigging a character, a nice feauture that was recently added to the Mixamo tools (&lt;a href=&quot;http://www.mixamo.com/c/auto-rigger&quot;&gt;http://www.mixamo.com/c/auto-rigger&lt;/a&gt;). &lt;span class=&quot;caption&quot;&gt;&lt;span class=&quot;text_exposed_show&quot;&gt; See the reference paper for further details: &lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.cs.tau.ac.il/%7Eliors/research/projects/sdf/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.cs.tau.ac.il/~liors&lt;wbr&gt;​/research/projects/sdf/&lt;/a&gt;.&lt;br /&gt;A preview of the filter was published on the &lt;a href=&quot;http://www.facebook.com/?ref=home#%21/photo.php?fbid=10150256656371689&amp;amp;set=a.478821861688.255841.323420321688&amp;amp;type=1&amp;amp;theater&quot;&gt;MeshLab&#39;s Facebook page&lt;/a&gt;.&lt;br /&gt;Lucy model, courtesy of Stanford University. (&lt;a href=&quot;http://graphics.stanford.edu/data/3Dscanrep/&quot;&gt;http://graphics.stanford.edu/data/3Dscanrep&lt;/a&gt;/)</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/6616688723758732708/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/gpu-accelerated-shape-diameter-function.html#comment-form' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/6616688723758732708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/6616688723758732708'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/gpu-accelerated-shape-diameter-function.html' title='GPU - accelerated Shape Diameter Function filter for MeshLab'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVnbdJZupTTXF-wWn0tIQMdcB_ebGN2D3AqpqgzM3IU8fXI8lFFeaoEXd9q9GJZbOCMR5_EjHpALVTtuTnDRQPYzZzNUBTKaxuVqD3gXP6bHQPsBC-L0PS6nMqrtIKxyakA_iKaN5mXg-z/s72-c/sdf_snapshot.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-2822700500411640706</id><published>2011-07-26T09:35:00.000-07:00</published><updated>2011-07-27T07:45:15.053-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ambient occlusion"/><category scheme="http://www.blogger.com/atom/ns#" term="CUDA"/><category scheme="http://www.blogger.com/atom/ns#" term="depth peeling"/><category scheme="http://www.blogger.com/atom/ns#" term="GPGPU"/><category scheme="http://www.blogger.com/atom/ns#" term="MeshLab"/><category scheme="http://www.blogger.com/atom/ns#" term="MeshLab plugin"/><category scheme="http://www.blogger.com/atom/ns#" term="obscurance"/><category scheme="http://www.blogger.com/atom/ns#" term="openCL"/><category scheme="http://www.blogger.com/atom/ns#" term="VCG lib"/><category scheme="http://www.blogger.com/atom/ns#" term="volumetric obscurance"/><title type='text'>A GPU based Meshlab plugin for Obscurance!!</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6t0z52Q3XtrqPwcqAs9MlOLB_eHMWG9p8-KvBKphM0W-y9Ujodz7z1ejbZwS5y6Cr8NhqUPLwquUIpVHzD3jnAMap_9JaNtSz3zWHWTghH8On4WnkqiDWx0_EZA0hVTYYGUEGq8hAuqEi/s1600/272922_10150253342321689_323420321688_7852563_5554489_o.jpg&quot;&gt;&lt;img style=&quot;float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 286px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6t0z52Q3XtrqPwcqAs9MlOLB_eHMWG9p8-KvBKphM0W-y9Ujodz7z1ejbZwS5y6Cr8NhqUPLwquUIpVHzD3jnAMap_9JaNtSz3zWHWTghH8On4WnkqiDWx0_EZA0hVTYYGUEGq8hAuqEi/s320/272922_10150253342321689_323420321688_7852563_5554489_o.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5633713589923134290&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family:times new roman;&quot;&gt;I have recently completed a plugin for &lt;a href=&quot;http://meshlab.sourceforge.net/&quot;&gt;MeshLab&lt;/a&gt; to calculate volumetric obscurance on a mesh.&lt;br /&gt;If you use ambient occlusion in your work, consider using my filter instead, because obscurance avoids the strong darkening of internal parts with a spatial decay te&lt;/span&gt;&lt;span class=&quot;messageBody&quot; ft=&quot;{&amp;quot;type&amp;quot;:3}&quot;&gt;&lt;span style=&quot;font-family:times new roman;&quot;&gt;rm. You can see the preview of the plugin in th&lt;span style=&quot;font-family:times new roman;&quot;&gt;e &lt;a href=&quot;http://www.facebook.com/MeshLab#%21/photo.php?fbid=10150253342321689&amp;amp;set=a.478821861688.255841.323420321688&amp;amp;type=1&amp;amp;theater&quot;&gt;Facebook&#39;s page of MeshLab&lt;/a&gt;. Maybe I will provide some explanations of the implementation in a future post. All the source code is provided together with MeshLab. (At time I am writing my folder is in src/fgt/filter_sdfgpu.The name comes from the other filter included, more about this in the future). You can download everything via SVN. For further details see the reference paper: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Iones&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Krupkin&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Sbert&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Zhukov&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Fast,&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Realistic&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Lighting&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;for&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Video&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;Games&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;IEEECG&amp;amp;A&lt;/span&gt;&lt;span style=&quot;color: rgb(192, 192, 192);font-family:times new roman;&quot; &gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);font-family:times new roman;&quot; &gt;2003&lt;/span&gt;&lt;span class=&quot;messageBody&quot; ft=&quot;{&amp;quot;type&amp;quot;:3}&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/2822700500411640706/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/meshlab-plugin-for-obscurance.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/2822700500411640706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/2822700500411640706'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/meshlab-plugin-for-obscurance.html' title='A GPU based Meshlab plugin for Obscurance!!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6t0z52Q3XtrqPwcqAs9MlOLB_eHMWG9p8-KvBKphM0W-y9Ujodz7z1ejbZwS5y6Cr8NhqUPLwquUIpVHzD3jnAMap_9JaNtSz3zWHWTghH8On4WnkqiDWx0_EZA0hVTYYGUEGq8hAuqEi/s72-c/272922_10150253342321689_323420321688_7852563_5554489_o.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2472128688820563081.post-5651623923769545033</id><published>2011-07-26T09:15:00.000-07:00</published><updated>2011-07-26T10:47:13.714-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="3d graphics programming"/><category scheme="http://www.blogger.com/atom/ns#" term="3d programming"/><category scheme="http://www.blogger.com/atom/ns#" term="directx"/><category scheme="http://www.blogger.com/atom/ns#" term="directx programming"/><category scheme="http://www.blogger.com/atom/ns#" term="glsl"/><category scheme="http://www.blogger.com/atom/ns#" term="hlsl"/><category scheme="http://www.blogger.com/atom/ns#" term="opengl"/><category scheme="http://www.blogger.com/atom/ns#" term="opengl programming"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Welcome to my blog! 3D graphics programming &amp; more!</title><content type='html'>&lt;span style=&quot;color: rgb(51, 51, 51);font-family:arial;&quot; &gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Welcome&lt;/span&gt;! &lt;span style=&quot;font-family:times new roman;&quot;&gt;This is simply a blog about my works in the field of 3d graphics programming. It will serve both as portfolio and as a place for some observations&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;&lt;span style=&quot;color: rgb(51, 51, 51);font-family:times new roman;&quot; &gt;. Sometimes I will provide the source code of my works in the hope that will help you. You can contact me at&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt; baldacci85[at]hotmail.it.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://3dgraphicsprogramming.blogspot.com/feeds/5651623923769545033/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/welcome-to-my-blog-3d-graphics.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/5651623923769545033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2472128688820563081/posts/default/5651623923769545033'/><link rel='alternate' type='text/html' href='http://3dgraphicsprogramming.blogspot.com/2011/07/welcome-to-my-blog-3d-graphics.html' title='Welcome to my blog! 3D graphics programming &amp; more!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07755155641137721585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>