- 博客(38)
- 收藏
- 关注
原创 #游戏unity-VR场景漫游#统一管理回调函数——观察者模式
我们不防把上面这样一件工作成为一个计数器——Timer(这个名字可能不太恰当),把需要被通知者成为观察者——Oberver,而像下载管理器这样的对象成为一个主题——Subject。首先,我们来定义观察者和主题对象。TimerObserverOrSubject.cs如下:using UnityEngine; using System.Collections; public cl...
2018-05-27 17:35:22
321
转载 #游戏unity-VR场景漫游#ScriptableObject
ScriptableObject的优点介绍——把数据真正存储在了资源文件中,可以像其他资源那样管理它,例如退出运行也一样会保持修改可以在项目之间很好的复用,不用再制作Prefab那样导入导出在概念上有很好的fit 之前的做法一般都是[Serializable]一个class,然后在面板里配数据,做成prefab,但这种方法没有上面的三个优点。感觉今后如果有类似通过Serializabl...
2018-05-27 17:25:51
419
原创 #游戏unity-VR场景漫游#shader之消除纹理重复感
当游戏中地面的纹理都是重复的时候,会看起来很假,而且影响沉浸感。 很明显地可以看出来有固定的pattern。这主要是因为每个0~1的tile内的纹理都是完全一样的,iq提出了两种方法来改良,使得看起来不会这么有重复感。当然,这两种技术都会成倍增大采样的次数,同时也有一些额外的计算,但效果还是不错的,在能够承受这种cost的时候还是很值得一用的。对每个tile使用的纹理进行随机的翻转和平移...
2018-05-19 21:40:12
2254
原创 #游戏unity-VR场景漫游#shader之地形纹理合并
一般情况下,在游戏中只是单纯的用单一纹理来平铺地面,看的时间长了,不可避免的会出现眩晕感和疲惫感,还会降低游戏的逼真性。所以,有的时候我们需要用有限的纹理融合在一起,形成多种新的不同的纹理图片。这就是地形纹理合并。这个shader主要会利用两张纹理。一张自然是包含了9种地形纹理的atlas纹理,就称为BlockMainTex 以及一张负责混合纹理的BlendTex: 这张纹理是...
2018-05-19 21:09:08
1364
1
转载 #游戏unity-VR场景漫游#Unity中的雾效模拟
这一篇博客主要介绍如何实现shader中的雾效模拟特效。 其实在unity中有相关的组件,可以开启全局雾状特效,在Edit->Render Settings里配置如图—— 上图包含了一些设置:雾的颜色,模拟雾采用的方法,雾的浓度(只在采用指数方法时有用),受雾影响的距离起点和终点(只在采用线性方法时有效)。其中,比较重要的是模拟雾采用的方法,即“Fog Mode”这一选项。它可以选择...
2018-05-13 17:35:31
830
转载 #游戏unity-VR场景漫游#CNN卷积神经网络
一、概述典型的深度学习模型就是很深层的神经网络,包含多个隐含层,多隐层的神经网络很难直接使用BP算法进行直接训练,因为反向传播误差时往往会发散,很难收敛CNN节省训练开销的方式是权共享weight sharing,让一组神经元使用相同的权值主要用于图像识别领域二、卷积–特征提取卷积核(Convolution Kernel),也叫过滤器filter,由对应的权值W和偏置b体现...
2018-05-11 19:33:12
1056
原创 #游戏unity-VR场景漫游#手柄轨迹识别中的神经网络
人工神经网络以下摘自百度百科—— 人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代...
2018-05-06 16:46:11
618
原创 #游戏unity-VR场景漫游#手柄轨迹图形识别结果的优化思路
根据上一篇博客的讲解后,当我们用手柄移动某一特定轨迹后,就可以在本地得到一个二进制的txt文件。实例如下——采集一个圆形的手柄轨迹: 那么,其实,在完成对每一帧位置坐标的二进制存储后,在运行的时候,就会发现一个问题——我们再一次的手柄轨迹很难做到与我们存储的二进制文件中的数据完全相同,也就是说,在实际运行中,很难做到精准的识别出存储的图形。 为了解决这种问题,针对每一种图形,我们要多采集几...
2018-05-03 20:13:43
723
原创 #游戏unity-VR场景漫游#将数据存储为本地二进制文件
意识到识别了手柄运动方向后,需要记录下来每一帧的运动位置坐标,只有这样,才能进一步对轨迹围成的图形进行分析。那么,最方便的就是存成本地二进制文件。 于是学习了有关聊天记录的本地二进制存储的博客,只需要把其中的聊天记录的数据类换成位置坐标的数据结构就可以了。储存为本地二进制文件的几种方式—— 一、Stream::Write,Stream::WriteLine这个方法是打开数据流就开始...
2018-04-26 22:08:29
402
转载 #游戏unity-VR场景漫游#消息解耦
最近在学习一位博主写的关于消息解耦的代码操作,以下是我关于那篇博客做的学习笔记——消息解耦重写了关于消息发送机制方面的代码,其中建立主消息队列、回调队列、延迟消息队列,建立消息之间的订阅机制,代码具体如下:namespace SLQJ{ /// <summary> /// 消息分发,解耦 /// </summary> p...
2018-04-24 21:57:42
221
原创 #游戏unity-VR场景漫游#手柄按键的触发
先给出手柄按键的大致示意图—— 按键控制的脚本格式大致如下——using UnityEngine;using System.Collections;public class shoubingkongzhi : MonoBehaviour { /// /// 手柄 /// SteamVR_TrackedObject tracked;...
2018-04-21 09:52:03
1823
原创 #创新实训#VR漫游项目汇报3
在这次项目中,我的任务是实现手柄轨迹的监测,并判定它围成的形状;其中就需要用到手柄的方向参数,但HTC vive的官方API中的Touchpad的方向只是很粗略的大方向,达不到我想要的较为细致的方向判定。所以,进行运动方向的判定成为了一个主要问题。我认为路线判定方法有两种——射线追踪判定,以及,获取起点与终点,判断他们之间的矢量方向。实现原理原理很简单,就是根据路线,在一定时间...
2018-04-21 09:43:15
404
原创 #游戏unity-VR场景漫游#游戏中的优化(二)
这篇文章接着上一篇的内容进行整理。像素优化像素优化的重点在于减少overdraw。之前提过,overdraw指的就是一个像素被绘制了多次。关键在于控制绘制顺序。Unity还提供了查看overdraw的视图,在Scene视图的Render Mode->Overdraw。当然这里的视图只是提供了查看物体遮挡的层数关系,并不是真正的最终屏幕绘制的overdraw。也就是说,可以理解为它...
2018-04-14 15:25:06
634
原创 #游戏unity-VR场景漫游#游戏中的优化(一)
基于之前制作项目的经历教训——没有报错的代码合在一起整体运行的时候就运行特别卡,深刻认识到了项目优化的重要性;VR游戏的流畅度是影响用户体验的一个很重要的因素,而且,三区的场景模型也是一个有很多面的模型,运行起来会相当占资源,为了解决运行卡顿的问题,就必须在代码以及系统的搭建中时刻注意对资源的合理使用。 所以,我进行了关于游戏优化的相关学习,并将好的博客内容进行了整理。影响性能的因素...
2018-04-14 14:55:46
1887
原创 #游戏unity-VR场景漫游#关于VR以及项目基础
#游戏unity-VR场景漫游#关于VR以及项目基础近年来,随着互联网的发展,VR的发展及其迅速,结合unity平台,可以制造很多不同的VR项目。 目前市场上大概有三种类型的VR硬件设备:第1种:必须接上电脑的沉浸头戴式设备(HMD),这种设备的代表就是Oculus Rift,其优点在于沉浸体验很好,但由于是有线设备,其有限的移动范围是个障碍,因此特别合适于双脚不需移动的应用。设备本身价...
2018-04-11 13:09:56
1517
原创 #游戏unity-VR场景漫游#有关VR环境的搭建【HTC vive】
#游戏unity-VR场景漫游#有关VR环境的搭建【HTC vive】需要解释的一点是,上一周赶上清明假期,我们团队确认了分工和计划后,就各自开始行动了,以至于忘记了更博客,差的两篇博客都会在这一周补上的,以后也不会出现忘记更博的事情了!现在先介绍一下HTC vive的装备包括哪些设备,见下图—— 有关HTC vive设备的安装以及硬件配置,可以参照这个博主的博客传送门 个人认
2018-04-09 14:49:39
1546
转载 C# Enum,Int,String的互相转换
1、Enum–>String(1)利用Object.ToString()方法:如Colors.Green.ToString()的值是”Green”字符串; (2)利用Enum的静态方法GetName与GetNames: public static string GetName(Type enumType,Object value) public static string[] Ge
2017-07-28 20:51:50
288
原创 <unity>关于快速的数据读取和存储——JSON(qwq)
从标题的小卖萌就可以看出来这篇是博主倾注了心血的爱的干货٩(๑❛ᴗ❛๑)۶转载请标明出处啰啰嗦嗦的背景交代这些天在写交易系统的时候,需要用到很多物品,它们还是有分类的,不同的有不同的描述。自己第一个想到的就是定义一个物品类,在一个结构体里把所有需要的属性(类别、名字、描述、加成buff啥的)都放进去,大概又可以写好多行了2333。这种方式也是我之前做过的方式,但这一次,博主多思考了一下,能不能把这些
2017-07-28 20:47:56
10887
2
原创 <shader>编程中遇到的问题-too many texture interpolators would be used for ForwardBase pass
今天在进行地形着色器纹理混合的编程过程中,出现了一个报错 后来才发现是,因为在脚本中Input里设置的材质的uv变量过多,当前版本的shader model不支持造成的。将shader model改为更高的版本即可解决。比如我现在用的#pragma target 3.0不支持3个材质,改为#pragma target 4.0就行了。相对应的,target数目写成自己需要的就好了。如果非要用#p
2017-07-22 21:20:38
4165
4
原创 <Unity>Shader的内置值
Unity provides a handful of builtin values for your shaders: things like current object’s transformation matrices, time etc.Unity为你在编写shader是提供了少量的内置变量:类似 当前物体的变换矩阵,时间等。You just use them in ShaderLab l
2017-07-21 12:07:42
372
转载 unity3D中Shader的分类和区别
Shader按管线分类一般分为固定渲染管线与可编程渲染管线 (1)固定渲染管线 ——这是标准的几何&光照(Transforming&Lighting)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控 制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。功能比较有限。基本所有的显卡都能正常运行。 (2)可编程渲染管线——对渲染管线中的顶点运算和像素运算分别进行编程处
2017-07-21 11:08:00
2565
1
原创 计算机图形学笔记---Cg语言(二)
关于语义语义词,表示输入图元的数据含义(是位置信息,还是法向量信息),也表明这些图元数据存放的硬件资源(寄存器或者纹理缓冲区)。 顶点着色程序和片段着色程序中Varying inputs 类型的输入,必须和一个语义词相绑定,这称之为绑定语义(binding semantics)。 在高级语言中,数据从接口的一端流向另一端依靠了指针信息(提供数据存放的内存位置);在Cg中,数据通常暂存在寄存器里,
2017-07-19 11:08:53
344
原创 计算机图形学笔记---Cg语言(一)
在其他的profiles中,for和while循环只有当知道确切循环次数时才能被使用;但其实没有确切把握不用在低级的profiles中使用 被编译的着色程序文件名必须加上.cg后缀 注意一个难以查明的编译情况:着色程序中某些变量没有为最终输出做出贡献,则编译会将该部分代码忽略;如果是从外部宿主程序中传入的变量,且在着色程序中没用,则宿主程序传入变量的接口函数会报错“找不到该变量”较为少见的情况
2017-07-19 11:02:26
704
原创 mapbox for unity 再现真实地图
说到游戏中的真实地图,大家脑海中浮现的第一款游戏应该都是火爆全球的AR游戏《Pokémon Go》吧。今天这篇教程将为大家介绍Mapbox Unity SDK,能够在游戏中获取真实的世界地图,或是根据真实地图生成游戏中的体素世界。这些地图数据可以预先存储在游戏或应用中,也可以在运行时动态生成。注册官网账号打开mapbox官网(传送门)账号注册成功并登录后,点击Get Started 并选择Unity
2017-07-17 20:52:26
9128
原创 计算机图形学笔记---shader language
用shader language写的程序叫着色程序,着色程序又分为顶点着色程序(vertex shader program)和片段着色程序(fragment shader program ) 前者负责顶点坐标转换(几何方面的运算),后者负责像素颜色计算;前者的输出是后者的输入;二者同时存在,相互配合 也可以只有顶点着色程序,这样的话就用硬件默认的方式进行自动插值; 如果图形硬件使用Goura
2017-07-16 20:19:20
562
1
原创 计算机图形学笔记---GPU图形绘制管线
暑假到啦,大三博主选了可视化方向,就想着在暑假提前进行学习啦。而且哦,博主前几天偶然看到了一个研究生小姐姐写的关于shader的特别棒的博客教程,简直像个天使!博主觉得如果自己在学习过程中记录下的笔记也能帮助到其他人,给大家一个大致的框架与总结,那就再好不过了。所以,出于抛砖引玉的本意,博主觉得不能这样懒啦!要更博,努力记录下重点,同时也能激励下自己嘛φ(>ω<*) 好的,我们一起加油! 呃作为
2017-07-16 11:04:50
1004
原创 #游戏unity-音之国度#战斗系统优化
#游戏unity-音之国度#战斗系统优化起初,在之前的博客中我们已经讲解过了回合制战斗系统的主要代码逻辑,但是这种代码逻辑并不是什么游戏都适用的;就像悲惨的博主,写了各自人物和敌人的代码,在最后写有关协程的控制代码的时候,才心酸的发现,这样安排代码逻辑,也能达到博主想要的交替战斗控制权的效果,但是代码很绕很不具有可读性。博主之前是这样想的——在每一个模型上绑定两个脚本,一个是作为主权进行主动攻击的P
2017-06-18 23:29:39
411
3
原创 #游戏unity-音之国度#战斗系统中图鉴UI
#游戏unity-音之国度#战斗系统中图鉴UI在对战时,如果对面出现了不熟悉的音符兽,我们希望可以查询对面的音符兽情况,所以就需要一个战斗图鉴。我们需要实时点开进行查询。所以做了一个可拖拽的图鉴UI,如下图所示(背景图是随意找的)—— 这个图鉴框是可拖拽的,按住右下角的三角可以对UI进行大小的等比例调节,在战斗时并不会影响战斗效果。 接下来,我们来详解是如何做成的; 首先当然是新建UI系统
2017-06-18 13:24:30
1233
原创 #游戏unity-音之国度#战斗系统中的实时显示状态
#游戏unity-音之国度#战斗系统中的实时显示状态在游戏中能够实时显示回合制次数的一般的做法就是调用GUI中的Label,还可以添加一些艺术字的效果。我也是那么做的,但是博主想到,能不能做一个类似控台的样子的界面实时输出角色状态呢。于是就有了这篇博客。 既然是模仿控台的输出,那么就是要用代码实现滚动条。 其实本质就是写一个面板,往上面写字,并且与代码实时连接起来就好啦。 原理很简单,上代码
2017-06-12 01:10:53
292
原创 #游戏unity-音之国度#战斗系统中的回合制
#游戏unity-音之国度#战斗系统中的回合制转载需标明出处在上一篇博客中,我们介绍了实现回合制的代码中的新内容——协程,这篇博客我们就真正的来实现一个回合制游戏;首先,一般的回合制游戏都是自己与敌人接连出招,然后当一方血量为0是终止战斗,而我们的音符兽(主角)有不同的类型,相对应的就有不同的种类特点——例如,有的就会在受到攻击后,自动进行反击,而反击的血量在一个较低的数值范围内随机产生,基于这样的
2017-06-09 00:12:07
1755
原创 #游戏unity#协程
#游戏unity#协程因为对战系统主要实现的是回合制的战斗,是卡牌中常用的方式;而博主从没有制作过回合制的游戏,所以去网上查了回合制游戏的设计思路与整体框架,博主认为回合制游戏最重要的点就是交替攻击,宏观来看,也就是将双方的攻击作为一个循环,当其中一方血量为0时,循环终止,对战结束。在其中,博主偶然发现了一个新鲜的玩意,可以较为直观简洁的实现交替攻击,那就是——协程!这篇博客,博主先详细介绍协程(也
2017-06-08 17:03:35
518
原创 #游戏unity-音之国度#战斗系统中的血条
#游戏unity-音之国度#战斗系统中的血条原创禁止转载!现在博主先给大家大致展示一下AR游戏“音之国度”的大致框架和流程—— 启动游戏—>登陆界面—>以滚动文字和图片的方式讲述故事背景—>加载界面—>进入新手引导系统并得到音符兽图鉴—>打开摄像头扫描卡牌以确定自己的音符兽 接下来进入主界面,游戏正式开始 在主界面中可以选择进入对战或养成,其中一侧出现自己音符兽的模型。 对战系统会与其他的玩
2017-06-03 23:27:42
466
原创 #游戏unity-音之国度#实现语音控制
#游戏unity-音之国度#实现语音控制语音控制的基础是语音识别,而语音识别又分为大致如下几个阶段:初始化->开始录音->结束录音->上传音频->语言识别。建议同学可以去看团队中朋友的博客进行学习语音识别的详细解释 http://blog.csdn.net/qq_33999892 这样我的博客也比较容易看懂;这里就不做赘述了。
2017-05-22 23:06:39
1779
5
原创 #游戏unity#AR中奇妙的虚拟按钮
#游戏unity#AR中奇妙的虚拟按钮先说点题外话,博主在调试项目的时候,什么设置也没有改,突然就运行保存,说vuforia的实例没有初始化,去网上也没有查到错误原因,吓的博主去脚本里找了好久qwq后来在群里问了相关有经验的人才知道——这只是unity打开太久的一个正常反应(???表示无奈),关闭重新打开unity就好了,当时的报错如下图(大家遇到这个错误不要怕啊,,) 好了言归正传,博主昨天很奇
2017-05-19 13:15:46
6134
11
原创 #AR游戏--音之国度#初次简单的测试
#AR游戏–音之国度#初次简单的测试在之前的文章中,博主带大家了解了怎么构建AR手机游戏平台和在官网上注册资源文件。博主用的unity版本是5.5,想要学习unity的同学从官网上下载最新版的就好啦,不用破解不收费很方便的哦~ 好了,闲话不多说,现在基础的都已经设置好了,就要真正开始制作我们的AR声音召唤式回合制对战卡牌手游啦(呃形容词有些多qwq)——音之国度! 奥我们团队的名字是ING_GAM
2017-05-14 00:30:18
579
原创 #游戏unity#AR手机游戏的平台构建(下)
## #游戏unity# AR手机游戏的平台构建(下)##1.vuforia上注册项目文件在vuforia上创建一个属于你的项目 找到如下选项 点击Add License Key,并且勾选Development选项,输入项目名称(是英文的哦),同意协议,就可以看到已经有创建好的项目了哦。我的项目名称是Sound 接着,要点击你的项目名,把其中的密钥复制到你可以找到的一个记事本文件中
2017-05-12 17:13:38
861
原创 #游戏unity#AR手机游戏的平台构建
#游戏unity#AR手机游戏的平台构建在上篇博客中,博主向大家简单又通俗易懂的介绍了AR与AR在手机游戏领域的应用,而这篇文章,博主将教大家如何构建一个AR手机游戏平台。要知道,只有构建平台后,我们才可以开始进行AR游戏的制作。AR移动端开发平台我们希望的移动端开发平台应该是可以移植到unity中的,因为具体游戏系统和功能的实现是在unity中完善的。下面介绍几种常见的AR移动端开发平台。1.
2017-05-06 23:15:25
952
原创 #游戏unity#初探AR
#游戏unity#初探AR增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。
2017-05-05 22:40:07
772
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人