{"id":1498,"date":"2022-06-06T17:32:13","date_gmt":"2022-06-06T17:32:13","guid":{"rendered":"https:\/\/writingagame.com\/?p=1498"},"modified":"2022-10-30T21:25:56","modified_gmt":"2022-10-30T21:25:56","slug":"chapter-39-complex-shapes-with-github","status":"publish","type":"post","link":"https:\/\/writingagame.com\/index.php\/2022\/06\/06\/chapter-39-complex-shapes-with-github\/","title":{"rendered":"Chapter 39. Complex shapes (with GitHub)"},"content":{"rendered":"\n<p>Next step is to replace these square models by something more actual. For example, by this:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/writingagame.com\/img\/b01\/c39\/01.jpg\"><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>I picked specifically this model for it&#8217;s challengingly curved shapes. Just in case, this is 1935 Duesenberg SSJ Speedster, 1:64 scale model.<\/p>\n\n\n\n<p>In order to implement that, we&#8217;ll need to extend our <em>ModelBuilder <\/em>and <em>ModelLoader <\/em>functionality. Also we&#8217;ll need more XML tags to address new features in model descriptors.<\/p>\n\n\n\n<p>No new concepts here, no new classes. No even new shaders. All involved classes were discussed in previous chapters. However, functionality is extended a lot. Almost all <em>modeler <\/em>classes\/files are involved. Explaining every little change will take forever. Therefore, here is a new Project repository on GitHub:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/bkantemir\/_wg39\">https:\/\/github.com\/bkantemir\/_wg39<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Just in case, a quick reminder how to download from GitHub:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Follow the link.<\/li><li>Click green button &#8220;Code&#8221;.<\/li><li>Pick &#8220;Download ZIP&#8221;.<\/li><li>When downloaded, go to your your&nbsp;<em>Downloads&nbsp;<\/em>folder and unpack&nbsp;<em>_wg39-main.zip<\/em>&nbsp;file to your hard drive (usually C:).<\/li><li>Since all project&#8217;s paths are relative, it is safe to rename created&nbsp;<em>_wg39-main<\/em>&nbsp;folder at your discretion (in my case &#8211; &#8220;CPP&#8221;).<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\"><li>New model descriptors are in <em>C:\\CPP\\a996car\\dt\\models\\cars\\999_1935_deusenberg_ssj_speedster<\/em><\/li><li>You can trace involved functionality in VS from <em>xEngine\/modeler\/ModelLoader.h<\/em><\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>x86<\/strong> Windows solution is <em>C:\\CPP\\<strong>a996car<\/strong>\\p_windows\\p_windows.sln<\/em><\/li><li><strong>ARM64<\/strong> Android solution &#8211; <em>C:\\CPP\\<strong>a996car<\/strong>\\p_android\\p_android.sln<\/em><\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>Build and run. Result:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/writingagame.com\/img\/b01\/c39\/02.jpg\"><\/p>\n\n\n\n<p><\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"100%\" height=\"400\" src=\"https:\/\/www.youtube.com\/embed\/pywu8nf0va4?controls=0&amp;autoplay=1&amp;loop=1&amp;playlist=pywu8nf0va4\" title=\"Deusenberg SSJ\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe>\n\n\n\n<p><\/p>\n\n\n\n<p>Well, looks like we CAN compete with professional 3D artists \ud83d\ude42<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p class=\"mb-2\">Next step is to replace these square models by something more actual. For example, by this: I picked specifically this model for it&#8217;s challengingly curved shapes. Just in case, this is 1935 Duesenberg SSJ Speedster, 1:64 scale model. In order to implement that, we&#8217;ll need to extend our ModelBuilder and ModelLoader functionality. Also we&#8217;ll need [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1504,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1498","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cross-platform-3d"],"_links":{"self":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts\/1498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/comments?post=1498"}],"version-history":[{"count":15,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts\/1498\/revisions"}],"predecessor-version":[{"id":1692,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts\/1498\/revisions\/1692"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/media\/1504"}],"wp:attachment":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/media?parent=1498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/categories?post=1498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/tags?post=1498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}