Unity中Shader面片一直面向摄像机

news2025/1/12 13:28:13

文章目录

  • 前言
  • 一、实现思路
    • 1、 我们要实现模型面片一直跟着摄像机旋转,那么就需要用到旋转矩阵
    • 2、确定 原坐标系 和 目标坐标系
    • 3、确定旋转后坐标系基向量
  • 二、确定旋转后 坐标系基向量 在 原坐标系 下的值
    • 1、Z轴基向量
    • 2、假设Y轴基向量 和 世界空间下 的Y轴方向一致竖直向上
    • 3、X轴基向量
    • 4、Y轴基向量
  • 三、顶点应用旋转
    • 法一:向量乘法
    • 法二:矩阵乘法
    • 最后转化到齐次裁剪空间
  • 四、最终效果
    • 最终测试代码


前言

在之前的文章中,我们实现了Shader的序列帧动画。

  • Unity中Shader序列帧动画(总结篇)

但是,我们会发现,我们的面片不会一直面向摄像机,当摄像机移动时,人物或特效就会出现穿帮的效果。所以,我们接下来就来实现让我们的面片面向摄像机。

类似的功能,还可能用于:特效、公告牌、八方旅人风格效果、饥荒风格效果。


一、实现思路

1、 我们要实现模型面片一直跟着摄像机旋转,那么就需要用到旋转矩阵

  • Unity中Shader旋转矩阵(二维旋转矩阵)
  • Unity中Shader旋转矩阵(四维旋转矩阵)
  • Unity中Shader矩阵变换的几何体现

2、确定 原坐标系 和 目标坐标系

  • 原坐标系 就是模型的本地坐标
    在这里插入图片描述
  • 目标坐标系
    因为我们的面片需要一直朝向摄像机。
    所以,可以确定旋转后的坐标系Z轴方向 需要 和 原模型本地空间坐标系原点 指向 摄像机 方向一致。
    在这里插入图片描述

3、确定旋转后坐标系基向量


二、确定旋转后 坐标系基向量 在 原坐标系 下的值

1、Z轴基向量

  • 求 摄像机坐标 在模型本地空间下的坐标值,在 归一化后 就是 Z轴基向量

float3 viewDir = mul(GetWorldToObjectMatrix(),float4(_WorldSpaceCameraPos,1)).xyz;

2、假设Y轴基向量 和 世界空间下 的Y轴方向一致竖直向上

在这里插入图片描述

float3 upDir = float3(0,1,0);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka消息存储

一、层次结构 具体到某个broker上则是, 数据目录/分区名/日志相关文件集合。其中日志文件集合内包括.log文件, index索引文件和.timeindex时间戳索引文件。 二、.log 结构 .log中记录具体的消息。一般消息由header和body组成, 这点儿在Kafka消息中也同样适用。 message MES…

自动化创建ETX用户帐号

在芯片设计行业,ETX是常见的远程访问环境。用户在通过ETX访问远程环境前必须首先加入ETX系统,然后通过profile分配相关的环境的访问权限。 通常这些操作在ETX WEB页面手工操作,如果我们期望实现用户帐号注册全自动化,就需要将以上…

糊涂(Hutool)工具常见的使用方法

简介: Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 安装: 在我们的maven中引入糊涂…

Linux网络编程(一-网络相关知识点)

目录 一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封 三、IP协议 3.1 MAC地址 3.2 IP地址 3.3 MAC地址与IP地址区别 一、网络相关知识简介 互联网通信的本质是数字通信,任何数字通信都离…

国内首款支持苹果Find My芯片-伦茨科技ST17H6x

深圳市伦茨科技有限公司(以下简称“伦茨科技”)发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家,该平台提供可通过Apple Find My认证的Apple查找(Find My)功能集成解决方案。…

K8S集群重新初始化--详细过程

K8S集群重新初始化 1、master节点1.1、在master节点执行下面reset命令:1.2、手动清除配置信息,这一步很关键:1.3、重新引导集群1.4、创建配置目录,并复制权限配置文件到用户目录下:1.5 查看集群状态1.6 安装Calico网络…

通过两台linux主机配置ssh实现互相免密登陆

一、准备工作 1:两台Linux主机,需要能ping通 2:检查防火墙是否处于关闭状态,没关闭的话关闭,防止防火墙拦截流量 查看防火墙状态:systemctl status firewalld 关闭防火墙:systemctl stop firewalld 3:使用getenforce命令查…

Google Pixel 与 iPhone手机:哪个更好?

iPhone稳定可靠,Pixel性价比高且创新。两者各有千秋,满足不同需求 谷歌的 Pixel 手机是 Android 最接近 iPhone 的手机,也是真正原生的Android手机。在iPhone 15 Pro Max 与华为 Mate 60 Pro的比较中不难看出,iPhone依然有着极强…

Java实现任务栏图标闪烁功能,点击任务栏打开Java窗口,使用GUI的JFrame实现

JFrame是指一个计算机语言-java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。 GUI主要功能是实现人与计算机等电子设备的人机交互。它是用户与操作系统之间进行数据传递和互动操控的工具,用户可以通过一定的操作实现对电子设备的…

PyTorch|view(),改变张量维度

在构建自己的网络时,了解数据经过每个层后的形状变化是必须的,否则,网络大概率会出现问题。PyToch张量有一个方法,叫做view(),使用这个方法,我们可以很容易的对张量的形状进行改变,从而符合网络的输入要求。…

【自学笔记】01Java基础-07面向对象基础-04接口与内部类详解

记录学习Java基础中有关接口类和内部类的知识。 1 接口 interface 关键字用于定义接口类,接口类是一系列方法的声明,一般只有方法的特征没有方法的实现,因此可以被不同的类接入实现,而这些实现可以具有不同的行为(功…

《Training language models to follow instructions》论文解读--训练语言模型遵循人类反馈的指令

目录 1摘要 2介绍 方法及实验细节 3.1高层次方法论 3.2数据集 3.3任务 3.4人体数据收集 3.5模型 3.6评价 4 结果 4.1 API分布结果 4.2公共NLP数据集的结果 4.3定性结果 问题 1.什么是rm分数 更多资料 1摘要 使语言模型更大并不能使它们更好地遵循用户的意图。例…

C#学习教程一

VS2022 一:C#简介 基础: 全称:c sharp 面向对象 高级编程语言:(GC动态控制内存) C#、Java、Python... 低级编程语言:(经常与硬件打交道、内存、寄存器等) c/C++ 汇编... .net=dot net 过程: C/C++ 通过编译器转换成机器指令 C#通过编译器转换成IL中间语言…

怎么用 Excel 做出专业的 project 甘特图?10个步骤和60个模板

使用Excel来创建Project甘特图的步骤包括:1、基本设置和布局调整、2、数据输入和时间线配置、3、任务依赖性和进度跟踪、4、视觉效果优化、5、数据更新和维护、6、模板保存和共享。尤其突出基本设置和布局调整,它是构建一个清晰、有效的甘特图的基础。 甘…

【2023 - 探索】博0到博1,游戏新地图的探索日志

【2023 - 探索】博0到博1,游戏新地图的探索日志 写在最前面CSDN探索日志2023的探险 探索日志年终回顾探索 冒险回顾实习6月开始跟着老师做科研年中的一些其他事情9月开始上课开学后11月,读者互动 新年展望新年祝福 写在最前面 2023,我解锁了新…

Safari历史记录怎么恢复?掌握好这3个方法!

大家在使用Safari浏览器时难免会遇到一些问题,比如Safari历史记录误删除或意外丢失,想必这是一件很令人烦恼的事情。 那么,当苹果手机上的Safari历史记录不见时,我们该如何找回呢?safari历史记录怎么恢复?…

UTONMOS:探索元宇宙,开启未来游戏新篇章

在元宇宙的世界里,游戏不再只是消遣,而是一个全新的互动世界,等待你来探索! 逼真的虚拟现实技术,让你沉浸在充满想象力的游戏世界中,体验前所未有的刺激和乐趣。 与来自全球的玩家互动交流,结…

应用案例 | 使用Softing PROFIBUS Tester 5解决网络问题

PROFIBUS是在工业自动化领域里被广泛使用的现场总线协议,它具有高可靠性、低成本等优势,主要应用于制造业、能源、交通等领域。然而,随着时间的推移,PROFIBUS网络也不可避免地会出现一些组件老化的问题,从而对其性能和…

涛思数据获评北京市“专精特新”中小企业

众所周知,“专精特新”企业是国家引导中小企业增强自主创新能力和核心竞争力,不断提高中小企业发展质量和水平而实施的重大工程,旨在支持企业走专精特新发展之路,更好地促进企业高质量发展,也成为各领域产业链供应的关…

Project软件使用指南:六个关键功能助力项目成功

在项目管理的复杂世界中,Project软件提供了关键的解决方案。主要功能包括:1、任务和进度管理、2、资源分配、3、财务监控、4、风险评估、5、协作增强、6、报告和洞察力。特别是在任务和进度管理方面,Project软件通过动态时间表和任务跟踪工具…