计算机那些复杂的三维动画,是怎么用0和1的代码构成的呢?

核心提示计算机也好,机械设备也好.都是在自身的逻辑体系内做事情的.比如高压锅,当压力达到一定的值,就会把锅盖掀开,那么可以认为:压力=f1,锅盖=open,这个过程不需要人为干预,只要这种条件满足,就一定会发生这种自然现象.记住,这里要强调自然现象

计算机也好,机械设备也好.都是在自身的逻辑体系内做事情的.

比如高压锅,当压力达到一定的值,就会把锅盖掀开,那么可以认为:

压力=f1,锅盖=open,这个过程不需要人为干预,只要这种条件满足,就一定会发生这种自然现象.

记住,这里要强调自然现象.因为我们无论做什么事情,都是在利用自然现象中体现的自然规律的.说白了还是事物的性质.

回过头来继续说.

条件满足,现象发生,这是一个必然.

对于计算机三维动画,也是很简单的原理,但是实现起来确实极端麻烦,否则也不会人类几百万年,到现在几十年才研究出这个东西来.

我不知道你得知识结构如何,我下面用打比方的说法给你解释一下.

首先说颜色,假定我们只需要表示256中颜色,如果用0和1表示的话,需要多长才能表达出来?

2的8次方=256.也就是说,我们需要8个长度的0和1就可以表达这些色彩.

假设,我们要8个导线,每个导线要么通电,要么不通电.通电的话,一般电压是5v,不通电,电压是0v.

这样的话,我们已经将色彩表现出来了.

假设,屏幕的分辨率是1024*800,那么就是说我们一共需要1024*800*8根导线,我们就可以在屏幕上显示256种色彩了.到此位置,显示色彩的问题解决了.

那么在那个像素上显示指定的颜色呢?很显然,还需要在上面的基础上在增加一个表达坐标的数据,坐标应该是(x,y)这种形式,就上面的来说横向有1024个位置,那么x的范围是0到1023.同理,纵向的范围是0-799.

与色彩数量相似,我们在表达坐标的时候,也要导线来输出电压.

现在针对横坐标:

0-1023,一共是1024个数,也就是2的10次方.换句话说,我们需要10根导线就可以表达横坐标了.

纵坐标同理,我就不算了哈.

现在我们已经做到了在指定位置显示指定颜色.换句话说,我们已经可以在屏幕上显示一幅图像了.

你可以显示自己照片了,呵呵.

还有一个问题.就是图像的变换.

我们学过动画原理就应该知道,所谓动画是由于人眼的视觉残留作用引起的.如果一部动画片的帧率是24幅图像每秒,就是说每秒钟要绘制24幅图像,我们看起来就是连贯的动画了,如果帧率是10,我们会感觉到动画变动非常大,或者说非常卡.

在计算机屏幕上播放动画就是每秒钟刷新多少次屏幕内容即可.

最后一个问题,关于三维.

其实三维是虚拟的,是一个数据结构在屏幕上的投影.这个屏幕是假想的一个逻辑概念.这里面要用到线性代数的知识.

假定一个模型,比如一个桌子,它是可以用坐标表达自身架构的.我可以描述从某点到某点是一条直线.某些直线和某些直线就是一个平面.每个平面对应一个贴图,也就是桌子的纹理.这种对应关系我描述出来,就是对桌子的建模.如果你有3dmax或者maya你就会了解到这些内容.

模型建好之后,要向一个假想的平面投影.这个投影就是我们看到的内容.怎么投影呢?用矩阵进行数据转换.最简单的数学例子就是一个向量经过矩阵相乘得到另一个向量.同样的道理一个向量组(也就是这个模型)通过矩阵进行相乘得到在另一个平面的投影.

这里我们把投影得到的数据放到一个存储空间存储起来.可以是内存也可以是显存.这些数据通过读取,显卡把这些数据按照坐标/色彩的方式告诉显示器的屏幕芯片.屏幕根据这种数据进行显示你就看到内容了.

整理一下:

每秒钟刷新屏幕-----数据转换/线性代数元算---放入显存----显卡读取---屏幕显示----每秒钟刷新屏幕.

上面这种说法很不严格.只是让你了解就行了.

可能你会问,为什么用导线传递数据阿.

答案是:导线通电和不通电就是2中状态.可以认为是1和0.我们都是这么认为的,以后的运算都是按照这种标准,所以大家都这么做,就不会出现数据问题.

其次,导线数量你可以看到,那是非常的多,可能达到几千万个.这怎么办?这就需要芯片内有这么大的数据容量保存这些数据,所以现在显卡或者内存都是1G,2G的了.否则生成的数据和传输就非常慢了,你在电脑上看到的动画,就非常的卡.卡.卡...而至于屏幕怎么显示,这又是另一个问题,这里提一下,屏幕,现在一般都是液晶的了,屏幕上的每一个点就是一个像素,每一个像素具有一定的色彩值,也就是显示色彩的范围,说白了就是颜色种类。每一个像素实际上就是一个液晶体,非常非常小,但是如果你用眼睛贴近屏幕去看,你能看到每一个像素都是一个方形的东西。屏幕的分辨率也就是横向坐标数量和纵向坐标数量,他们数量的多少共同决定了一个图像的显示精度。所以,同样的在低分辨率下看到的往往很粗糙,反之就很精细。显示屏的芯片负责从主板或者说显卡过来的数据进行处理,按照坐标、色彩的方式让指定的像素显示指定的颜色。这就是显示器的原理。可以看到,一个显示其屏幕,拥有多少个像素,其数量非常之庞大。所以全球能做显示器的公司很多,但是能做液晶的公司并不多,一般都是欧美、韩日和台湾这些比较发到的地方。

还有一个就是,数据怎么传输,一般在主板上都有专门的通信线路,可能是串口/并口/啥的,还有PCI啥的.反正就是用线缆去传输,同时传送几个位就可以.很显然,传输速度必须非常快才能让我们看到流畅的动画效果.

再次回答你得问题,0和1就是电压有和没有,是0v电压还是5v电压.?电路板会根据电压的情况进行模拟信号和数字信号处理.现在都是数字信号了.如果你再继续问,那你应该学学与非门这样的门电路,还有各数字运算电路,你就能知道为什么运算了.

总结:

需要电子元件本身的性质进行物理数据转换和传输.

需要线性代数和其他数学知识进行数据转换,得到我们要的数据.

最重要的,是各种电子元件的物理性质.人类利用的只是自然规律。计算机或者电子设备做的事情是人类设定的程序,做的实际上是各种数据的转换工作。转换工作来自于模拟电子和数字电子的知识?。

如果你未来希望摆脱当代技术的限制,你想让信号直接传到大脑,自己就能看见某些图像动画,而不需要眼睛来看,也是可以的。这取决于你传递的信号能否为大脑所感知和处理。

希望未来能有这样的人物出现再领风骚。

补充一点:

现代技术的最强动力是电子技术,也即是元器件的开发和改良,已经集成电路的设计制造。于是现在嵌入式设备极为强势。手机、平板电脑都是嵌入式设备。它们身上已经继承了大量的人类知识,比如电子、物理、化学、机械,这些共同构成了硬件设备本身,而运行于之上的软件,比如qq、360等,都是代码。代码本身就是你说的010101010这种东西,它们是按照约定的格式书写的内容。加载到硬件芯片中,更新指定的存储单元结构。于是软件就变成了硬件的一种形态。?

如果你想系统了解这些内容,建议学习:

线性代数(用于图像处理)

高等数学(微积分等内容,用于电子电路分析)

物理学(尤其是电子学,用于电路设计)

英语(用于编程开发)

心理学(用于设计硬件和软件,提高可用性)

算法(用于程序逻辑设计)

设计模式(用于可拓展的程序设计思想套路)

计算机组成原理、汇编语言、c语言(让你了解计算机的工作方式,以及软硬件如何交互)

如果有疑问,欢迎联系。

电子信息工程是干什么的?

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的

电子信息工程为一级学科,主要学习有关电子电路和数字信息处理方面的知识。

电子信息工程是一门应用计算机等现代化技术进行电子信息控制和信息处理的学科,主要研究信息的获取与处理,电子设备与信息系统的设计、开发、应用和集成。电子信息工程已经涵盖了社会的诸多方面。电子信息工程专业是集现代电子技术、信息技术、通信技术于一体的专业。

本专业培养掌握现代电子技术理论、通晓电子系统设计原理与设计方法,具有较强的计算机、外语和相应工程技术应用能力,面向电子技术、自动控制和智能控制、计算机与网络技术等电子、信息、通信领域的宽口径、高素质、德智体全面发展的具有创新能力的高级工程技术人才。

电子信息工程专业主要是学习基本电路知识,并掌握用计算机等处理信息的方法。首先要有扎实的数学知识,对物理学的要求也很高,并且主要是电学方面;要学习许多电路知识、电工基础、电子技术、信号与系统、计算机控制原理、通信原理等基本课程。学习电子信息工程自己还要动手设计、连接一些电路并结合计算机进行实验,对动手操作和使用工具的要求也是比较高的。譬如自己连接传感器的电路,用计算机设置小的通信系统,还会参观一些大公司的电子和信息处理设备,理解手机信号、有线电视是如何传输的等,并能有机会在老师指导下参与大的工程设计。学习电子信息工程,要喜欢钻研思考,善于开动脑筋发现问题。

随着社会信息化的深入,各行业大都需要电子信息工程专业人才,而且薪金很高。学生毕业后可以从事电子设备和信息系统的设计、应用开发以及技术管理等。

 
友情链接
鄂ICP备19019357号-22