GDPU unity游戏开发 光照与地形

server/2024/11/15 6:15:04/

 在你藏着的那个角落,会有一束光照进来的。

地形绘制

1. 从资源商店里获取Mini First Person Controller、Terrain Sample Asset Pack和Realistic Tree 9 [Rainbow Tree]三个包。

2. 创建一个地形,将地形大小设置为200*200。

3. 利用后两个包的资源创建一个场景和地形,要求地形有起伏、有适当的地面纹理、有草和树。

4. 使用导入的第一个包中的First Person Controller Minimal预制体,实现场景的浏览。

5. 附件截图仅供参考,地形内容自由发挥。

先找到相应的包进行导入,然后在场景中新建一个地形。

 点击这个地形,你会在inspector面板中发现地形组件。首先这个是用来扩展地形的。

 

接着这个用于设置地形的长度宽度等属性。 

然后组件中间的带有笔刷的是用来绘制的, 分别为绘制地形、种树、种草。

 

这里是用paint texture点击edit layer,然后add layer选素材即可。接着tiling 中的size改一下贴图更明显。

然后选raise or lower terrain进行拉高或降低地形,选中你所需要的笔刷,调节大小及透明度等,在scene点击或拖动即可进行升高绘制,按住shift为降低。

 

还有一些刨洞及平滑山脉等,都是用笔刷绘制地形,方法差别不大。

点edit tree进行加树,然后笔刷大小、树的高度、密度这些调一下。

 

点击edit details选add grass texture,进行种草跟种花,注意颜色可以设置的。

通过地形组件进行摆放后,把下好的第一视角角色控制器放在场景中去。 

然后点击运行即可漫游你设计的地形了。

 

光照系统  

1. 新建一个场景,使用cube和plane创建一个四面墙的房子(有地板和天花板,只有一个方向无墙壁)。

2. 将全局光照菜单中的天空盒设置为None,并删除场景中的平行光。

3. 设置一个聚光灯,将附件中的校徽投影到正面墙上。

4. 将左边墙壁设置为自发光体,给右边墙壁加上合适大小的面光源实现照明,左右使用不同的颜色,然后给房间内加上light probe组并调节数量和位置,在房间中央放置一个球体,通过键盘控制球的左右移动来呈现灯光的变化。

简述几种不同的光源:

点光源: 点光源是从一个点向所有方向发射光线的灯光。它可以模拟球形光照效果,如电灯泡或蜡烛的光照。点光源的强度随着距离的增加而逐渐减弱。

平行灯: 平行灯是一种平行于某个方向发射光线的灯光,通常用于模拟太阳光。平行灯的光线是平行且不会随着距离的增加而减弱的,因此可以产生长距离的光照效果。

聚光灯: 聚光灯是一种具有可调节角度和强度的灯光,可以模拟手电筒或舞台聚光灯的效果。聚光灯可以投射锥形光束,光照范围内的物体会受到聚光灯的照射。

面光源: 面光源是一种模拟大面积光线的灯光,可以用来模拟窗户或灯带等广泛照明效果。面光源可以设置形状和大小,可以产生柔和、均匀的光照效果。

 

先搭建属于你的小房子,然后点击light面板中把默认的天空盒背景设置为none,接着把场景中的directional light删去,这时候,“天黑了,请闭眼”,看到黑色的盒子是正常的。

接着创建一个聚光灯,把图片改为cookie即剪影类型,然后在聚光灯的light组件设置好cookie及角度、亮度、范围等属性,移动位置,让它投到正面墙上。

然后就是设置自发光材质球,设置好emission跟hdr,把它拖到做左边墙。

 

 再选中右边墙给它加面光源组件,调整光源属性。

 

然后光照烘培贴图是作用于静态物体,把现有场景内的物体都可勾选static。 

 

那如果想让动态的物体也被烘培到怎么处理,这就要用到光照探针了。新建一个小球在你的小黑屋中央,这个不用勾选static。然后新建光照探针组,再选中它,在inspector面板可以选择编辑点移动等操作。

 

 

这里摆放的位置是有点说法的,但考虑到小白更想知道怎么发光,因此记一下,在明暗交界处放几个点,点越多越精确,但过多会影响性能,可以参考一下,这里用了三组探针。

看一下你的小黑屋吧。

 

然后进行灯光渲染,点击generate lighting。

通过键盘移动小球看小球灯光的变化,其实在scene面板手动拖也行,多移几下,你会发现小球受探针的影响也在不断发生变化,这个光照变化还是挺好看的。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class move : MonoBehaviour
{public float moveSpeed = 5.0f; // 移动速度void Update(){//默认全局坐标系float horizontalInput = Input.GetAxis("Horizontal");float verticalInput = Input.GetAxis("Vertical");Vector3 movement = new Vector3(horizontalInput, 0.0f, verticalInput);//默认局部坐标系transform.Translate(movement * moveSpeed * Time.deltaTime);}
}

 

实验心得

你的支持是更新的动力。 

 

 


http://www.ppmy.cn/server/42479.html

相关文章

ubuntu nginx 配置php 网站

1.安装nginx sudo apt-get install nginx 2.安装php 和php-fpm sudo apt-get install phpsudo apt-get install php-fpm 3.配置ngixn 进入/etc/nginxg/sites-enabled vim default //notice 这里只能有一个default的文件 放两个nginx会把报错 完整配置如下 ## # You sho…

Django5+React18前后端分离开发实战13 使用React创建前端项目

先将nodejs的版本切换到18: 接着,创建项目: npx create-react-app frontend接着,使用webstorm打开这个刚创建的项目: 添加一个npm run start的配置: 通过start启动服务: 浏览器访问&…

高稳定数显芯片防干扰抗噪数码屏驱动高亮LED驱动IC-VK16K33A/AA 最大13×3的按键扫描

产品型号:VK16K33A/AA 产品品牌:永嘉微电/VINKA 封装形式:SOP28/SSOP28 原厂,工程服务,技术支持! 概述 VK16K33A/AA是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据…

民国漫画杂志《时代漫画》第17期.PDF

时代漫画17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!

mysql 多表关联查询性能优化-同一sql不同的执行计划

一、问题背景 相同的sql,不同的日期,执行的时间差异很大,执行计划不一样。执行快时,30ms左右。执行慢时,15s左右。 二、分析结论 1、经过分析,发现不同日期下,sql的执行计划不同,驱…

解决SpringBoot使用@Transactional进行RestTemplate远程调用导致查询数据记录为null的bug

开启事务过程中,如果远程调用查询当前已经开启但没有提交的事务,就会查不到数据。 示例代码 import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import o…

OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用

码到三十五 : 个人主页 微服务架构中,服务之间的通信变得尤为关键。OpenFeign,一个声明式的Web服务客户端,使得REST API的调用变得更加简单和优雅。OpenFeign集成了Ribbon和Hystrix,具有负载均衡和容错的能力&#xff…

如何彻底搞懂迭代器(Iterator)设计模式?

说起迭代器(Iterator),相信你并不会陌生,因为我们几乎每天都在使用JDK中自带的各种迭代器。那么,这些迭代器是如何构建出来的呢?就需要用到了今天内容要介绍的迭代器设计模式。在日常开发过程中&#xff0c…