你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F4系列3D引擎开发过程记录分享

[复制链接]
eefishing 发布时间:2020-7-30 10:45
目前在STM32上还没有找到一个完整的开源3D引擎,因此我决定继续完成大学时的梦想,从零写一个3D引擎。
渲染采用了通用的三角形渲染方法,既三点确定一个面信息,与四边形渲染法的优势在于,三角形渲染法在复杂模型上更节约内存。也是目前所通用的一种渲染方法,显卡里有个指标叫三角形填充率,就是指这个。
既然要运行在单片机上,就要精简掉一些功能。比如贴图。。。因此我写的这个不支持贴图功能,只能进行指定颜色填充。
给大家看看我开发的3D引擎的大致思路:

: o$ X( p" x8 Y8 [
11.jpg
1 v$ p' c7 n1 {4 H
最后进行光栅化处理就能显示到LCD屏幕上了,其实3D引擎的开发主要是连线,将空间上的点连成三角形,然后去填充这些三角形,最后投影到LCD上。
旋转矩阵计算方式:

" @, y) n. Z/ o. z+ [7 K
22.jpg
, @$ w  l# g7 x2 B
单片机选用了STM32F407ZET6,cortex-m4内核有浮点单元(但是为了兼容性,我没使用)
整个代码优化了浮点,但是渲染精度很差,还需要继续优化。
给大家看看单片机显示效果:
; T( e' [* L+ E7 u( e
33.jpg

- S. Z0 x& n( K; c2 `; `
实际模型:

$ q6 h) \2 n. Z: \  A
44.jpg

) F8 T9 E* {: Q$ h  q0 e4 n# O
动态旋转效果我发到优酷上了,优酷上搜索“STM32F407单片机3D模型渲染显示-流畅15帧”可以观看
; ~1 E! w7 H' \8 b; o. W3 {! n) V
代码先不放出了,有厂家想要这个代码,我看以后写个简单的版本,再放出来。

. r6 I5 W1 m3 Z# g" b3 f
收藏 评论3 发布时间:2020-7-30 10:45

举报

3个回答
sincomaster 回答时间:2020-7-30 20:15:53
不错,下次可以写个俄罗斯方块玩
小小超 回答时间:2020-7-31 10:12:42
不错,感谢分享!
小马哥xzz 回答时间:2021-1-26 17:39:42
博主,3D渲染点数据是怎么导入的,读取的sd卡中3d文件转换的吗
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版