3D游戏设计大作业

2023-11-18

Unity大作业——粒子系统效果

一、前言

1、此篇文章记录了2022年第二学期中山大学软件工程3D游戏与编程的大作业。本次大作业可选择范围众多,最终我选择了粒子系统效果作为了本次大作业的主题。

2、一个粒子系统可以模拟并渲染许多称为粒子的小图像或网格以产生视觉效果。系统中的每个粒子代表效果中的单个图形元素。系统共同模拟每个粒子以产生完整效果的印象。
在这里插入图片描述


二、要求

1、使用粒子流编程控制制作一些效果。

2、​ 最终作业附加要求:必须带一个控制组件,控制粒子呈现效果


三、创建过程

1、本次作业是以墓地探险为主题,对照明的火炬进行的控制,将其塑造成一个生动的火焰粒子系统。

2、首先导入一个火炬中火盆的模型图内的Lantern_01
在这里插入图片描述


3、导入后在Lantern_01的目录下创建光源Point Light,更加适合火焰的照明真实效果,下面的Object系列为组成火盆的底下组件。
在这里插入图片描述


4、添加粒子系统,点击整体的Lantern_01,添加Effects—>Particle System
在这里插入图片描述
初步所示会飘起如雪花一样的粒子
![在这里插入图片描述](https://img-blog.csdnimg.cn/596b7cb5a1294a639d3a431fa6ee4fee.png


5、最后在这里进行更多的调整,详情见说明
在这里插入图片描述


调整每分钟放出来粒子数量的范围,还调整了粒子系统的角度与半径大小,使其符合火焰的标准


在这里插入图片描述


载入火焰的图片,并且按照4*4的方式来读取每个火焰的形状,还可以调整Min Paeticle Size和Max Particle Size来控制随机生成每个火焰粒子最大和最小的区间,使得非千篇一律,更加真实不被看出是贴图。

在这里插入图片描述

在这里插入图片描述

6、其他背景
为了凸显主题和灯光效果,特地将主灯调暗,增加火焰的真实感和灵动感。
还铺设了草坪和种树,将其更好的融入主题环境
在这里插入图片描述

7、粒子系统检视面板详细说明。

点击粒子系统检视面板的右上角的“ ”来增加新的模块。(Show All Modules:显示全部)

初始化模块:

发射模块(Emission):

发射器形状模块(Shape):

存活时间的速度模块(Velocity Over Lifetime):

存活期间的限制速度模块(Limit Velocity Over Lifetime):

存活期间的受力模块(Force Over Lifetime):

存活时间的颜色模块(Emission):

颜色速度模块(Color By Speed):

颜色(Color):

存活时间的大小模块(Size Over Lifetime):

大小(Size):控制每个粒子在其存活期间内的大小。曲线,随机双曲线或随机范围数值。

存活时间的大小速度模块(Size By Speed):

存活期间的旋转速度模块(Rotation Over Lifetime):

以度为单位指定值。

**旋转速度(Rotational Speed):**控制每个粒子在其存活期间内的旋转速度。使用常量,曲线,2曲线随机。

旋转速度模块(Rotation By Speed):

旋转速度(Rotational Speed):**用来重新测量粒子的速度。使用曲线表示各种速度。
速度范围(Speed Range):为min和max值用来定义旋转速度范围。

碰撞模块(Collision Module):

为粒子系统建立碰撞。现在只有平面碰撞被支持,这个将很有效率的做简单探测。

**平面(Planes):**Planes被定义为指定引用。可以动画化。如果多个面被使用,Y轴作为平面的法线。

子粒子发射模块(Sub Emitter):

可以生成其他粒子系统,用下列的粒子事件:出生、死亡、碰撞。

出生(Birth):在每个粒子出生的时候生成其他粒子系统
死亡(Death):在每个粒子死亡的时候生成其他粒子系统
碰撞(Collision):在每个粒子碰撞的时候生成其他粒子系统。重要的 碰撞需要建立碰撞模块。见碰撞模块

纹理层动画模块(Texture Sheet Animation):

渲染器模块(Renderer):

渲染模式(Render Mode):


四、编程

可控制几种火力调节和风向的调节代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class controll : MonoBehaviour
{
    private ParticleSystem ps;
    private Light PointLight;
    private ParticleSystem.ForceOverLifetimeModule forceMode;
    void Start()
    {
        ps = GetComponent<ParticleSystem>();
        forceMode = ps.forceOverLifetime;
    }
    void OnGUI()
    {   
        if( GUI.Button(new Rect(10 , 30 , 50 , 30) ,  "东风") ){
            ps.Stop();
			var fo = ps.forceOverLifetime;
            fo.x = new ParticleSystem.MinMaxCurve(2.5f, 3.5f);
            //fo.x = 3;
            var main = ps.main;
            main.startRotation = new ParticleSystem.MinMaxCurve(-Mathf.PI / 180 * 40, -Mathf.PI / 180 * 50);
            ps.Play();
		}
			
		if( GUI.Button(new Rect(10 , 70 , 50 , 30) ,  "西风") ){
			ps.Stop();
			var fo = ps.forceOverLifetime;
            fo.x = new ParticleSystem.MinMaxCurve(-3.5f, -2.5f);
            //fo.x = -3;
            var main = ps.main;
            main.startRotation = new ParticleSystem.MinMaxCurve(Mathf.PI / 180 * 40, Mathf.PI / 180 * 50);
            ps.Play();
		}
        if(GUI.Button (new Rect (10, 110, 50, 30), "大火")){
            PointLight = GetComponent<Light>();
            PointLight.range = 15;
            PointLight.intensity = 4;
            
            ps.Stop(); // Cannot set duration whilst particle system is playing
            var main = ps.main;
            main.gravityModifier = -1.3f;
            main.simulationSpeed = 1.0f;
            var em = ps.emission;
            em.rateOverTime = 25;
            ps.Play();
        }
        if(GUI.Button (new Rect (10, 150, 50, 30), "小火")){
            PointLight = GetComponent<Light>();
            PointLight.range = 8;
            PointLight.intensity = 2;
            ps.Stop(); // Cannot set duration whilst particle system is playing
            var main = ps.main;
            main.gravityModifier = -0.6f;
            main.maxParticles = 10;
            main.simulationSpeed = 0.8f;
            var em = ps.emission;
            em.rateOverTime = 10;
            ps.Play();
        }
    }
}

五、地址

项目地址:https://github.com/buzhanpeng/bzp_Unity.git
视频地址:https://b23.tv/hxtdmFZ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D游戏设计大作业 的相关文章

  • 基于 Q3DScatter 的自定义图表,QCustom3DItem 运行缓慢

    我想制作一个带条形的 3D 图表 条形颜色取决于其大小 两个都Qt 条形图和散点图类型 https doc qt io qt 5 qtdatavisualization overview html接近我正在寻找的东西 我最终创建了一个基于的
  • 如何使用更少的包绘制二元正态分布的表面和轮廓

    我将绘制二元正态分布的 3D 曲面及其轮廓 可以是任何二元正态分布 我想用persp and contour在我的画中 我在网上搜索了一下 但发现了很多方法 大多数人都使用过一些软件包 但我想以使用更少的软件包甚至不安装任何软件包的方式来执
  • WPF 3D 旋转球体 GUI

    我一直在尝试在 WPF 中为我的课堂作业制作 3D 用户界面 但遇到了一个问题 现在 2 3 天都无法解决 我尝试用谷歌搜索答案 我查看了一些 stackoverflow 帖子 但还没有一个可以帮助我解决问题 情况是这样的 我有一个 3D
  • 点列表的 3D 轮廓(凹壳)

    我有一个 C 中的 Vector3 点列表 我需要计算这些点的凹轮廓 确实有很多参考资料 特别是对于 凸 分辨率 由于格雷厄姆算法 我已经成功实现了 然而 由于我现在需要有效地计算凹轮廓 所以我迷失了 维基百科确实列出了很多用于凸计算的资源
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 投影 3D 网格的 2D 轮廓算法

    给定 一个 3D 网格 由一组顶点和三角形定义 并用这些点构建网格 问题 找到任意平面上投影的任意旋转网格的二维轮廓 投影很容易 挑战在于找到平面中投影三角形边的 外壳 我需要一些有关研究该算法的输入 指针的帮助 为简单起见 我们可以假设
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • CSS3DObject 始终位于 WebGL Mesh 前面

    我正在混合CSS3D Renderer with WebGL Renderer to add HTML3D 空间中的元素WebGL场景 这CSS3DObject在前面WebGL网格即使WebGL Renderer具有较高的 z index
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加
  • 更改 3D 图形颜色 (matplotlib)

    我使用以下代码在 matplotlib 中绘制了 3D 图形 Previously defines lists of data to plot fig plt figure ax fig add subplot 111 projection
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 将 3D 场景导入babylonJS

    所以我今天读到巴比伦JS http blogs msdn com b eternalcoding archive 2013 06 27 babylon js a complete javascript framework for build
  • 在 Unity 中平滑动态生成的网格?

    给定 Unity 和 C 中的网格 其本身是通过合并更简单的基础网格实时创建的 我们如何在运行时 将其变成平滑的 几乎像包裹在布中的网格版本一样 不是完全凸出的版本 而是更圆润 软化锋利的边缘 桥接深间隙等 理想情况下 表面也将像 平滑角度
  • Godot 3d 得到向前矢量

    我想知道是否有办法获取 godot 3d 中空间节点的前向向量 统一起来 这就是transform forward Godot 给了我一个旋转向量 但我不知道如何将其转换为方向向量 戈多版本的transform forward是什么 前进是
  • 计算任意网格的平面 UV 坐标

    我有从二维形状生成三角形网格的代码 因为在大多数情况下 这些形状在表面上的顶点分布不均匀 所以我在生成 UV 时遇到了问题 这样就不会导致纹理扭曲 任何人都可以推荐一些讨论平面网格上 UV 计算技术的文章 书籍 代码示例吗 谢谢 好的 让我
  • Java 的 3D 场景图库?

    我正在寻找一个可靠的 Java 3D 场景图 API 它具有良好的文档 活跃的社区和允许商业使用的许可证 我排除了com sun scenegraph https scenegraph dev java net 因为它是 GPL 而且看起来
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 从相机视图中拖动锁定在一定距离/半径处的对象

    我在场景中心有一个相机 距离相机 z 400 处有 1 个球体 其父级位于中心 我想从视图中向上 向下 向左 向右拖动球体 但同时不改变它相对于中心的 z 位置 我最终使用了另一个球体并使其不可见 添加side THREE DoubleSi

随机推荐

  • 通义千问,阿里版ChatGPT,拿到邀请码了

    大家好 我是章北海mlpy 通义千问是阿里巴巴推出的一个大型预训练模型 是达摩院自主研发的超大规模语言模型 能够回答问题 创作文字 还能表达观点 撰写代码 昨天中午 阿里云通过官方微信公众号对旗下的超大规模语言模型通义千问进行官宣 并面向企
  • 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 无法将“obj\Debug\上位机.exe”复制到“bin\Debug\上位机.exe”。超出了重试计数 10。失败

    项目场景 提示 Visual studio常见bug 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 无法将 obj Debug 上位机 exe 复制到 bin Debug 上位机 exe 超出了重试计数 10 失败 解决方案 提示
  • Unity Shader 基础(2) Image Effect

    Unity Shader 基础 2 Image Effect Unity中 Image Effect 是Post Processing的一种方 Unity自身也提供很多Effect效果供使用 Image Effect的使用官方文档做了很多介
  • Vue使用Element-ui表单发送数据和多张图片到后端

    在做项目的时候遇到一个问题 前端需要上传表单到后端 表单数据包括文本内容和图片 后端我用的是Nodejs 效果类似下图 前端需要向后端传商品名称 价格 描述 商品图片 前端准备 利用Element ui中的表单功能和上传功能 将upload
  • 【面试八股文】每日一题:谈谈你对IO的理解

    谈谈你对IO的理解 每日一题 Java核心 谈谈你对对IO的理解 面试八股文 1 Java基础知识 Java IO Input Output 是Java编程语言中用于处理输入和输出的一组类和接口 它提供了一种在Java程序中读取和写入数据的
  • Web前端部署的几种方法和步骤

    随着互联网技术的发展和普及 Web前端开发已成为当今最重要和最具前景的技能之一 与此同时 如何将 Web 前端部署到服务器上已成为一个必不可少的技能 本文将介绍 Web 前端部署的几种方法和步骤 一 前置准备 在开始 Web 前端部署之前
  • linux安装SecureCRT安装教学

    linux安装SecureCRT安装教学 列如 Anolis OS8 6 安装SecureCRT8 0 目录 系列文章目录 linux安装SecureCRT安装教学教学 前言 一 securecrt安装 二 使用步骤 1 创建securec
  • verdi中如何查看force信号信息

    转载 verdi中如何查看force信号信息 骏的世界 lujun org cn 在仿真中 我们会有对信号进行force的操作 从而实现某些特定的功能 但是在仿真波形中 不能直接从波形上看出 这些信号的驱动 是因为前级电路的驱动 还是因为f
  • 为何软文营销能够做到良好的品牌推广效果

    如今的互联网已经不再是十多年前那样只能看看文字 图片 而是一个包罗万象的大集合 其中内容之丰富 已经开始有代替报纸 电视 广播等传统的信息传播途径 因此 越来越多的人选择了互联网 在互联网上的推广效果是越来越给力 面对这么大的宣传平台 很多
  • 三分钟,教你3种前端埋点方式!

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 只有了解用户 我们才能服务好用户 而最接近用户的我们 自然要承担起更多的责任 那么在一个企业中 我们要如何去了解用户呢 最直接有效的方式
  • 警告: Unable to find required classes (javax.activation.DataHandler and javax.mail

    在调试Axis1 4访问WebService服务时 出现以下警告 警告 Unable to find required classes javax activation DataHandler and javax mail internet
  • sip线路对接_线路调度一二三

    使用呼叫中心系统 在进行外呼业务时 坐席的呼出呼叫 最终需要通过各种线路进行呼出 根据线路类别不同 目前常见的有数字中继线 SIP中继对接线路 IMS接入线路 FXO大号模拟线 卡线 API对接线路 除自有线路外 根据供应商类型 主要有各地
  • 【Linux中shell脚本】Linux中shell脚本回车换行问题

    背景 windows下编辑shell脚本 报错 syntax error near unexpected token r 问题产生原因 因为windos与linux换行符不同导致 notepad 中 视图 gt 显示符号 gt 显示所有符号
  • Qt技术重绘QtableView方法

    在项目过程中需要在列表中用图形显示磁盘的使用情况 这用Qt自身的QTableview控件不能完全实现 需要用委托进行重绘 创建一个委托类继承QItemDelegate类 然后实现void paint QPainter painter con
  • 研报精选230410

    目录 行业230410西南证券 医药行业2023年4月投资月报 看好创新药和中药行情 行业230410国信证券 汽车行业4月投资策略 3月新能源乘用车批发销量预计同比增长32 持续关注板块年报季报行情 行业230410西南证券 医药行业周报
  • java------int=20是存在堆里还是栈里

    如果方法里的局部变量 就会存在栈帧里的局部变量表中 如果是成员变量则存在于堆中 它属于int类的一个实例 存放在堆中开辟的空间
  • 【Mo 人工智能技术博客】图卷积网络概述及其在论文分类上的应用

    近年来 深度学习在计算机视觉 自然语言处理等领域大放异彩 这些领域所面对的数据都是结构化的 如图像 音频 文本等 它们内部都有明确的排列规则 结构化的数据由于具有这些确定的规则而方便处理 但是在现实生活中 非结构化的关系数据才是主流 我们无
  • Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源

    国内有很多Ubuntu的镜像源 包括阿里的 网易的 还有很多教育网的源 比如 清华源 中科大源 我们这里以中科大的源为例讲解如何修改Ubuntu 18 04里面默认的源 编辑 etc apt sources list文件 在文件最前面添加以
  • 华为OD机试 - 跳格子1(Java)

    题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子 每个格子有不同的分数 小朋友可以选择以任意格子起跳 但是不能跳连续的格子 也不能回头跳 给定一个代表每个格子得分的非负整数数组 计算能够得到的最高分数 输入描述 给定一个数列 如 1 2
  • 3D游戏设计大作业

    Unity大作业 粒子系统效果 一 前言 1 此篇文章记录了2022年第二学期中山大学软件工程3D游戏与编程的大作业 本次大作业可选择范围众多 最终我选择了粒子系统效果作为了本次大作业的主题 2 一个粒子系统可以模拟并渲染许多称为粒子的小图