投影式纹理映射(Projective texturing) 常用于在低端平台实现实时阴影效果,或实现一些类似幻灯片投射的效果。从其名字就可以看出,这种技术与普通的网格渲染流程是有关系的:​ 常规的网格渲染流程如左图,首先将网格从物体本地坐标转换到世界坐标,然后通过反转的摄像机世界坐标变换矩阵将其转换...
当你尝试VR的时候,第一件事就是尝试一下“投掷”。拿起虚拟的咖啡杯,把它吸上来。然后它扔出去,杯子(或者甜甜圈、球)开始在空中疯狂打转,飞向盆栽。入门的教程都会讲到。为何VR中的投掷效果差?上图中我在向对面的白板投掷易拉罐你的一些投掷飞的太远,又有一些飞的太低。总有那么一两个砸在被困扰的NPC上。也...
层次化标记可以成为整理概念和数据的非常实用的方法,游戏性标记系统是 UE4 用于声明和查询层次化标记的方法。引擎中的游戏性标记已经存在于多个版本中,但是在 UE 4.15 中,它的界面和性能得到了很大改进,因此现在就是开始使用游戏性标记标记和整理内容的好时机。但是,什么是游戏性标记呢?为什么需要使用...
背景      我们都知道,最初是作为3d游戏引擎而设计的,在4.3版本后才推出的UGUI和Sprite来实现2d游戏设计。在UGUI中使用的屏幕坐标系(以像素单位),但是在中依然使用的是3d坐标系中的(Unit浮点单位),在导入Texture2d时可以做像素到单位(unit)的转换设置。而世界坐标...
在使用引擎开发产品时,我们经常会使用环境光作为游戏场景的太阳光使用,环境光照是我们加入场景总体光照中的一个固定光照常量,它被用来模拟光的散射(Scattering)。在现实中,光线会以任意方向散射,它的强度是会一直改变的,所以间接被照到的那部分场景也应该有变化的强度,而不是一成不变的环境光。其中一种...
实时阴影技术的实现,不论在PC端还是在移动端,都显的非常重要,它也是衡量一个3D引擎渲染能力的一个指标,很多开发者或者是引擎开发者对于如何实现实时阴影的原理并不是很清楚,大部分人使用引擎都是在前人做好的基础上去调用接口,对于它的内部实现一无所知,在面试引擎的工作时就被暴露出来了。作为开发者要知其然知...
3.1组件 Component组件是Unity中最核心的一个概念,它是一切编程的基础。没有组件,也就没有了Unity编程。打开一个新Unity工程,我们在Project面板中右键可以直接创建出一个C#脚本。脚本的内容如下:using UnityEngine;using System.Collecti...
UE4的版本迭代Unreal Engine 在确保Editor以及cooked内容可以在多个不同的引擎版本之间通用这一块有很不错的表现。而且为了让程序员能够在这些不同的版本之间很方便的更改数据结构,Unreal Engine也提供了一些机制。这篇博客将通过GetLinkerUE4Version()及...
HTC Vive 是由HTC与Valve联合开发的一款VR头显(虚拟现实头戴式显示器)产品,想必大家都玩到很多VIVE上的VR游戏了,那么如何使用Unity来进行VIVE上的VR游戏开发呢?第一步: 导入SDK:SteamVR Plugin和Vive Input Utility第二步: 删除场景中的...
最近在做项目的优化工作,测试发现UI的开销占到了一半以上,所以先从他下手。 源码分析 NGUI有几个重要的类,UIPanel,UIWidget,UIDrawCall。其中UIPanel用一个静态链表保存游戏里的所有UIPanel,每个UIPanel在列表里的顺序是由depth决定的,注意这里是静...
引言在服务器中,数据库是必不可少的部分,作为数据存取中心,有时候的系统的操作涉及到数据的快速读写,在这种情况下,我们通常不会中规中矩地直接读写像MySQL的持久性数据库的数据,因为像MySQL这一类关系型的数据库不管是查询或者是修改数据库的内容都需要通过冗长的检索过程,势必影响效率,所以我们通常会选...
前言 在我们进行游戏战斗场景开发时,常常为了加强临场感,会在有爆炸或者撞击的时候加入震屏的效果,原理其实很简单,就是对场景主相机进行坐标和角度的变化。设计 在开始进行代码实操之前,我们先考虑一下大致的思路,主要操作的参数有震动的幅度(Transform的各项参数,通常只改变localPosi...
Unity编程标准导引-3.4 Unity中的对象池  本节通过一个简单的射击子弹的示例来介绍Transform的用法。子弹射击本身很容易制作,只要制作一个子弹Prefab,再做一个发生器,使用发生器控制按频率产生子弹,即克隆子弹Prefab,然后为每个子弹写上运动逻辑就可以了。这本该是很简单的事情...
在不同的Unity版本上,发现了泛型List无论使用foreach还是GetEnumerator均会产生GC的情况,这就有点尴尬了。由于它本身就是Mono编译器和相应.net库才能决定的原因,这就使得在使用系统提供的List时,又能最终摆脱GC的纠缠变得很困难。于是抓耳挠腮,翻出差不多六七年为Jav...
关于这个话题,网络上讨论的很多,我也收集了一些资料,都不是很齐全,所以自己亲自测试,这里把结果分享给大家。锚点foreach究竟怎么了?研究过这个问题的人都应该知道,就是它会引起频繁的GC Alloc。也就是说,使用它之后,尤其在Update方法中频繁调用时,会快速产生小块垃圾内存,造成垃圾回收操作...
欧拉角的定义在写这篇文章之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自维基百科的定义,我这里也引述一下:维基百科定义莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可...
音源组件(AudioSource)音源是场景中在某个位置的发声装置,好像一个喇叭。它播放着音频片段 (Audio Clip)。发出的声音将输出到声音监听器(audio listener),或者声音混淆器(audio mixer)。稍后再说混淆器,一般相机会默认自带一个AudioListener组件,...
01 产品经理绘制流程图给什么样的用户群设计的?用户想在你的VR 应用中获得怎样的目标(满足怎样的需求)?在最下面的结尾处则为用户将要完成的目标(获得的结果&满足的需求) 02 产品助理&策划 手绘线框图 03 产品设计师制作静态低保真原型把上面的草图在unity中做出来,比如平面上...
下面就一起来看看从2D效果还原至3D场景的具体步骤。2D原画转3D模型为了不耽误游戏主程的开发进度,在早期的草图阶段,我们为每个场景创建了非常简单的灰箱模型以便进行程序开发工作,而且美术设计也可以同时进行。早期的灰箱模型与最终模型的对比虽然最终的2D原画被用作3D场景建模的参考,但是在这个阶段需要注...
作为一个完全的新手,尝试去学习一个新的游戏引擎看起来会很可怕。你拥有了许多的学习教程、文件和建议,但是你却不明白怎样去开始或是以一个什么样的步骤去学习虚幻引擎4。你在不同的方向间摇摆不定,最终你会越来越迷惑和受打击。我花费了许多的时间去重构那些从零开始学习游戏引擎的方法。那些方法就是你最初需要关注什...