【心得分享】【讨论】3D 实现方法
scratch吧
全部回复
仅看楼主
level 10
(典型的方块
镇楼

最近学矢量数学(还用矢量数学做了个 Pen 2d引擎【未完成】),突然发现矢量和成像有着非常有趣的关系。
(i 和 j 单位向量控制这个图像)
(改变 j 就把图像弄歪了)
(i 和 j 一起改变可以旋转图像)
( 点击看这个图像 -->
desmos.com/calculator/ngpyd5r0qd )
(当时这个功能就是用这种方法做出来的)
@春暮竹园🌿 说这是 3d,虽然真的不是,但已经非常接近了。于是我这几天用一些零碎的时间做出了这个:
desmos.com/calculator/gzsopvnbdl
只要再加上填充算法和裁线算法,一个 3D 引擎就成了!而且原理其实非常简单!
我们在红色平面上有点 (3,3),因为这个点是在红色平面上的。而这个平面是用
i 和
j 为单位向量一切在这个平面上的点都是按照 i(1,0) 和 j(0,1) 计算出位置的。比如这个橙色的点在主平面上的位置就可以被写成 3
i + 3
j ,因为 3*(1,0)
+3
*(0,1)=(3,3)(有趣的来了)
当 j 变成 (-1,1) 时,橙色点的绝对位置为 (0,3) ,因为
3*i+3*j
=3*(1,0)+3*(-1,1)
=(3,0)+(-3,3)
=(0,3)
再举例:
当 i 为 (1,1),j 为 (-1.5,0) 时,点的绝对位置为
3
i+3
j
=3*(-1.5,0)+3*(1,1)
=(-4.5,0)+(3,3)
=(-1.5,3)
而当
i 为(1,1) ,
j 为(-1,1) 时,就完成了对平面以及点的旋转,因为i 和 j 的夹角始终呈现 90° 。
如果要拉长,就可以将
i 设为 (2,0),于是平面就被拉长,所有在平面上的点也被拉长。
还有就是 O 坐标,就是中心点。
改变 O 可以将平面平移。
3D 的原理也是这样。从平面到空间就只是多了个 k 矢量。具体算法我就不多说了,可以在下面讨论哦!
2018年10月25日 13点10分 1
level 11
前排

2018年10月25日 13点10分 2
前排提醒:坟贴勿回
2019年04月01日 10点04分
level 7
……等着dalao做出3d来
2018年10月26日 04点10分 4
level 8
一种降低画质达到最快速最形象的方法:
图片3d[滑稽]
(这个应该不用解释)
2018年10月26日 16点10分 5
level 5
同意楼主的看法。二维渲染引擎可以经过改进与调整后适应三维旋转,做出三维画笔。
2018年10月26日 23点10分 6
3维就是3个单位矢量 i j k 形成的空间,i j k 也形成三个平面(ij, jk, ik)。旋转3d图像就是旋转这3个平面。(我打算用参数方程 (cos t , sin t),这里 t 就是角度。)
2018年10月27日 00点10分
@射手joshua2006 同意,这样思考应该也是正确的。
2018年10月27日 01点10分
level 9
还行
2018年10月27日 00点10分 7
level 10
放上这个放了好久的 GIF [滑稽]
2018年10月27日 00点10分 8
@姓q的那位 四维了解一下。[滑稽]
2018年10月27日 00点10分
level 11
3d好评!
2018年11月02日 07点11分 10
level 11
妙哉!巧妙改变基底实现3d!
2018年11月02日 07点11分 11
level 9
3d帖不错,我基本就3d不会
2018年11月03日 10点11分 12
level 6
好了没
2019年04月01日 09点04分 13
挖坟再见
2019年04月01日 10点04分
吧务
level 15
坟贴勿回!
2019年04月01日 10点04分 14
1