tag:blogger.com,1999:blog-4940687843460320436.post5767385687015672197..comments2024-03-26T01:19:41.091-07:00Comments on ⚙: Better 3D graphics on the Arduino: avoiding flickering and tearingMhttp://www.blogger.com/profile/05279969393617122722noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-4940687843460320436.post-35770690615592942632020-09-19T07:01:24.975-07:002020-09-19T07:01:24.975-07:00Yes! The emulated (32-bit??) floating point is ala...Yes! The emulated (32-bit??) floating point is alarmingly fast. I tested re-coding things in terms of fixed-point. It was about 10x faster for a cube wireframe on a small 8x8 LED screen, but didn't make much of a difference on the LCD since sending pixels to the screen was the bottleneck. Mhttps://www.blogger.com/profile/05279969393617122722noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-66459757197201102702020-09-19T06:15:46.000-07:002020-09-19T06:15:46.000-07:00This is extremely helpful to know what is capable ...This is extremely helpful to know what is capable on an standard Arduino board. It just goes to show what a huge overhead cost is imposed by modern operating systems and the kind of raw Computational performance is possible, the closer you are to the bare metal. Genius Van Damhttps://www.blogger.com/profile/12210215935472228230noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-3969650658209462552020-09-19T06:13:37.704-07:002020-09-19T06:13:37.704-07:00Excellent. I will definitely check it out. I onc...Excellent. I will definitely check it out. I once wrote a spinning cube program for a Tandy TRS-80 Model 100 using the built-in Basic interpreter. Your code sounds like exactly what I need to refresh my memory regarding linear transformations. Thanks for sharing !Genius Van Damhttps://www.blogger.com/profile/12210215935472228230noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-74838203703603315512020-09-19T05:58:54.328-07:002020-09-19T05:58:54.328-07:00I do not know if it will be easy to integrate with...I do not know if it will be easy to integrate with your work, but the file <a href="https://github.com/michaelerule/Uno9341TFT/blob/master/Arduino_3D.cpp" rel="nofollow">Arduino_3D.cpp</a> contains the rotation code. <br /><br />Scroll down to the comment "Routines for creating, rotating, and applying axis transformations". The function "transformPoint" applies a 3x3 rotation matrix to the vertex coordinates. The model's points are stored in PROGMEM and then a 3D rotation matrix is applied before rendering. I didn't include code to generate specific rotation matricies, but the function "rotateTransformXY" is used to update the (initially identity) transformation as the user swipes left/right/up/down on the touchscreen.<br /><br />You might be able to modify "Arduino_3D.cpp/.h" for your project. But, it was tightly integrated into this graphics demo sketch and it might be easier (or more rewarding) to re-write parts of it from scratch ( :Mhttps://www.blogger.com/profile/05279969393617122722noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-29965019945049719942020-09-19T05:57:58.690-07:002020-09-19T05:57:58.690-07:00This comment has been removed by the author.Mhttps://www.blogger.com/profile/05279969393617122722noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-10702048743519865372020-09-19T02:15:20.306-07:002020-09-19T02:15:20.306-07:00Damn fine work if you ask me. Incredible skills u...Damn fine work if you ask me. Incredible skills using the same flag bit to handle both buffering and occlusion detection. I am working on a project to display 3D Graphics on an 64x32 RGB LED Matrix display and want to use a prebuilt 3D transformation library to handle transformation matrices for rotation. Does your software include an open source linear algebra package for Arduino? Thanks! Genius Van Damhttps://www.blogger.com/profile/12210215935472228230noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-38985774970285209352020-02-18T01:00:01.052-08:002020-02-18T01:00:01.052-08:00Hmm; The driver for the TFT display would need to ...Hmm; The driver for the TFT display would need to be re-written, since it is currently configured only for the AVR chips. Zero uses a Cortex processor. It looks like Zero probably does not have enough RAM to double-buffer the video, so using the pixel data to store a frame ID bit might be necessary. On the other hand, the Zero should be able to draw and erase very quickly, I wonder if there is a way to write data to the screen fast enough to avoid the flicker? Mhttps://www.blogger.com/profile/05279969393617122722noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-11878688678171298692018-11-29T00:30:42.645-08:002018-11-29T00:30:42.645-08:00does this support arduino zero (it's 32 bit, 4...does this support arduino zero (it's 32 bit, 48mhz, 32kb ram, 256kb flash) <br />(just for comparison the uno is 8 bit, 16mhz, 2kb sram, 32kb flash)<br />cuz i think it may be strong enough for animations (if you'll enable them in the library) and large scenes (which i can add)erezhttps://www.blogger.com/profile/02241464928716282906noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-72446955404589910632018-04-09T07:19:21.325-07:002018-04-09T07:19:21.325-07:00Thanks! Downloaded and will test.
I have a nice E...Thanks! Downloaded and will test.<br /><br />I have a nice Elegoo 2.8" shield unit which I modified by adding header pins to CON1. Primarily for access to the built-on SD card reader.<br /><br />Reading SD BMPs 240x320 (rotated to landscape) works fine. Rendering them is really slow. I was able to shave off 3 seconds for a 16bit RGB5 image.<br />As you have done I modified the existing libraries to remove spurious code and focus only on the UNO. RAM is also an issue as I can only load 222 entries into the palette table that 16bit BMPs use.<br /><br />Will try your libraries and post what I find.<br /><br />Yours,<br />WPWilliam P. O'Sullivanhttps://www.blogger.com/profile/13881971963708216180noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-9903312407296799122018-02-03T17:26:35.968-08:002018-02-03T17:26:35.968-08:00Amazing work. You have confirmed my theories about...Amazing work. You have confirmed my theories about the need for pixel-for-pixel "clean up" on these drivers. I have only tripped on the tip of the iceberg, making simple shapes followed by the background color replacement. This is instead of wiping the whole screen(large flicker). I was worried about memory moving forward with storing layer colors and boundaries. This helps in my design for sure. Anonymoushttps://www.blogger.com/profile/05338965369227144237noreply@blogger.comtag:blogger.com,1999:blog-4940687843460320436.post-80547718535670117842016-04-07T23:10:42.197-07:002016-04-07T23:10:42.197-07:00This is awesome! Is the full source available?This is awesome! Is the full source available?Dean Blackketterhttps://www.blogger.com/profile/16014859462926564288noreply@blogger.com