网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月27日漏签0天
scratch吧 关注:17,983贴子:223,749
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 13回复贴,共1页
<<返回scratch吧
>0< 加载中...

Scratch中究竟如何实现3D

  • 只看楼主
  • 收藏

  • 回复
  • G-Yang
  • ScEr
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
吧友们好,好久不见。由于我个人原因,近半年不甚活跃。虽然我没时间发帖,但是我还是持续关注Scratch吧的动向的。
近日看到吧中对于Scratch中实现3D的方式有很多人在做研究,对此我发表一下我在研究3D时的一些成果,以供大家拓展思路。
我将这篇文章发表在了我们的工作室博客上,点击链接前往:
https://me.ble.ac.cn/index.php/archives/29/
祝大家研究有成,大家再不知道什么时候发的下个帖子见。
有问题可以回复本贴,如果我觉得有必要回答我会作答的。
PS:初十之前我一直在。


  • G-Yang
  • ScEr
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
复制版(推荐大家还是看博客去):
近日看到吧中对于Scratch中实现3D的方式有很多人在做研究,对此我发表一下我在研究3D时的一些成果,以供大家拓展思路。
基本思路
首先必须明确,3D这种东西不论那个平台的实现(已有的3D引擎不算,我指自己编写一个新的3D引擎)都是需要一定的数学基础的。如果你没有过多的去研究数学的话,我建议初二(含初二)以下的吧友不要闯3D领域,你会觉得无从下手。对于3D的研究最适合高中的吧友们,这时候不仅可以增长编程水平,而且对你的高中数学的学习也有极大的帮助。
对于3D的实现,最重要的是思路,公式及图像的形成原理大家都懂,我就不普及这种基础知识了。实现的思路有很多,这篇文章我会给你们提供我实现3D时使用的思路,并不会教你们那里怎么做哪里怎么做(这样我不如直接放源码出来),只是给你们一个可行的探索方向。
接着我们来看下一个3D实现的基础思路,我的这个思路很像计算机成像的思路。
用户脚本-->运算-->成像
是不是很类似于计算机成像?
二进制欲显示图像-->GPU处理-->显示器发光
没错,就是这样的。也就是这是我们3D成像主攻的3大块:用户脚本、运算、成像。我看过我们吧友的一些3D实现方法,他们都犯了一个大错:将这3大块揉和在了一起。这是大错特错的,这三大块应该是可以分别从你的脚本中独立出来的(也就是3个角色)。 这样有利于对脚本的维护,学过高级语言的吧友们就知道了,这样“块”状的脚本是特别利于开发的。
对于这3大块的开发顺序应该是先开发运算、再成像、最后用户脚本。为何这么说,拿计算机成像来看,目前的显示器只支持GPU输出的图像,所以你得先研发GPU,然后GPU研发完了显示器就顺理成章了,接着在于CPU配对接受二进制,不然的话先给你二进制显示不出来有何意义?对于3D实现同理。如果你直接开发成像你会发现你在不知不觉中也开发了运算,然而这样开发出来的运算是和成像揉在一起的,违反了我们的开发原则。
第一阶段
我们开发的第一阶段运算是最难啃的,这个阶段的开发犹如混水摸鱼。你并不知道你的运算结果是什么,你看不到图像,只知道运算而得到的数字。这要求对各类函数的确切掌握。那我们如何快速进阶呢?这个就很像矢量图了,大家可以在此处参考矢量图的实现。那我们要得到些什么数字?首先对于3D我们肯定得抛弃Scratch原有的二维坐标系统(xy),要自行再开发一个三位坐标系统(xyz),这个系统里要有长度单位、以及三维基本的三个轴。你3D里的每一个实体,都需要一个确切的坐标以及长宽高。这是第一步。第二步,你要确定一个视界与被观察实体的相对位置及相对距离,注意实体的坐标是固定的,但是视界不是固定的,所以我们需要一个实时相对位置与相对距离算法,通过这个算法得知一些数据(至于是什么数据,就看你数学学怎么样了)以测算角度来成像。
例如p1(作图抽象,请自行想象)里的正方体是实体,长方体是你的可视范围,那么红线延长出去的就是视界。接下来就要介入成像了。

P1
第二阶段
在成像方面,我比较推崇位图式与矢量式结合的思路。矢量式描绘实体边框,位图式给一个面填色。矢量方面并不难,你只要运算出了关键数据,一根线(刚开始不要介入曲线)的长度、大小、位置、角度自然都是可以通过公式测算的出来的。假设p2(作图抽象,请自行想象)是我们看到的图像,那么我们需要确定图上几个关键性的红点把他们连起来,如何确定这些红点可以参考红线(我称之基准线),确定这些在成像时没有基准线就是运算要做的,这些基准线必须从视界的一个角出发其终点就是我们要的关键点。成像难在位图式(建议大家不要马上研究位图式这一块),你需要研究在Scratch里实现MS-Paint里油漆桶的方式,研究出了这个,也就没什么难的了。但是实现个看似简单的油漆桶并不简单。

P2
第三阶段
啃完了两块大难关,接着用户脚本的研究自然就特别简单了。我们只要自定义函数后提交到运算创建实体,然后给成像模块提供运算结果成像就完成了。
后言
3D的实现方法听起来是简单的,但这也经过了我1年的探索而得。我也在Scratch官网发布了我最终的成果:一个完整的3D引擎。当时收到全社区的推崇并登上了首页,我并不打算给你们作品链接,因为中国人(我刚开始编程也是这样的)特别喜欢复制粘贴,然而这并不利于编程的学习,我并不想害了你们。我研究3D的时候连思路都没人给我。
接下来祝大家研究有成,大家再不知道什么时候发的下篇文章见。


2025-08-27 17:40:41
广告
不感兴趣
开通SVIP免广告
  • 一语清光
  • ScEr
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前排!


  • 夏午
  • ScEr
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
至少对某些人来说你在讲空话,没有任何算法实现,我知道,思路思路


  • 名字真难起
  • ScEr
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
图片全没了


  • shiguotao1139
  • ScEr
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你是如何水到11级的……


  • 遧傂鼝
  • 吧主
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
坟贴勿回!


  • 码小易少儿编程
  • ScNew3
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
码小易自主研发的有趣又生动的编程课,适合4~16岁少年儿童在小学、初中、高中全段学习。
学员可在创作游戏、软件、动画、故事的同时融合各学科文化知识,以快乐的方式玩转STEAM学科,
成为跨专业、跨学科的未来人才!http://www.91coding.cn/


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回scratch吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示