Unity VR黑屏
picosdk里面的,有修改
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ScreenFade : MonoBehaviour
{[Tooltip("颜色")]public Color fadeColor = new Color(0.0f, 0.0f, 0.0f, 1.0f);private int renderQueue = 4000;private MeshRenderer gradientMeshRenderer;private MeshFilter gradientMeshFilter;private Material gradientMaterial = null;private bool isGradient = false;private float currentAlpha;private float nowFadeAlpha;private List<Vector3> verts;private List<int> indices;private int N = 5;void Awake(){CreateFadeMesh();SetNowFadeAlpha(0f);}void OnDestroy(){DestoryGradientMesh();}private void CreateFadeMesh(){verts = new List<Vector3>();indices = new List<int>();gradientMaterial = new Material(Shader.Find("HappyMaster/ScreenFade"));gradientMeshFilter = gameObject.AddComponent<MeshFilter>();gradientMeshRenderer = gameObject.AddComponent<MeshRenderer>();CreateModel();}public void SetNowFadeAlpha(float alpha){nowFadeAlpha = alpha;SetAlpha();}/// <summary>/// 渐显/// </summary>public void FadeIn(float gradientTime = 5f){StartCoroutine(ScreenFadeIn(gradientTime));}/// <summary>/// 渐隐/// </summary>public void FadeOut(float gradientTime = 5f){StartCoroutine(ScreenFadeOut(gradientTime));}IEnumerator ScreenFadeIn(float gradientTime = 5f){float nowTime = 0.0f;while (nowTime < gradientTime){nowTime += Time.deltaTime;nowFadeAlpha = Mathf.Lerp(1.0f, 0, Mathf.Clamp01(nowTime / gradientTime));SetAlpha();yield return null;}}IEnumerator ScreenFadeOut(float gradientTime = 5f){float nowTime = 0.0f;while (nowTime < gradientTime){nowTime += Time.deltaTime;nowFadeAlpha = Mathf.Lerp(0, 1f, Mathf.Clamp01(nowTime / gradientTime));SetAlpha();yield return null;}}private void SetAlpha(){Color color = fadeColor;color.a = Mathf.Max(currentAlpha, nowFadeAlpha);isGradient = color.a > 0;if (gradientMaterial != null){gradientMaterial.color = color;gradientMaterial.renderQueue = renderQueue;gradientMeshRenderer.material = gradientMaterial;gradientMeshRenderer.enabled = isGradient;}}void CreateModel(){for (float i = -N / 2f; i <= N / 2f; i++){for (float j = -N / 2f; j <= N / 2f; j++){verts.Add(new Vector3(i, j, -N / 2f));}}for (float i = -N / 2f; i <= N / 2f; i++){for (float j = -N / 2f; j <= N / 2f; j++){verts.Add(new Vector3(N / 2f, j, i));}}for (float i = -N / 2f; i <= N / 2f; i++){for (float j = -N / 2f; j <= N / 2f; j++){verts.Add(new Vector3(i, N / 2f, j));}}for (float i = -N / 2f; i <= N / 2f; i++){for (float j = -N / 2f; j <= N / 2f; j++){verts.Add(new Vector3(-N / 2f, j, i));}}for (float i = -N / 2f; i <= N / 2f; i++){for (float j = -N / 2f; j <= N / 2f; j++){verts.Add(new Vector3(i, j, N / 2f));}}for (float i = -N / 2f; i <= N / 2f; i++){for (float j = -N / 2f; j <= N / 2f; j++){verts.Add(new Vector3(i, -N / 2f, j));}}for (int i = 0; i < verts.Count; i++){verts[i] = verts[i].normalized * 0.7f;}CreateMakePos(0);CreateMakePos(1);CreateMakePos(2);OtherMakePos(3);OtherMakePos(4);OtherMakePos(5);Mesh mesh = new Mesh();mesh.vertices = verts.ToArray();mesh.triangles = indices.ToArray();mesh.RecalculateNormals();mesh.RecalculateBounds();Vector3[] normals = mesh.normals;for (int i = 0; i < normals.Length; i++){normals[i] = -normals[i];}mesh.normals = normals;int[] triangles = mesh.triangles;for (int i = 0; i < triangles.Length; i += 3){int t = triangles[i];triangles[i] = triangles[i + 2];triangles[i + 2] = t;}mesh.triangles = triangles;gradientMeshFilter.mesh = mesh;}public void CreateMakePos(int num){for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){int index = j * (N + 1) + (N + 1) * (N + 1) * num + i;int up = (j + 1) * (N + 1) + (N + 1) * (N + 1) * num + i;indices.AddRange(new int[] { index, index + 1, up + 1 });indices.AddRange(new int[] { index, up + 1, up });}}}public void OtherMakePos(int num){for (int i = 0; i < N + 1; i++){for (int j = 0; j < N + 1; j++){if (i != N && j != N){int index = j * (N + 1) + (N + 1) * (N + 1) * num + i;int up = (j + 1) * (N + 1) + (N + 1) * (N + 1) * num + i;indices.AddRange(new int[] { index, up + 1, index + 1 });indices.AddRange(new int[] { index, up, up + 1 });}}}}private void DestoryGradientMesh(){if (gradientMeshRenderer != null)Destroy(gradientMeshRenderer);if (gradientMaterial != null)Destroy(gradientMaterial);if (gradientMeshFilter != null)Destroy(gradientMeshFilter);}
}
Shader "HappyMaster/ScreenFade" {Properties{_Color("Color", Color) = (0,0,0,1)}SubShader{Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }LOD 100ZWrite OffZTest AlwaysBlend SrcAlpha OneMinusSrcAlphaColor[_Color]Pass{}}
}
相关文章:
Unity VR黑屏
picosdk里面的,有修改 using System.Collections; using System.Collections.Generic; using UnityEngine;public class ScreenFade : MonoBehaviour {[Tooltip("颜色")]public Color fadeColor new Color(0.0f, 0.0f, 0.0f, 1.0f);private int renderQ…...
Vue.js 中使用 Watcher 的强大场景和案例
目录 表单验证 示例代码: HTML: 获取 API 数据 示例代码: HTML: 深度监听对象变化 示例代码: HTML: 观察多个数据源 示例代码: HTML: Vue.js 是一个流行的前端框架,以其直观的数据绑定和组件驱动的开发模式而闻名。其中,watch 功能是其响应式编程模型…...
《实现 DevOps 平台(2) · GitLab CI/CD 交互》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
【机器学习sklearn实战】岭回归、Lasso回归和弹性网络
一 sklean中模型详解 1.1 Ride regression 1.2 Lasso regression 1.3 ElasticNet 二 算法实战 2.1 导入包 import numpy as np import pandas as pd from sklearn import datasets from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.linear…...
Python 爬虫项目实战六:抓取猫眼电影排行榜的数据
在这篇博客中,我们将通过一个实际的Python爬虫项目,详细讲解如何抓取网页数据。本次选择的实战项目是抓取猫眼电影排行榜的数据,通过这个项目,你将学会如何使用Python编写爬虫,从网页中提取有用的电影信息。 一、项目…...
YOLO系列:从yolov1至yolov8的进阶之路 持续更新中
一、基本概念 1.YOLO简介 YOLO(You Only Look Once):是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。 2.目标检测算法 RCNN:该系列算法实现主要为两个步骤&…...
欧拉系统离线安装界面ukui
1、官网下载安装镜像iso后,默认没有gui openEuler | 开源社区 | openEuler社区官网openEuler是一个开源、免费的 Linux 发行版平台,将通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系。同时,openEuler 也是…...
Milvus向量数据库的简介以及用途
Milvus 是一个开源的向量数据库,专门用于处理和存储高维向量数据。它可以高效地支持各种数据科学和机器学习应用,特别是在涉及到大规模相似度搜索和推荐系统等领域。 以下是 Milvus 的简介以及它的主要用途。 1. Milvus 简介 Milvus 是由 Zilliz 开发的开源分布式向量数据库…...
恒创科技:IPv4 和 IPv6 之间的主要区别
IPv4 和 IPv6 是互联网协议 (IP) 系统中使用的两种版本的 IP 地址格式。虽然它们的主要目的是准确识别、发送和接收互联网上的数据,但 IPv4 和 IPv6 之间存在许多关键差异。 地址格式 IPv4 采用 32 位格式,由 4 个数值(称为八位字节)表示,以点…...
TinyWebserver的复现与改进(1):服务器环境的搭建与测试
计划开一个新坑, 主要是复现qinguoyi/TinyWebServer项目,并且使用其它模块提升性能。 本文开发服务器配置:腾讯云轻量级服务器,CPU - 2核 内存 - 2GB,操作系统 Ubuntu Server 18.04.1 LTS 64bit 打开端口 需要打开服务器3306、80…...
【Python】练习题附带答案
1、使用for循环实现输出9*9乘法表 代码: 2、写代码实现累乘计算器。 示例:用户输入:5*9*87输出答案:3915 代码: 3、写代码实现,循环提示用户输入的内容(Q/q终止循环),…...
Springboot集成Proguard生成混淆jar包
背景 当我们需要将 JAR 包交付给第三方时,常常担心代码可能会被反编译。因此,对 JAR 包进行混淆处理显得尤为重要。 市面上有许多 JAR 包源码混淆工具,但真正能稳定投入使用的并不多。例如,ClassFinal (ClassFinal: Java字节码加…...
什么是NLP分词(Tokenization)
在自然语言处理和机器学习的领域里,咱们得聊聊一个超基础的技巧——就是“分词”啦。这个技巧啊,就是把一长串的文字切分成小块,让机器能更容易地“消化”。这些小块,不管大小,单个的字符也好,整个的单词也…...
基于深度学习的图像伪造检测
基于深度学习的图像伪造检测主要利用深度学习技术来识别和检测伪造的图像内容,尤其是在生成对抗网络(GAN)等技术发展的背景下,伪造图像的逼真程度大大提升。图像伪造检测在信息安全、隐私保护、司法鉴定等领域具有重要意义。以下是…...
Windows11 WSL2 Ubuntu编译安装perf工具
在Windows 11上通过WSL2安装并编译perf工具(Linux性能分析工具)可以按以下步骤进行。perf工具通常与Linux内核一起发布,因此你需要确保你的内核版本和perf版本匹配。以下是安装和编译perf的步骤: 1. 更新并升级系统 首先&#x…...
探索算法系列 - 前缀和算法
目录 一维前缀和(原题链接) 二维前缀和(原题链接) 寻找数组的中心下标(原题链接) 除自身以外数组的乘积(原题链接) 和为 K 的子数组(原题链接) 和可被 …...
Stable Diffusion绘画 | 提示词基础原理
提示词之间使用英文逗号“,”分割 例如:1girl,black long hair, sitting in office 提示词之间允许换行 但换行时,记得在结尾添加英文逗号“,”来进行区分 权重默认为1,越靠前权重越高 每个提示词自身的权重默认值为1,但越靠…...
利用python写一个可视化的界面
要利用Python编写一个可视化界面,你可以使用一些图形库来实现,例如Tkinter、PyQt、wxPython等。以下是一个使用Tkinter的示例代码: import tkinter as tk# 创建一个窗口对象 window tk.Tk()# 定义一个按钮点击事件的处理函数 def buttonCli…...
第13节课:Web Workers与通信——构建高效且实时的Web应用
目录 Web Workers简介Web Workers的基本概念创建和使用Web WorkersWeb Workers的应用场景 WebSocket通信WebSocket的基本概念创建和使用WebSocketWebSocket的应用场景 实践:使用Web Workers和WebSocket示例:使用Web Workers进行大数据集处理示例…...
pam_pwquality.so模块制定密码策略
目录 设置密码策略的方法pam_pwquality.so配置详解pam_pwquality.so默认密码规则pam_pwquality.so指定密码规则问题补充设置密码策略的方法 这篇文章重点讲通过pam_pwquality.so模块配置密码策略 指定pam_pwquality.so模块参数Centos7开始使用pam_pwquality模块进行密码复杂度…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
