{"id":18,"date":"2022-11-29T07:52:21","date_gmt":"2022-11-29T07:52:21","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/brandicook\/?p=18"},"modified":"2022-11-29T07:52:21","modified_gmt":"2022-11-29T07:52:21","slug":"blog-post-3","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/brandicook\/2022\/11\/29\/blog-post-3\/","title":{"rendered":"Blog Post #3"},"content":{"rendered":"\n<p>Hello, welcome back to Brandi Cook&#8217;s Amazing Bevy Blog Serious (title in progress). I&#8217;d say over the the course of the last two weeks I&#8217;ve been somewhat successful. As of last blog post, I hadn&#8217;t really gotten set up\/working <em>hand on<\/em> with Bevy yet. However, by now, I have started to generate and actually create things. <\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/zP-Po6FH1PEcGbXoX5tHPypO-FP5ySD7lujimYYQ_LRTK3kg85AMXQ2XtDRra6IXbOxMFj2SZ4SDVxbXw1cuvQVA4Tk7454y0OhxmfOr6dj4W_5bFbi6VBUHVBAa_RdUPLbSZ83rCQ31iBt6jPfc5-GhbclSsatLrnvP4KhmZR4TSqiAIqPW1VtqCDUF2g\" width=\"552\" height=\"337\"><\/p>\n\n\n\n<p>Here&#8217;s a pretty spiffy 3D scene I made in Bevy. <\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/8ojWDfsfzUW2dcEbQtU9as5mUGE695Te2i-pKlBXsbfSJTgpI8rHXr3_5GuRICx9H4e4m53cNoufDKzi9sJGBaqUDLNJOPrdYVcIzYIToEJUnqwTK0Mr07hq40qD_8L-u8e5_Zh2fvhZWu9MlVia_Syzc3MOzndqdHrSU_mFcnYuTKhBXsVhKgzrQuIkng\" width=\"543\" height=\"317\"><\/p>\n\n\n\n<p>Pendulum swinging in Bevy (written by Chris Patton).<\/p>\n\n\n\n<p>So far, Bevy engine really reminds me of creating 3D spaces\/loading objects in OpenGL, and the Rust language is similar to C languages (even though it is very different, writing it is similar). These factors make learning feel more comfortable for me. I really feel like I&#8217;m starting to understand things.<\/p>\n\n\n\n<p>On top of building 3D spaces, meshes, and testing other Bevy implementations, I&#8217;ve been working on applying a noise to these objects. Below is an example of a snippet of code that applies Perlin Noise to an object. I won&#8217;t get into the specifics, but noise is basically how you create &#8220;randomness&#8221; in order to procedurally generate a mesh texture. Perlin Noise is the standard noise type used, however, there are a few others. Here&#8217;s a helpful link with some more information, but there&#8217;s also a lot of info out there https:\/\/mrl.cs.nyu.edu\/~perlin\/doc\/oscar.html !<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"597\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6226\/files\/2022\/11\/image-1.png\" alt=\"\" class=\"wp-image-21\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6226\/files\/2022\/11\/image-1.png 527w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6226\/files\/2022\/11\/image-1-265x300.png 265w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><figcaption class=\"wp-element-caption\">Here&#8217;s a snippet of code on perlin noise generation (<strong>https:\/\/docs.rs\/mesh-generation\/latest\/mesh_generation\/)<\/strong><\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/63sqMZZiNHuxWF9Df3e2Jm1ADuU7OJ6v4bW_DqyLahkSbG1e922zXeBLYsd1pnEI5PSHLQM0uEzFS9qBcuFCHMlbBpzgrldsEDdObvrKf6nD79aD3FtbEIT6GTSLZgEc2vQc5-tqkfG2E70ahE216TILSZvwDoY_6iyc6Ii72akqFDJX8h3yR7CvKWsrlg\" alt=\"\" width=\"281\" height=\"281\" \/><\/figure>\n\n\n\n<p>Bottom Left: u=0, v=0: <strong>Cell Noise<\/strong><br>Bottom Right: u=0, v=1: <strong>Noise<\/strong><br>Top Left: u=1, v=0: <strong>Voronoi<\/strong><br>Top Right: u=1, v=1: <strong>Voronoise<\/strong><\/p>\n\n\n\n<p>Some detours include the fact that I haven&#8217;t pushed any of my work to Github yet. While I&#8217;ve been working on generating maps, creating noise, setting all of this up in a 3D space, I have yet to get all of this to work together in one solution. I&#8217;m working on that right now. <\/p>\n\n\n\n<p>Some really helpful sources for me are the official Rust documentation, the official Bevy docs, and Christopher Biscardi. This guy is the Bevy GOAT (greatest of all time&#8230;). He does <a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=85uJc81SQZ4&amp;t=0s\" data-type=\"URL\" data-id=\"https:\/\/www.youtube.com\/watch?v=85uJc81SQZ4&amp;t=0s\" target=\"_blank\">YouTube <\/a>videos explaining concepts, has his own examples, and even creates his own APIs for everyone to use. I recommend checking him out should you become interested in learning Bevy. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Anyway&#8230;. I&#8217;d say, overall, I&#8217;m really happy with my Bevy progress. It&#8217;s been a fun adventure and I feel like I&#8217;m following the plan accordingly. Our sponsor, Chris Patton, also seems content with all of my group and I&#8217;s progress. I&#8217;ve been keeping a <a href=\"https:\/\/docs.google.com\/document\/d\/19HXP_bCHjA7NL9kYeq5ugyHMEFS89QvWxI1IeI-O0oc\/edit?usp=sharing\" data-type=\"URL\" data-id=\"https:\/\/docs.google.com\/document\/d\/19HXP_bCHjA7NL9kYeq5ugyHMEFS89QvWxI1IeI-O0oc\/edit?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">Live Document<\/a> of my learning as I progress, feel free to check it out (using OSU account). <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Thanks for reading,<\/p>\n\n\n\n<p>Brandi Cook<\/p>\n\n\n\n<p>933309286<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello, welcome back to Brandi Cook&#8217;s Amazing Bevy Blog Serious (title in progress). I&#8217;d say over the the course of the last two weeks I&#8217;ve been somewhat successful. As of last blog post, I hadn&#8217;t really gotten set up\/working hand on with Bevy yet. However, by now, I have started to generate and actually create [&hellip;]<\/p>\n","protected":false},"author":12984,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/users\/12984"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/comments?post=18"}],"version-history":[{"count":1,"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":22,"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/posts\/18\/revisions\/22"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/media?parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/categories?post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/brandicook\/wp-json\/wp\/v2\/tags?post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}