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

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里面的&#xff0c;有修改 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 交互》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…...

【机器学习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 爬虫项目实战六:抓取猫眼电影排行榜的数据

在这篇博客中&#xff0c;我们将通过一个实际的Python爬虫项目&#xff0c;详细讲解如何抓取网页数据。本次选择的实战项目是抓取猫眼电影排行榜的数据&#xff0c;通过这个项目&#xff0c;你将学会如何使用Python编写爬虫&#xff0c;从网页中提取有用的电影信息。 一、项目…...

YOLO系列:从yolov1至yolov8的进阶之路 持续更新中

一、基本概念 1.YOLO简介 YOLO&#xff08;You Only Look Once&#xff09;&#xff1a;是一种基于深度神经网络的对象识别和定位算法&#xff0c;其最大的特点是运行速度很快&#xff0c;可以用于实时系统。 2.目标检测算法 RCNN&#xff1a;该系列算法实现主要为两个步骤&…...

欧拉系统离线安装界面ukui

1、官网下载安装镜像iso后&#xff0c;默认没有gui openEuler | 开源社区 | openEuler社区官网openEuler是一个开源、免费的 Linux 发行版平台&#xff0c;将通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系。同时&#xff0c;openEuler 也是…...

Milvus向量数据库的简介以及用途

Milvus 是一个开源的向量数据库,专门用于处理和存储高维向量数据。它可以高效地支持各种数据科学和机器学习应用,特别是在涉及到大规模相似度搜索和推荐系统等领域。 以下是 Milvus 的简介以及它的主要用途。 1. Milvus 简介 Milvus 是由 Zilliz 开发的开源分布式向量数据库…...

恒创科技:IPv4 和 IPv6 之间的主要区别

IPv4 和 IPv6 是互联网协议 (IP) 系统中使用的两种版本的 IP 地址格式。虽然它们的主要目的是准确识别、发送和接收互联网上的数据&#xff0c;但 IPv4 和 IPv6 之间存在许多关键差异。 地址格式 IPv4 采用 32 位格式&#xff0c;由 4 个数值(称为八位字节)表示&#xff0c;以点…...

TinyWebserver的复现与改进(1):服务器环境的搭建与测试

计划开一个新坑, 主要是复现qinguoyi/TinyWebServer项目&#xff0c;并且使用其它模块提升性能。 本文开发服务器配置&#xff1a;腾讯云轻量级服务器&#xff0c;CPU - 2核 内存 - 2GB&#xff0c;操作系统 Ubuntu Server 18.04.1 LTS 64bit 打开端口 需要打开服务器3306、80…...

【Python】练习题附带答案

1、使用for循环实现输出9*9乘法表 代码&#xff1a; 2、写代码实现累乘计算器。 示例&#xff1a;用户输入&#xff1a;5*9*87输出答案&#xff1a;3915 代码&#xff1a; 3、写代码实现&#xff0c;循环提示用户输入的内容&#xff08;Q/q终止循环&#xff09;&#xff0c;…...

Springboot集成Proguard生成混淆jar包

背景 当我们需要将 JAR 包交付给第三方时&#xff0c;常常担心代码可能会被反编译。因此&#xff0c;对 JAR 包进行混淆处理显得尤为重要。 市面上有许多 JAR 包源码混淆工具&#xff0c;但真正能稳定投入使用的并不多。例如&#xff0c;ClassFinal (ClassFinal: Java字节码加…...

什么是NLP分词(Tokenization)

在自然语言处理和机器学习的领域里&#xff0c;咱们得聊聊一个超基础的技巧——就是“分词”啦。这个技巧啊&#xff0c;就是把一长串的文字切分成小块&#xff0c;让机器能更容易地“消化”。这些小块&#xff0c;不管大小&#xff0c;单个的字符也好&#xff0c;整个的单词也…...

基于深度学习的图像伪造检测

基于深度学习的图像伪造检测主要利用深度学习技术来识别和检测伪造的图像内容&#xff0c;尤其是在生成对抗网络&#xff08;GAN&#xff09;等技术发展的背景下&#xff0c;伪造图像的逼真程度大大提升。图像伪造检测在信息安全、隐私保护、司法鉴定等领域具有重要意义。以下是…...

Windows11 WSL2 Ubuntu编译安装perf工具

在Windows 11上通过WSL2安装并编译perf工具&#xff08;Linux性能分析工具&#xff09;可以按以下步骤进行。perf工具通常与Linux内核一起发布&#xff0c;因此你需要确保你的内核版本和perf版本匹配。以下是安装和编译perf的步骤&#xff1a; 1. 更新并升级系统 首先&#x…...

探索算法系列 - 前缀和算法

目录 一维前缀和&#xff08;原题链接&#xff09; 二维前缀和&#xff08;原题链接&#xff09; 寻找数组的中心下标&#xff08;原题链接&#xff09; 除自身以外数组的乘积&#xff08;原题链接&#xff09; 和为 K 的子数组&#xff08;原题链接&#xff09; 和可被 …...

Stable Diffusion绘画 | 提示词基础原理

提示词之间使用英文逗号“,”分割 例如&#xff1a;1girl,black long hair, sitting in office 提示词之间允许换行 但换行时&#xff0c;记得在结尾添加英文逗号“,”来进行区分 权重默认为1&#xff0c;越靠前权重越高 每个提示词自身的权重默认值为1&#xff0c;但越靠…...

利用python写一个可视化的界面

要利用Python编写一个可视化界面&#xff0c;你可以使用一些图形库来实现&#xff0c;例如Tkinter、PyQt、wxPython等。以下是一个使用Tkinter的示例代码&#xff1a; import tkinter as tk# 创建一个窗口对象 window tk.Tk()# 定义一个按钮点击事件的处理函数 def buttonCli…...

第13节课:Web Workers与通信——构建高效且实时的Web应用

目录 Web Workers简介Web Workers的基本概念创建和使用Web WorkersWeb Workers的应用场景 WebSocket通信WebSocket的基本概念创建和使用WebSocketWebSocket的应用场景 实践&#xff1a;使用Web Workers和WebSocket示例&#xff1a;使用Web Workers进行大数据集处理示例&#xf…...

pam_pwquality.so模块制定密码策略

目录 设置密码策略的方法pam_pwquality.so配置详解pam_pwquality.so默认密码规则pam_pwquality.so指定密码规则问题补充设置密码策略的方法 这篇文章重点讲通过pam_pwquality.so模块配置密码策略 指定pam_pwquality.so模块参数Centos7开始使用pam_pwquality模块进行密码复杂度…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...

精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑

精益数据分析&#xff08;98/126&#xff09;&#xff1a;电商转化率优化与网站性能的底层逻辑 在电子商务领域&#xff0c;转化率与网站性能是决定商业成败的核心指标。今天&#xff0c;我们将深入解析不同类型电商平台的转化率基准&#xff0c;探讨页面加载速度对用户行为的…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

调试快捷键 pycharm vscode

目录 调试快捷键 pycharm vscode 修改快捷键 方法 1&#xff1a;通过菜单打开 方法 2&#xff1a;用快捷键打开 调试快捷键 pycharm Resume Program F9 Step Over F8 两个离的比较近&#xff0c;比较方便&#xff0c;比vscode的好。 vscode Continue F5 改为F9 S…...