- 博客(44)
- 收藏
- 关注
原创 渲染-光照模型03 高光反射模型实现
1.高光反射模型(Phong光照模型)以下高光反射模型又被称为Phong光照模型高光反射模型颜色=(入射光线颜色*材质高光反射系数)(max(0,视角方向 * 反射方向)^光滑程度)其中,反射方向=光源方向-2 (表面法线 * 光源方向) 表面法线通常计算反射方向可以用内置函数reflect函数2.高光反射模型的unityShader实现与漫反射模型一样,实现方式同样有二,分别在顶点着色器和片元着色器中实现。2.1在顶点着色器中实现Shader "Unity Shaders Book/Ch
2020-11-02 20:35:43 466
原创 渲染-光照02 漫反射模型实现
1 漫反射光照模型光照模型中的漫反射部分计算模型(又称为兰伯特光照模型)如下:漫反射颜色=(光源 * 材质漫反射颜色)* max(0,表面法线 * 光源颜色)2 在unityShader中实现漫反射光照模型实现方式有二,在顶点着色器中实现称为逐顶点光照,在片元着色器中实现称为逐像素光照2.1 实现方式之一:在顶点着色器中实现:漫反射模型–逐顶点光照Shader "Unity Shaders Book/Chapter 6/Diffuse Vertex-Level" { Properties {
2020-11-02 20:03:23 477
原创 渲染-光照01 光照模型
模拟真实的光照环境过程:光源发出光–光被物体吸收、折射、反射–相机吸收了一部分光。光的散射包括折射与反射。为了描述反射,光照模型用高光反射部分来描述它;为了描述折射和吸收,光照模型用漫反射来表示。光照模型–计算光线进入某种材质(如粗糙表面或金属表面等)的物体后出射光线的数量和方向。常用的光照模型有BRDF模型,但这种模型只是看起来像,并不完全真实模拟,想更真实模拟光照,可以使用基于物理的光照模型。标准光照模型:在BRDF之前用的光照模型是标准光照模型,标准光照模型着眼于经过物体一次反射后直接进入相机
2020-11-02 19:45:54 262
原创 游戏开发Day07-08总结(C3)
关于第一人称控制器的制作准备工作1.新建一个胶囊体2.在胶囊体的子节点添加一个相机关键属性:1).Clear Flags:决定相机内除主要对象之外的空白部分用什么填充,一般用天空盒2).Culling Mask:掩膜,可以指定显示某一图层3).Projection:3D游戏一般用透视投影4).Field of View:视野角度5).Clipping Planes:剪切平面,显示...
2019-12-01 22:24:06 123
原创 游戏开发Day09总结(C4)
四种碰撞检测方式1.重写第一人称控制器脚本中的OnControllerColliderHit方法:改方法需要与碰撞体碰撞才会起作用。2.给第一人称控制器添加一个射线投射:射击游戏常用这种方式发射子弹3.重写碰撞物体脚本中的OnTriggerEnter方法。这种方法减轻主角身上脚本的负担,比较推荐。4.重写碰撞物体脚本中的OnCollisionEnter方法,与第三种方法的区别是它传...
2019-12-01 17:37:48 177
原创 游戏开发Day09
门的开关效果碰撞前准备1.网格碰撞器开销大,替换为Box2.添加tag3.添加刚体4.添加音频组件(用来开关门)5.取消动画自动播放效果
2019-12-01 17:13:25 144
原创 游戏开发Day08
小球跳动1.给小球添加刚体组件2.给小球的碰撞体添加物理材质(同时地面的碰撞体也要添加物理材质)随时间增加,小球颜色变化float t=0;void Update () { t += Time.deltaTime; if (t > 0 && t <= 2) { GetComponent<Renderer> ().material.color...
2019-11-27 19:40:05 123
原创 游戏开发Day07
关于First Person Controller的Inspector面板Tag,Layer和Prefab1.Tag标签:用来标识对象2.Layer:图层;只有位于同一层上的物体才能发生碰撞3.prefab:预制体的定位与修改Transforms控制位置信息。Character Controller1.slope Limit:控制一定角度的坡度可以攀登2.Step Offset:...
2019-11-26 19:26:47 129
原创 游戏开发Day06(C2)
创建小岛一 创建地形对象新建一个terrian对象二 地形属性工具1.Raise/Lower :用来提高或降低地形2.Paint height:用来绘制一个拥有初始高程的对象3.Smooth height:平滑4.Paint Texture:绘制纹理5.Place Trees:种树6.Paint Details:种草7.Settings:设置风速,基础地形等参数。三 添加雾...
2019-11-24 21:31:29 201
原创 游戏开发Day01-05总结(C1)
关于学习前两天在慕课网学的,课程讲得太粗糙,学习难度较大,换了我要自学网的课程,跟着一步步实现,好很多。关于做的第一个demo:射击小球由于Day01-02看的是慕课网视频,射击小球这个demo用了三天时间学完(Day03,04,05)开发流程如下:关于脚本生命周期所有脚本都继承自MonoBehaviour,当场景启动时,MonoBehaviour的生命周期如下:1.Awake:初...
2019-11-23 22:10:40 102
原创 游戏开发Day05
创建天空盒1.创建材质球2.更改shader属性3.添加6张材质图使用天空盒window–Lighting–Skybox碰撞监测给目标物体添加自定义脚本ColliderChecked:重写OnCollisionEnter方法bool flag=true; void OnCollisionEnter(){ if (flag) { GameObject.Find ("...
2019-11-23 19:45:24 127
原创 游戏开发Day04
创建一个子弹对象用来发射1.创建球体对象,给球体添加刚体,材质,然后添加到预制体中。2.在相机的射击脚本中重写重写update方法public Transform newobject;void Update(){ //1.MouseClickEvent if(Input.GetButtonDown("Fire1")){ //2.CreateObject Transfo...
2019-11-23 15:41:04 159
原创 游戏开发Day03
创建一个砖块下落的场景1.用一个立方体创建地面,调整sacle系数使其扁平化2.创建砖块立方体3.由于场景是黑的,所以创建点光源,更改点光源的位置和范围4.调整场景位置,选中相机,在gameObject菜单中利用AlignWithView使得相机对焦当前场景位置5.添加砖块下落效果:给砖块添加RigidBody6.给砖块设置材质:新建材质,调整颜色,再将材质添加到砖块上。7.导入资源...
2019-11-21 10:26:46 93
原创 游戏开发Day02
一 用键盘输入控制角色的移动在角色对应的脚本LxMovement中重写Update方法Debug.Log("Horizontal value:"+Input.GetAxis("Horizontal"));Vector3 direction = Input.GetAxis ("Horizontal") * transform.right +Input.GetAxis ("Vertical")...
2019-11-21 09:39:59 107
原创 游戏开发Day01
零 导入资源1.导入资源–打开文件。2.添加场景和角色。3.调整场景和角色位置一 角色移动1.新建c#脚本2.给角色指定脚本 LxMovement3.1在脚本中重写Update方法//Time.deltaTime = Time consumed in previousFrame-Time consumed in Current Frametransform.position =...
2019-11-18 09:10:18 101
原创 地图要素的单击事件--移动gis
一.添加点击事件MapViewTouchListener mMapViewTouchListener = new MapViewTouchListener(this, mMapView);mMapView.setOnTouchListener(mMapViewTouchListener);二 定义MapViewTouchListener类,即地图界面单击事件类class MapViewTo...
2019-08-22 14:41:08 608
原创 上传照片到服务器
一 目的:在app上上传图片到服务器二 过程1.设计布局1)在主界面MainActivities有两个按钮,分别是选择图片和上传照片;一个ImageView,用来放照片,一个TextView用来显示上传结果(是否成功) <Button android:id="@+id/selectImage" android:layout_width="fill_p...
2019-08-22 14:40:37 259
原创 app上传文本数据到服务器的实现
一.目标将app客户端用户填写的地点和描述信息上传到服务器。二.流程1.界面设计,两个TextView用来提醒用户该输入什么信息,两个EditText让用户输入文本信息,一个Button用来提交用户输入的信息到服务器 <TextView android:layout_width="wrap_content" android:layout_height...
2019-08-22 14:40:17 2059 2
原创 从服务器获取图片
一 APP端代码1.界面设计 一个ImageView,一个Button2.定义控件并通过id找到 private ImageView ivImg;private Button btnDownload; ivImg = (ImageView) findViewById(R.id.ivImg);btnDownload = (Button) findViewById(R.id.btnDown...
2019-08-22 14:40:02 2018
原创 app从服务器上获取文本,放到列表
一.目的从服务器上获取数据库里表格的每条信息,并在app中以列表表示,点击每条记录,可以出现详细信息二.步骤1.控件布局设计,添加一个ListView控件 <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:...
2019-08-22 14:39:45 333
原创 计算机网络-应用层之HTTP
一 应用层有哪些协议有HTTP,FTP等.暂时先重点了解一个很重要,经常见到的协议HTTP.二 HTTP协议1.与FTP的异同相同点1)都是应用层上的协议;2)都使用TCP而非UDP作为其支撑的传输层协议.不同点1)面向:HTTP是超文本传输协议,是面向网页的;FTP是文件传输协议,是面向文件的;2)端口:HTTP协议默认80号端口。FTP协议默认21号端口。3)状态:HTT...
2019-08-22 14:39:12 206
原创 数据结构与算法(四)十大数据结构之二--链表(下)
学完链表就要开始手撕代码了.一 常见的链表操作须掌握以下五种:单链表反转;检测链表中的环;合并两个有序链表;删除链表倒数第n个结点;求链表的中间结点....
2019-08-22 14:38:50 93
原创 实习Day03-设计模式(一)
零. 目标理解以下内容:1.为什么用设计模式2.什么是设计模式3.怎么用设计模式一. 为什么用设计模式对于简单的程序,很显然写一个简单的算法比引入本文说的设计模式要容易的多,也没必要用到设计模式。所以早期的开发人员都是面向过程编程,甚至在我们学习编程之初也是用面向过程的思想来写代码,这无可厚非,因为没必要用屠龙刀去杀鸡。不过随着市场需求的发展,简单的程序满足不了用户的需要,简单的程序...
2019-08-22 14:38:22 118
原创 反射
为什么用反射为了实现扩展性,有个时候传入参数是一个接口的实现类,那么就没办法知道他有哪些特定的字段,方法.这个时候就可以用反射.用反射可以知道任意一个类,对象,接口所有的属性和方法.怎么用?分为三种情况:传入的是一个对象,传入的是一个类,传入的是一个接口.传入一个对象...
2019-08-22 14:37:32 91
原创 注解
一 为什么用注解注解就是一种标记,可以在代码的关键结点上打上这些标记.程序在编译或运行时检测到这些标记就会执行一下特别的操作.最直观的是代码更简洁了,把一些复杂的操作封装起来,当程序检测到注解会执行这些复杂的操作.二 怎么用分三步:定义注解;配置注解;解析注解.定义注解新建一个Annotation文件@Retention(RetentionPolicy.RUNTIME)@Targ...
2019-08-08 09:20:35 85
原创 数据结构与算法(三)十大数据结构之一--数组
从这一篇开始正式学习十大数据结构.一 什么是数组用一组连续的内存空间来存储一组相同类型的数据.二 为啥用它(优点)因为内存空间是连续的,所以查找数据里面的元素很方便.三 在实践中发现的问题(缺点)缺点有二:插入和删除太低效了;不支持动态扩容.1.为什么低效如果在数组末尾插入元素还好,如果在开头插入元素,所有元素都要后移一位,平均的时间复杂度是O(n),删除元素同理.2.怎么提...
2019-08-05 11:28:25 99
原创 数据结构与算法(二)怎么判断算法的好坏(下)
通过上一篇的了解,我们可以用时间复杂度和空间复杂度来判断算法的快慢和占用内存大小,从而判断算法的好坏.应用时间复杂度时发现的问题不过在不同的情况下,同一算法在不同情况下,时间复杂度不一样.举个例子,从数组中找一个变量x,如果数组中第一个元素正好是要查找的变量 x,那就不需要继续遍历剩余n-1个数据,这个时候时间复杂度就是O(1);如果数组中不存在该元素,那就要把整个数组遍历一遍,时间复杂度就...
2019-08-05 10:22:42 295
原创 Android系列 异步通信
为啥要学多线程?先来看个场景:用户想同时做两件事,比如一边用网易云听歌,一边看网易云音乐的评论,总不能为了看个评论把歌曲停下来吧?用多线程的话就很容易解决这个问题,再开一条子线程,然后主线程做自己的事情,什么时候子线程吧事情做完了,再告诉主线程,主线程再把结果拿回来就行了。怎么实现多线程有五种方式,分别是1)继承Thread类2)实现Runnable接口3)Handler4)As...
2019-08-04 23:31:55 568
原创 Android系列(二)四大组件之Activity
一 Activity是怎么启动的?启动方式有四种:标准模式,栈顶复用模式,栈内复用模式,单例模式。1.为什么分为这么多模式?不同启动模式决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。等等,task?什么玩意儿?task是一个有栈结构的对象,它用来管理多个Activity。既然不同的启动模式有不同的特点,那就...
2019-08-04 17:57:33 315
原创 Android系列(一)四大组件
四大组件是啥?Activity,Service,BrocastReciver,ContentProvider。四大组件用来干嘛的?Activity负责展示的,service负责后台任务,BrocastReciver负责通信,ContentProvider负责进程间通信。四大组件怎么用?这个说来话长,接下来就针对每个组件展开详细的论述。...
2019-08-04 12:10:42 125
原创 Android系列(零)该学什么
虽然要学的内容很多,但总的原则就是抓重点。总结了一下要学的内容,分为六块内容:一 四大组件二 UI三 异步任务四 图片加载五 性能优化六 源码分析那么接下来每部分内容就简单带一下,点到即止。不会纠结太底层源码。...
2019-08-04 11:40:34 85
原创 数据结构与算法(一)怎么判断算法的好坏
怎么判断算法的好坏一 评价的的指标数据结构与算法最直观的目标就是要提高代码的性能。性能体现有两点:快和省。二 怎么做评价1.原始的评价方式那么代码写好了,怎么知道它够不够快,够不够省?最简单的方法,就是拉出来溜溜。官方点叫事后统计法。直接在把代码跑一遍,统计跑了多久,监控花了多少内存。这种方法看起来没毛病,不过真正去实践的话,会发现有两个弊端:1)我在我的电脑(i9处理器)代码跑了...
2019-08-03 23:15:53 1737
原创 数据结构与算法(零)是什么,为啥学,怎么学?
一.数据结构与算法是什么数据结构就是数据的存储结构。也就是数据怎么存,举个例子:一个一个存,还是一组一组地存?算法就是操作数据的方法。从头开始一个一个找,还是从尾开始找,都属于操作数据的方法。二.学它有啥用?1)代码的性能更好,程序跑得更快,更稳定。2)算法是一种方法,一种思想,可以用在生活的其他方面3)锻炼脑袋瓜子的思维能力。三.为什么把两个并列在一块,两者有什么关系?算法直接作...
2019-08-03 21:14:01 276
原创 计算机网络系列(五)网络层
周末在床上躺尸了一天,看电影,看小说,私宅的乐趣max。不过生活不会因此停止不前阿。。真是残酷阿。1.为什么需要网络层前文中有提及:网络层的作用就是在广域网中找到要传输的主机,并且找到传输最佳的路径。2.在网络层传输要遵循什么规则?换句话说,就是要遵守什么什么协议。最主要的协议就是IP协议。3.为什么制定IP协议其实就是为了寻址和路由选择。4.ip协议怎么规定的?写不下去。今天先到...
2019-08-03 20:53:51 98
原创 计算机网络系列(四)传输层(下)
今天这一篇结束传输层把,不能再拖了一 TCP的拥塞控制慢开始拥塞避免快重传前三块内容见计算机网络系列(三)传输层(中)快恢复紧接着上篇来谈谈快恢复。当丢包发生了,发送端一连收到三个重复的ACK,说明丢包了,发送端立刻快速重传,而同时使用的还有快速恢复算法。快速重传好理解,既然已经知道丢包了,那就尽快去弥补过失,那快恢复是在什么背景下产生的?在学习慢启动和拥塞避免算法后,我们已经知...
2019-08-03 00:03:22 142
原创 计算机网络系列(三)传输层(中)
上回说到TCP的四次挥手,接下来继续展开说。一 TCP的四次挥手1.怎么挥第一次挥手客户端得告诉服务器它想断开连接了,它做了两件事1)给服务器一个断开的信号,于是发送一个FIN信号;2)客户端进入FIN_WAIT_1状态,就是准备断开状态。第二次挥手服务器给客户端一个收到信号的反馈,另外光给反馈还不行,假如服务器这边还在给客户端传数据呢,都传一半了,客户端突然说要断开,那剩下一半咋...
2019-08-02 00:06:04 355
原创 计算机网络系列(二)传输层
一 传输层有哪些重要的协议TCP和UDP。二 这两种有什么区别在计算机网络系列(零)篇曾提到最早用得协议是UDP,后来发现UDP的不足,所以就开始用TCP.现在就来详细说说这两种协议。UDP最早的时候,数据传输发送的内容少,一个数据包就能发送全部内容,这个时候用UDP。UDP它对于应用程序传下来的报文不做处理,只添加UDP首部;尽最大可能交付,没有拥塞控制;是无连接的协议。它支持多对多...
2019-07-31 23:51:16 137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人