当前位置: 首页 > news >正文

【unity3D-网格编程】01:Mesh基础属性以及用代码创建一个三角形

💗 未来的游戏开发程序媛,现在的努力学习菜鸡
💦本专栏是我关于游戏开发的网格编程方面学习笔记
🈶本篇是unity的网格编程系列01-mesh基础属性

网格编程系列01

    • mesh基础属性
    • 实践操作
      • 用代码初始化一个三角形
      • 在三角形的基础上改成正方形
      • 贴图正确的显示
    • 补充

mesh基础属性

在Unity中,网格编程Mesh是一种用于定义3D对象形状的基本组件。它定义了一个对象的顶点、三角形、法向量和UV贴图坐标等基本属性。

  • 顶点(Vertices):是对象的顶点,为Vector3类型的数组。
    :所有的图形都是点和面(三角形的面)构成的。

  • 三角序列(Triangles):由三个顶点组成的面,也称为“网格面”或“多边形”。是一个int数组,并且个数是三的倍数。

  • 法向量(Normals):法向量在计算光照和投影时至关重要,通常用于计算光照效果。
    :法向量为正方向的面为正面。(为了优化性能,反面不渲染,也就是反面是不可见的)

  • UV贴图坐标(UV Coordinates):它是网格表面上的纹理坐标,用于将纹理映射到网格表面。每个顶点都有一个对应的UV贴图坐标。

  • 颜色(Colors):它是与网格相对应的颜色数组,用于设置网格的材质颜色和纹理。

  • 切线(Tangents):用于计算网格表面上的光照效果。它们定义了网格表面上的切线方向。

实践操作

用代码初始化一个三角形

  1. 新建一个脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]//自动挂载MeshFilter和MeshRenderer
public class GenerateMesh01 : MonoBehaviour
{void Start(){//初始化Mesh mesh = new Mesh();MeshFilter meshfilter = GetComponent<MeshFilter>();meshfilter.mesh = mesh;//获取顶点坐标和三角序列mesh.vertices = GetVertices();mesh.triangles = GetTriangles();}private Vector3[] GetVertices(){//赋值顶点坐标return new Vector3[]{new Vector3(0,0,0),new Vector3(1,0,0),new Vector3(1,1,0),};}private int[] GetTriangles(){//赋值三角序列return new int[]{0,1,2,};}
}
  1. 新建一个空物体将脚本挂载上去
    在这里插入图片描述
    在这里插入图片描述
  2. 点击运行,会生成一个三角形(当然,正面看是可以看见的,反面看是没有的。而且,因为我们没有给材质,所以此时三角形面片显示材质缺失时的紫色)
    在这里插入图片描述

在三角形的基础上改成正方形

图解:左边是我们原先的三角形,现在只需要在多加一个顶点以及三角序列就可以,根据基础知识,顺时针为正方向,新加的三角序列为0,2,3
在这里插入图片描述
代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]//自动挂载MeshFilter和MeshRenderer
public class GenerateMesh01 : MonoBehaviour
{void Start(){//初始化Mesh mesh = new Mesh();MeshFilter meshfilter = GetComponent<MeshFilter>();meshfilter.mesh = mesh;//获取顶点坐标和三角序列mesh.vertices = GetVertices();mesh.triangles = GetTriangles();}private Vector3[] GetVertices(){//赋值顶点坐标return new Vector3[]{new Vector3(0,0,0),new Vector3(1,0,0),new Vector3(1,1,0),new Vector3(0,1,0),//添加了顶点};}private int[] GetTriangles(){//赋值三角序列return new int[]{0,1,2,0,2,3,//添加了三角序列};}
}

贴图正确的显示

知识点:UV坐标和顶点的关系

1.为空物体直接添加一个贴图,不赋值UV,启动后结果是这样的:贴图没有正常显示
在这里插入图片描述

  1. 在代码中添加为该正方形赋值UV坐标的代码,添加后代码为:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]//自动挂载MeshFilter和MeshRenderer
public class GenerateMesh01 : MonoBehaviour
{void Start(){//初始化Mesh mesh = new Mesh();MeshFilter meshfilter = GetComponent<MeshFilter>();meshfilter.mesh = mesh;//获取顶点坐标和三角序列mesh.vertices = GetVertices();mesh.triangles = GetTriangles();//获取UV坐标mesh.uv = GetUV();}private Vector3[] GetVertices(){//赋值顶点坐标return new Vector3[]{new Vector3(0,0,0),new Vector3(1,0,0),new Vector3(1,1,0),new Vector3(0,1,0),};}private int[] GetTriangles(){//赋值三角序列return new int[]{0,1,2,0,2,3,};}private Vector2[] GetUV(){//UVreturn new Vector2[]{new Vector2(1,0),new Vector2(0,0),new Vector2(0,1),new Vector2(1,1),};}
}
  1. 再次启动后,结果:贴图正常显示
    在这里插入图片描述
  2. 关系图解:
    在这里插入图片描述

补充

  1. RequireComponent的使用

用法:在脚本前加上[RequireComponent(typeof (X))]

其中X为其它脚本,或者Unity组件
当你挂载这个脚本时,X会和当前脚本一起被挂载上去。


💦更多内容请前往主页置顶或点击链接直达:【unity3D】游戏开发专栏的目录

相关文章:

【unity3D-网格编程】01:Mesh基础属性以及用代码创建一个三角形

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的网格编程方面学习笔记 &#x1f236;本篇是unity的网格编程系列01-mesh基础属性 网格编程系列01 mesh基础属性实践操作用代码初始化一个三角形在三角形的基础上改成正…...

Java贪吃蛇小游戏

Java贪吃蛇小游戏 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.LinkedList; import java.util.Random;publi…...

Linux:系统基本信息扫描(1)

#系统基本信息: uname -a #Linux发行版信息: lsb_release -a #内核与发行版信息: cat /proc/version #linux 用户 cat /etc/passwd #Linux 组查询 cat /etc/group #CPU详细信息:lscpu -a #获取CPU模式: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling\_governor #per…...

VR全景打造亮眼吸睛创意内容:三维模型、实景建模

随着VR技术在不同行业之间应用落地&#xff0c;市场规模也在快速扩大&#xff0c;VR全景这种全新的视觉体验为我们生活中的许多方面都带来了无限的可能。更加完整的呈现出一个场景或是物体的所有细节&#xff0c;让浏览者感受到自己仿佛置身于现场一般&#xff1b;其次&#xf…...

ProTable高级表格获取表单数据

隐藏高级表格中的收起按钮 手动控制高级表格中的搜索按钮 获取高级表格中的表单数据 Forminstance 引入 然后在代码中定义 const refForm useRef(); 使用 refForm.current.getFileDsValue();...

力扣刷题第二十七天--二叉树

前言 题目大同小异&#xff0c;按要求来即可。 内容 一、二叉树的右视图 199.二叉树的右视图 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 广度优先搜索 取每层最后一个…...

一个快递包裹的跨国之旅

事情要从今年三月份说起&#xff0c;一位爱尔兰的同事在6月份结婚&#xff0c;团队同事准备了中国风的丝绸画轴、领带、丝巾作为礼物。3月份开始邮寄&#xff0c;4月初爱尔兰方面收件&#xff0c;5月份因为文件不足、不完整、不正确等原因被取消进口&#xff0c;7月份退回到大连…...

qsort函数使用方法总结

目录 一、qsort函数原型 二、compar参数 三、各种类型的qsort排序 1. int 数组排序 2. 结构体排序 3. 字符串指针数组排序 4. 字符串二维数组排序 四、回调函数 1. 什么是回调函数 2. 为什么要用回调函数&#xff1f; 3. 怎么使用回调函数&#xff1f; 4.下面是…...

机器学习介绍与分类

随着科学技术的不断发展&#xff0c;机器学习作为人工智能领域的重要分支&#xff0c;正逐渐引起广泛的关注和应用。本文将介绍机器学习的基本概念、原理和分类方法&#xff0c;帮助读者更好地理解和应用机器学习技术。 一、机器学习的基本概念 机器学习是一种通过从数据中学…...

linux控制台命令

进入root sudo su root 浏览当前文件夹列表 ll ls 查看文件 vim test.txt :q 退出查看模式 上传 sudo rz rz 覆盖上传 rz -y 修改文件名&#xff1a; mv 旧文件名 新文件名 修改文件权限 sudo chmod ar xxx.txt sudo chmod 777 test.txt 7 4 2 1 读写运行权限…...

快时尚品牌Halara登上TikTok美国小店榜Top 5,运动健身风靡TikTok

TikTok Shop美国电商数据周榜&#xff08;11/06-12&#xff09;已出&#xff0c;具体信息如下&#xff1a; 上周总GMV达到5850万美元&#xff0c;日均出单840万美元&#xff1b;单日出单最高达2110万美元&#xff0c;是当前美国单日最高销售额&#xff1b; 截至11月12日&…...

Docker 安装 Oracle Database 23c

目录 访问 Oracle 官方网站 使用 Docker 运行 Oracle Database 23c 免费容器映像 创建并运行 Oracle Database 23c 容器 查看已下载的镜像 列出正在运行的容器 进入容器 sqlplus 命令 访问 Oracle 官方网站 Database Software Downloads | Oracle 中国 使用 Docker 运行…...

什么是美国服务器,有哪些优势,适用于什么场景?

​  在互联网发展的过程中&#xff0c;服务器扮演着至关重要的角色。而美国作为全球信息技术的中心&#xff0c;其服务器在全球范围内受到广泛关注。  美国服务器是指在美国本土机房搭建并运行的服务器。其拥有带宽大、优质硬件、售后运维好、位置优越、数据安全性高以及免备…...

TeXLive 2023安装教程

TeXLive 2023安装教程 本文介绍最新TeX发行版——TeXLive 2023的安装步骤。如果你想用LaTeX进行写作&#xff0c;那么需要搭建LaTeX环境&#xff1a;可以选择下面两种方案之一进行安装&#xff1a;(1)TeXLive 2023TeXStudio或者(2)TeXLive 2023WinEdt 11。其中TeXLive 2023是由…...

uniapp中swiper 轮播带左右箭头,点击切换轮播效果demo(整理)

可以点击箭头左右切换-进行轮播 <template><view class"swiper-container"><swiper class"swiper" :current"currentIndex" :autoplay"true" interval"9000" circular indicator-dotschange"handleSw…...

网络连接Android设备

参考&#xff1a;https://blog.csdn.net/qq_37858386/article/details/123755700 二、网络adb调试开启步骤 1、把Android平板或者手机WiFi连接到跟PC机子同一个网段的网络&#xff0c;在设置-系统-关于-状态 下面查看设备IP,然后查看PC是否可以ping通手机的设备的IP。 2、先…...

Redis(位图Bitmap和位域Bitfield)

位图&#xff1a; 位图是字符串类型的扩展。 Redis中的位图是一种特殊的数据结构&#xff0c;用于表示一系列位的集合。它可以存储大量的布尔值数据&#xff0c;每个位代表一个布尔值&#xff08;0或1&#xff09;&#xff0c;并且可以对这些位进行各种位运算操作。位图通常用…...

【ArcGIS】批量对栅格图像按要素掩膜提取

要把一张大的栅格图裁成分省或者分县市的栅格集&#xff0c;一般是用ArcGIS里的按掩膜提取。 但是有的时候所要求的栅格集量非常大&#xff0c;所以用代码来做批量掩膜&#xff08;按字段&#xff09;会非常方便。 import arcpy , shutil , os from arcpy import env from ar…...

二进制安装minio 并实现主从同步

二进制安装minio 并实现主从同步 一、安装部署minio1.1、创建minio目录并下载minio1.2、授予执行权限1.3、创建存储目录和日志目录1.4、在目录下创建一个启动脚本1.5、设置minio开机启动 二、minio主从配置2.1、从服务器安装过程同《一》2.2、从服务器下载mc2.3、配置同步2.4、…...

React中封装echarts图表组件以及自适应窗口变化

文章目录 前言环境代码接口使用效果后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;react.js &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;…...

Symbol Opener:基于URI与LSP实现终端代码符号一键跳转

1. 项目概述&#xff1a;一个能让你在终端里“点击”代码符号的插件 如果你和我一样&#xff0c;每天大部分时间都泡在终端里&#xff0c;那你肯定遇到过这个场景&#xff1a;运行 git log 或者 grep 命令&#xff0c;终端输出了一堆函数名、类名&#xff0c;你想立刻跳转…...

TinyML中的数据感知NAS技术解析与应用

1. TinyML与神经网络架构搜索概述在嵌入式设备和物联网终端上部署机器学习模型&#xff08;TinyML&#xff09;面临着严峻的资源约束问题。典型的微控制器&#xff08;MCU&#xff09;仅有几十KB内存和几百MHz主频&#xff0c;这迫使开发者必须在模型精度与资源消耗之间寻找平衡…...

ARM错误恢复中断机制与ERRERICR2寄存器详解

1. ARM错误恢复中断机制概述在ARM架构的可靠性、可用性和可维护性&#xff08;RAS&#xff09;系统中&#xff0c;错误恢复中断是实现硬件容错的关键机制。当处理器检测到可恢复的错误条件时&#xff0c;通过这套机制能够快速通知系统进行错误处理&#xff0c;而ERRERICR2寄存器…...

终极指南:如何永久免费使用Cursor Pro AI编程神器

终极指南&#xff1a;如何永久免费使用Cursor Pro AI编程神器 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial r…...

如何用嘎嘎降AI处理期刊投稿论文:SCI核心期刊论文全流程降AI4.8元完整操作教程

如何用嘎嘎降AI处理期刊投稿论文&#xff1a;SCI核心期刊论文全流程降AI4.8元完整操作教程 第一次用降AI工具会遇到很多不确定的地方——传什么格式、选哪个模式、怎么验收效果。 这篇教程把常见问题都覆盖了&#xff0c;主要基于嘎嘎降AI&#xff08;www.aigcleaner.com&…...

避坑指南:Vivado FIR Compiler IP核配置的那些‘坑’(从MATLAB系数到FPGA实现)

Vivado FIR滤波器IP核实战避坑手册&#xff1a;从MATLAB系数到FPGA部署的12个关键检查点 当MATLAB的完美频响曲线遇上Vivado的硬件实现&#xff0c;FIR滤波器设计往往会遭遇理想与现实的落差。本文不重复基础操作流程&#xff0c;而是聚焦于那些让工程师深夜加班的典型问题场景…...

3分钟掌握缠论可视化:通达信智能技术分析插件终极指南

3分钟掌握缠论可视化&#xff1a;通达信智能技术分析插件终极指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 还在为复杂的缠论理论头疼吗&#xff1f;还在手工画线分析K线图吗&#xff1f;CZSC缠论…...

OpenCrab:面向中文开发者的开源项目导航与协作平台架构实践

1. 项目概述&#xff1a;一个面向中文开发者的开源螃蟹&#xff1f;第一次在GitHub上看到opencrab-cn/opencrab这个仓库名时&#xff0c;我愣了一下。OpenCrab&#xff1f;开源螃蟹&#xff1f;这名字听起来既有趣又让人摸不着头脑。点进去一看&#xff0c;发现这并非一个关于海…...

VR文旅大空间|沉浸式体验重塑文旅新场景

随着文旅产业不断升级&#xff0c;传统“走马观花式”的旅游体验已经难以满足游客日益增长的体验需求。如何让游客“留下来、玩得久、愿意分享”&#xff0c;成为各地文旅项目共同思考的问题。在这一背景下&#xff0c;VR大空间文旅逐渐走入大众视野&#xff0c;成为文旅融合发…...

修复肝衰竭的“免疫刹车”:ANXA1是控制炎症失控、促进消退的关键内源信号

慢加急性肝衰竭&#xff08;ACLF&#xff09;的发病进程主要由全身性炎症反应及免疫功能紊乱共同驱动&#xff0c;其病理机制复杂且临床预后较差。2026年4月&#xff0c;浙江大学与斯坦福大学&#xff0c;在Hepatology期刊在线发表了题为“Dissecting the liver inflammation e…...