{"id":4788,"date":"2016-02-07T11:45:21","date_gmt":"2016-02-07T11:45:21","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=4788"},"modified":"2016-05-30T05:01:24","modified_gmt":"2016-05-30T05:01:24","slug":"le-frustum-de-la-camera","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=4788","title":{"rendered":"Le Frustum de la cam\u00e9ra"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/frustum.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-4790\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/frustum.png\" alt=\"frustum\" width=\"305\" height=\"250\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/frustum.png 525w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/frustum-300x246.png 300w\" sizes=\"(max-width: 305px) 100vw, 305px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>Appel\u00e9 aussi \u00ab\u00a0<em>view frustum \u00bb<\/em>, ce <strong>volume <\/strong>d\u00e9crit la fa\u00e7on dont la cam\u00e9ra effectue le rendu 2D.<\/p>\n<p>En effet, pour effectuer du rendu 3D \u00e0 l&rsquo;\u00e9cran, il faut d\u00e9finir une \u00ab\u00a0<strong>camera<\/strong>\u00a0\u00bb virtuelle qui pourra <strong>se<\/strong> <strong>mouvoir<\/strong> et<strong> se d\u00e9placer<\/strong> dans la sc\u00e8ne.<\/p>\n<p><strong>Pr\u00e9requis :<\/strong><\/p>\n<p>&#8211; Savoir initialiser <em>DirectX 10.1<\/em><\/p>\n<p><strong>Explications : <\/strong><\/p>\n<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/camera_view_volume.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-4795\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/camera_view_volume.png\" alt=\"camera_view_volume\" width=\"519\" height=\"309\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/camera_view_volume.png 519w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/02\/camera_view_volume-300x179.png 300w\" sizes=\"(max-width: 519px) 100vw, 519px\" \/><\/a><\/p>\n<p>Cette cam\u00e9ra sp\u00e9cifie quel volume, depuis l&rsquo;<strong>observateur<\/strong> de la sc\u00e8ne, elle peut <strong>observer<\/strong>.<\/p>\n<p>L&rsquo;espace compartiment\u00e9 entre le \u00ab\u00a0<em>near clip plane<\/em>\u00a0\u00bb et le \u00ab\u00a0<em>far clip plane<\/em>\u00a0\u00bb d\u00e9finit le volume que la cam\u00e9ra peut <strong>voir<\/strong>. Cet espace s&rsquo;appelle le \u00ab\u00a0<strong>frustum\u00a0\u00bb<\/strong> de la cam\u00e9ra, et comme on peut le voir c&rsquo;est une sorte de <strong>pyramide tronqu\u00e9e<\/strong>.<\/p>\n<h4><span style=\"text-decoration: underline;\">Le clipping :<\/span><\/h4>\n<p>Les objets (ou les parties d&rsquo;objets) qui ne sont pas \u00e0 l&rsquo;int\u00e9rieur de ce volume doivent \u00eatre <strong>ignor\u00e9s<\/strong> avant d&rsquo;\u00eatre trait\u00e9s vers le rendu 2D. Ce proc\u00e9d\u00e9 s&rsquo;appelle le \u00ab\u00a0<em>clipping<\/em>\u00a0\u00bb (ou <em>coupage<\/em> en fran\u00e7ais).<\/p>\n<p>Le \u00ab\u00a0<em>near clip plane<\/em>\u00a0\u00bb d\u00e9finit jusqu&rsquo;\u00e0 quelle distance les objets<strong> les plus proches<\/strong> de la cam\u00e9ra sont ignor\u00e9s, en effet les objets situ\u00e9s entre le \u00ab\u00a0near clip plane\u00a0\u00bb et la cam\u00e9ra sont \u00ab\u00a0<em>coup\u00e9s<\/em>\u00a0\u00bb (<em>clipped<\/em>).<\/p>\n<p>Le \u00ab\u00a0<em>fear clip plane<\/em>\u00a0\u00bb d\u00e9finit jusqu&rsquo;\u00e0 quelle distance les objets <strong>les plus loins<\/strong> de la cam\u00e9ra sont ignor\u00e9s, en effet les objets situ\u00e9s au del\u00e0 du \u00ab\u00a0far clip plane\u00a0\u00bb sont \u00ab\u00a0<em>coup\u00e9s<\/em>\u00a0\u00bb (<em>clipped<\/em>).<\/p>\n<p>Les triangles situ\u00e9s en partie dans ce volume sont <strong>s\u00e9par\u00e9s en deux parties.<\/strong><\/p>\n<p>Les <strong>propri\u00e9t\u00e9s<\/strong> de ce volume \u00ab\u00a0<em>frustum<\/em>\u00a0\u00bb d\u00e9pendent du <strong>FOV<\/strong> (<em>Field of View<\/em>) et des positions des <em>near clip plane<\/em> et <em>fear clip plane.<\/em><\/p>\n<p>La <strong>nature <\/strong>du <em>frustum<\/em> va modifier la fa\u00e7on dont le rendu sera effectu\u00e9 \u00e0 l&rsquo;\u00e9cran 2D. C&rsquo;est-\u00e0-dire depuis l&rsquo;espace de la cam\u00e9ra 3D vers l&rsquo;espace de projection 2D.<\/p>\n<h4><span style=\"text-decoration: underline;\">Composition :<\/span><\/h4>\n<p>Le <em>frustum<\/em> est compos\u00e9 de<strong> 6 plans<\/strong> formant une pyramide tronqu\u00e9e.<\/p>\n<p>Pour savoir savoir si un point est dans le volume on utilise le <strong>produit scalaire<\/strong> sur ces 6 plans. Si les valeurs <strong>correspondent<\/strong> apr\u00e8s avoir calculer les produits scalaire, le point est \u00e0<strong> l&rsquo;int\u00e9rieur<\/strong> du <em>frustum<\/em>.<\/p>\n<p><strong>R\u00e9sum\u00e9 : <\/strong><\/p>\n<p>Le <em>frustum<\/em> de la cam\u00e9ra repr\u00e9sente le volume de vue que l&rsquo;observateur <strong>peut voir<\/strong> dans la sc\u00e8ne (<em>graphe<\/em> qui est form\u00e9e de tous les mod\u00e8les visibles).<\/p>\n<p><strong>R\u00e9f\u00e9rence :<\/strong><\/p>\n<p>&#8211; https:\/\/msdn.microsoft.com\/en-us\/library\/ff634570.aspx<\/p>\n<p>&#8211; https:\/\/en.wikipedia.org\/wiki\/Viewing_frustum<\/p>\n<p>&#8211; Shader Approach &#8211; Franck D.Luna<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Appel\u00e9 aussi \u00ab\u00a0view frustum \u00bb, ce volume d\u00e9crit la fa\u00e7on dont la cam\u00e9ra effectue le rendu 2D. En effet, pour effectuer du rendu 3D \u00e0 l&rsquo;\u00e9cran, il faut d\u00e9finir une \u00ab\u00a0camera\u00a0\u00bb virtuelle qui pourra se mouvoir et se d\u00e9placer dans la sc\u00e8ne. Pr\u00e9requis : &#8211; Savoir initialiser DirectX 10.1 Explications : Cette cam\u00e9ra [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/4788"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4788"}],"version-history":[{"count":40,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/4788\/revisions"}],"predecessor-version":[{"id":4883,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/4788\/revisions\/4883"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}