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模块进行密码复杂度…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
【R语言编程——数据调用】
这里写自定义目录标题 可用库及数据集外部数据导入方法查看数据集信息 在R语言中,有多个库支持调用内置数据集或外部数据,包括studentdata等教学或示例数据集。以下是常见的库和方法: 可用库及数据集 openintro库 该库包含多个教学数据集&a…...
