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游戏设计大作业 的相关文章

  • Matlab 的 slice() 函数无法按预期工作

    我想在 13 处绘制离散的 2D 图像z地点位于 4 4 52 使用以下代码行 a 100 mesh x mesh y mesh z meshgrid 1 1 100 1 1 100 4 4 52 a unifdist 0 b unifdi
  • 向 scatter3d 图添加图例

    rgl 是交互式 3D 绘图的可能软件包之一 我想做的是根据一些因子变量构建带有颜色编码的 3D 散点图 3D 维度散点图用于 plsr 分析产生的载荷 结果图看起来像 The 示例数据在表中给出 gt loadings Comp 1 Co
  • 使用 DirectX 或 OpenGL 显示 100 个浮动立方体

    我想使用显示 100 个浮动立方体DirectX or OpenGL 我正在寻找一些示例源代码或该技术的描述 我无法正确显示多个立方体 我在网上搜索了一系列很好的教程 尽管他们谈论了如何做3D基元 我找不到有关如何进行大量操作的信息3D原语
  • 生成球体的顶点

    在 DirectX 移动照明示例中 圆柱体是按以下方式生成的 for DWORD i 0 i lt 50 i FLOAT theta 2 D3DMX PI i 50 1 pVertices 2 i 0 position D3DMXVECTO
  • 准确测量一组基准点之间的相对距离(增强现实应用)

    假设我有一组 5 个标记 我正在尝试使用增强现实框架找到每个标记之间的相对距离 例如AR工具包 http www hitl washington edu artoolkit 在我的相机中 前 20 帧仅向我显示前 2 个标记 以便我可以计算
  • 使用 Scenform 将 SceneView 加载到片段中后出现黑屏

    我正在开发一个项目 该项目将在一个片段中包含 3D 模型查看器 为了做到这一点 我决定使用 sceneform 在尝试在我的选项卡片段中显示 SceneView 后 我遇到了 SceneView 的问题 一切都是根据示例和 scenefor
  • 在运行时更改 AR core 中对象的纹理

    我正在创建一个应用程序 我需要在其中更改 3d 对象的纹理 图案 我正在使用 AR Core SDK 和 android 我已经使用了下面的代码 但它不起作用 Texture builder setSource this R drawabl
  • 如何在 MATLAB 中可视化如图所示的体积数据?

    我的问题非常简单 我有一堆矩阵 所有矩阵都相互堆叠起来 这样我就有了大量的数据 我想可视化这些数据 如下图所示 在我看来 需要一定程度的透明度 这可能与每个体素的值有关 也就是说 值越高 体素对其后面的事物越不 透明 我不知道如何开始 这是
  • 从绘图 3d 图中抓取相机位置

    我正在绘制 3D 图形并想要调整相机位置 对我来说最好的方法是使用查看器 根据需要缩放和旋转场景 然后以 JSON 形式获取相机位置并将其放入我的脚本中 该脚本生成图片以默认实现相同的位置 根据这条推文 https twitter com
  • 受约束景观的程序生成

    我想实现地形的程序生成 经过彻底的研究后 我得出的结论是 应该使用梯度 相干 噪声生成算法之一来实现 例如 Perlin 噪声算法 然而 我不希望生成是完全随机的 我想应用一些限制 例如哪里应该是山脉 或者哪里应该是低地等 问题 例如 我有
  • 如何旋转 3D 散点图

    下面的代码使用 scatterplot3d 函数来运行高度 重量和体积的 3D 散点图 其中点是 1 6 之间的类值 角度目前为 45 度 我知道我可以通过改变角度来倾斜绘图 我应该使用什么代码将绘图向左或向右旋转 以便我可以提供绘图的多个
  • WP7 XNA 显示 3D FBX 模型

    我只是初学者 很抱歉我的愚蠢问题 我的模型看起来像这样 http img265 imageshack us img265 8291 clipboard01ap jpg http img265 imageshack us img265 829
  • R - hist3D 序列颜色和标签问题

    所以我有一个 5 行 20 列的数据集 我正在尝试绘制一个hist3D来自plot3D包裹 dt structure c 1 1 1 3 1 2 1 0 2 1 2 1 0 1 1 0 1 0 2 2 1 1 1 1 4 4 1 1 2 3
  • 如何计算逆运动学[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道如何使用逆运动学计算旋转角度 我计划将其用于实时 3D 动画 有人知道一些详细介绍具体解决方案的好文献吗 以下资源调查了逆运动学问题的一些流行
  • 求 3d 中 2 个任意立方体的交集

    所以 我想找出一个函数 可以让您确定两个任意旋转和大小的立方体是否相交 如果立方体的旋转不是任意的 而是锁定到特定的轴 则相交很简单 您可以通过检查它们的边界来检查它们是否在所有三个维度上相交 以查看它们在所有三个维度上是否相交或在彼此之内
  • 如何在Android中渲染OBJ或FBX? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个 obj 和 fbx 格式的 3D 对象 其中包含 mtl 和纹理文件 我想知道哪个是在 An
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • 如何在plotly 3D曲面图中标记区域?

    我使用plotly从xyz数据创建3D高程剖面图 它与以下代码配合得很好 import plotly graph objects as go import pandas as pd import numpy as np Read data
  • 在 Three.js 中将贝塞尔曲线转换为平面道路

    我试图根据之前计算得到的一些贝塞尔曲线在 Three js 中绘制一条弯曲的道路 问题是我找不到转换曲线序列的方法 一条从上一条曲线的末尾开始 到一个曲面 我有一个 3D 场景 其中有一些汽车 一条用飞机创建的道路 并且绘制了即将到来的道路
  • 3D 数学:根据“向上”和“向上”正交向量计算倾斜(滚动)角度

    我希望这是提出这个问题的正确位置和这个一样 https stackoverflow com questions 3035590 bank angle from up vector and look at vector 但表示为纯数学而不是图

随机推荐

  • 通义千问,阿里版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 一个粒子系统可以模拟并渲染许多称为粒子的小图