打印
[STM32F4]

【原创】STM32F4系列3D引擎开发过程记录分享

[复制链接]
3221|49
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
目前在STM32上还没有找到一个完整的开源3D引擎,因此我决定继续完成大学时的梦想,从零写一个3D引擎。

渲染采用了通用的三角形渲染方法,既三点确定一个面信息,与四边形渲染法的优势在于,三角形渲染法在复杂模型上更节约内存。也是目前所通用的一种渲染方法,显卡里有个指标叫三角形填充率,就是指这个。

既然要运行在单片机上,就要精简掉一些功能。比如贴图。。。因此我写的这个不支持贴图功能,只能进行指定颜色填充。

给大家看看我开发的3D引擎的大致思路:

最后进行光栅化处理就能显示到LCD屏幕上了,其实3D引擎的开发主要是连线,将空间上的点连成三角形,然后去填充这些三角形,最后投影到LCD上。

旋转矩阵计算方式:



单片机选用了STM32F407ZET6,cortex-m4内核有浮点单元(但是为了兼容性,我没使用)

整个代码优化了浮点,但是渲染精度很差,还需要继续优化。

给大家看看单片机显示效果:

实际模型:



动态旋转效果我发到优酷上了,优酷上搜索“STM32F407单片机3D模型渲染显示-流畅15帧”可以观看

代码先不放出了,有厂家想要这个代码,我看以后写个简单的版本,再放出来。

使用特权

评论回复
沙发
圣骑士by| | 2020-2-18 15:45 | 只看该作者
让STM32干这活是不是。。。

使用特权

评论回复
评论
1211762993 2020-2-18 15:57 回复TA
对于没有贴图的模型文件,显示是很流畅的喔,15帧轻轻松松的 
板凳
冬瓜盅| | 2020-2-18 16:03 | 只看该作者
请问一下这是用到了OPENGL库之类的吗?

使用特权

评论回复
评论
1211762993 2020-2-18 16:41 回复TA
没有,完全的从零开发的,只用了STM32F4的std标准库 
地板
冬瓜盅| | 2020-2-18 16:04 | 只看该作者
这种操作,是不是Gui有现成的库

使用特权

评论回复
5
1211762993|  楼主 | 2020-2-18 16:42 | 只看该作者
冬瓜盅 发表于 2020-2-18 16:04
这种操作,是不是Gui有现成的库

没有,完全的从零开发的,只用了STM32F4的std标准库

使用特权

评论回复
6
王紫豪| | 2020-2-18 16:46 | 只看该作者
支持楼主!采用硬件浮点单元,是不是会更快一些。

使用特权

评论回复
评论
1211762993 2020-2-18 16:49 回复TA
速度其实没明显变快,但是渲染精度提升很多。 
7
王紫豪| | 2020-2-18 19:51 | 只看该作者
希望完善完善,开源一下

使用特权

评论回复
8
冬瓜盅| | 2020-2-19 11:47 | 只看该作者
1211762993 发表于 2020-2-18 16:42
没有,完全的从零开发的,只用了STM32F4的std标准库

能实现这个很厉害!

使用特权

评论回复
9
徐霞客| | 2020-2-19 11:51 | 只看该作者
这个在实际产品上,用途大吗?而且这个主要是做什么用的呢?

使用特权

评论回复
评论
徐霞客 2020-2-20 11:44 回复TA
@1211762993 :3D打印机?? 
1211762993 2020-2-19 12:54 回复TA
3D打印机,离线预览,或者实时预览 
10
王紫豪| | 2020-2-19 18:11 | 只看该作者
徐霞客 发表于 2020-2-19 11:51
这个在实际产品上,用途大吗?而且这个主要是做什么用的呢?

用处很广。

使用特权

评论回复
11
13002054411| | 2020-2-19 23:37 | 只看该作者
66666

使用特权

评论回复
12
冬瓜盅| | 2020-2-20 11:51 | 只看该作者
感觉这个在其他的平台实现,都很困难!

使用特权

评论回复
13
gaoke231| | 2020-2-20 13:16 | 只看该作者
让 MCU干这活有点勉强啊,玩玩就行

使用特权

评论回复
14
gaoke231| | 2020-2-20 13:17 | 只看该作者
用F7 H7是不是要好点,要比F4 渲染能力好?

使用特权

评论回复
15
gaoke231| | 2020-2-20 13:18 | 只看该作者
用F7 H7是不是要好点,要比F4 渲染能力好?

使用特权

评论回复
16
stm32jy| | 2020-2-20 13:20 | 只看该作者
楼主厉害,优化好的话,还是很强的,楼主的GUI一定写的很棒

使用特权

评论回复
17
1211762993|  楼主 | 2020-2-20 15:24 | 只看该作者
gaoke231 发表于 2020-2-20 13:18
用F7 H7是不是要好点,要比F4 渲染能力好?

肯定是要好很多的,最好配上大容量内存,对于我这颗F4来讲,如果不考虑复杂效果的话,瓶颈不在CPU的运行速度上。主要是显存太小啦。
1996年的卡皇Voodoo2显卡,三角形填充率只有可怜的3M,照样可以跑起来CS1.6等游戏大作,主要是有12M的大显存。
F407的话像素填充率24M,整数优化过后的三角填充率1.2M,换做F7,H7的话,应该可以更高。单从性能上,H7可以渲染CS1.6的。
目前我把跑跑卡丁车的模型文件导入到F4里,单个跑车帧率可以在20左右。2个跑车也可以在15以上。

使用特权

评论回复
18
pkoko| | 2020-2-20 20:08 | 只看该作者
王紫豪 发表于 2020-2-18 19:51
希望完善完善,开源一下

把你的icore给他,渲染的运算在FPGA上,效果可能更好

使用特权

评论回复
19
王紫豪| | 2020-2-20 21:35 | 只看该作者
pkoko 发表于 2020-2-20 20:08
把你的icore给他,渲染的运算在FPGA上,效果可能更好

随时可以用

使用特权

评论回复
20
lihui567| | 2020-2-21 13:24 | 只看该作者
如果能达到25帧的话,可以做图像处理了,这个可以的话,应用非常广的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

11

帖子

1

粉丝