第七章:光与影
感受光影 计算机中没有光,只有数据结构和算法,光照和阴影在3D引擎中是两种不同的事物。 光照能够让物体面向光源的一面看起来更加明亮,而背光面则更加灰暗。Lighting.j3md材质的作用就是如此。 但是光照并不能让物体在地板、墙壁上投射阴影。在3D引擎中,绘制影子需要额外的计算,这将影响程序的性能(降低FPS)。 观察下面2个场景的截图,第一场景中只有光照,第二个场景中加入了阴影。加入阴影之后FPS降低了一半不止。 上图源代码:HelloLight ...
感受光影 计算机中没有光,只有数据结构和算法,光照和阴影在3D引擎中是两种不同的事物。 光照能够让物体面向光源的一面看起来更加明亮,而背光面则更加灰暗。Lighting.j3md材质的作用就是如此。 但是光照并不能让物体在地板、墙壁上投射阴影。在3D引擎中,绘制影子需要额外的计算,这将影响程序的性能(降低FPS)。 观察下面2个场景的截图,第一场景中只有光照,第二个场景中加入了阴影。加入阴影之后FPS降低了一半不止。 上图源代码:HelloLight ...
今天逛论坛,发现有人分享了一个Android Studio的jME3工程模板生成器,挺有意思。虽然比不上BootMonkey功能那么强大,但是贵在短小精悍。 原帖:Android Studio template project generator 运行这个小程序需要Java 8,因为它的界面是用JavaFX制作的。 用法很简单,输入Project名、Package名之后,点击“Generate” ...
作者:这一章内容不属于jME3入门必须弄懂的知识,如果你对jME3的材质系统工作原理感兴趣可以继续往下阅读,直接跳过下方内容也不影响开发。 但我建议至少读完“材质实例:j3m文件”,因为这会帮助你理解jME3 SDK中的材质编辑器的作用,并且在一定程度上减少编写Java代码的工作量, jME3的材质系统定义了2种文件格式:j3md和j3m。j3md来关联材质所使用的着色器程序,充当Java代码与Shader代码中间的粘合剂。j3m来保存一个具体的材质参数。 如果你对源代码感兴趣,可以去查看这2个组件中的文件: jme3-core 其中内置了一些最常用的j3md文件以及对应的着色器代码,Unshaded. ...
五色令人目盲 佛经将我们身处的世界称为“色界”,为什么呢?一则因为此界众生色欲重故;二则是此界众生主要靠眼睛看到的各种光影颜色来区分万物。 玩家想象中的3D世界其实根本就不存在,人们所看到的只是屏幕上的像素而已。程序员是专门欺骗玩家眼睛的大骗子,他们利用计算机辅助计算出屏幕上每一个像素的颜色,然后填充到屏幕上,让你产生错觉。 你看到了什么,一个三维方块? 或者是一头瞪着你的龙? 这些家具到底谁大谁小? 这就是本章的主题,障眼法。 jME3的材质 在jME3中, ...
声明:本章理论内容大量参考《DirectX 9.0 3D游戏开发编程基础》,素材都是我手绘的。 定义模型的形状 一个场景是由多个物体或模型组成的。一个物体可以用三角形网格(triangle mesh)来近似表示。使用网格来建立一个物体的过程,称为3D建模。3D世界中最基本的图元就是三角形,但是我们也会用到点、线、多边形等图元。 下图为在Blender中制作一个苹果模型的界面。 ...