自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XR风云

云计算、边缘计算、当前转身VR/AR研究。联系方式:[email protected]

  • 博客(143)
  • 资源 (3)
  • 收藏
  • 关注

转载 云厂商虚拟机性能测试

UnixBench 会执行一系列的测试,测试系统各个方面的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值。SuperPI 是一个计算圆周率的计算机程序,最大精确到小数点后的3200万位数,是一种快速参考基准测试,常用于超频或比较不同的 CPU 和硬件配置。执行上述命令后,计算用时回显如下图所示,数值越小,表明时间越短,说明计算能力越强。执行该命令后,本地和跨插槽内存延迟的矩阵会打印在屏幕上,数值越低,代表延迟越低。执行以下命令,进行单核测试。

2023-08-09 20:19:51 294

原创 云原生服务更换二进制调测方法

当前我们开发的服务基本都是云原生的服务,都跑在容器中,在开发过程中,想更换二进制文件调测就相当麻烦了,今天写了一个脚本,供大家参考。基本逻辑就是使用docker cp命令把host机器上的文件拷贝到容器中,然后给他更换权限。

2023-05-10 19:58:51 253

原创 VR渲染之Stereo Rendering解析

VR渲染的独特和最明显的方面之一是需要生成两个视图,左右眼睛各一个。我们需要这两个视图来为观众创建立体3D效果。

2022-12-21 10:35:41 2061

原创 远程登录云上显卡(英伟达RTX5000)的主机,解决游戏应用帧率降低的问题

最近在使用游戏引擎开发一款游戏应用,在自己的开发机上(显卡RTX4000),帧率能够跑到60fps。我们就在云厂商上买了一台RTX5000的虚拟机,远程登录跑我们的游戏引擎,但是帧率怎么都上不去,只能跑到30fps,RTX5000的显卡肯定比RTX4000的显卡好啊,为啥还帧率还越来越低了呢?自己也看了一下,远程登录运行应用,帧率会有所降下来的。那怎样解决这个问题呢?

2022-09-22 09:54:28 2446

原创 Unity 引入maven https链接的报错问题

我们在这里已经知道怎样Unity中配置第三方库的方法。最近公司了为了安全的问题,把maven的地址由http改为https了,改成https之后就出现问题了。

2022-09-20 09:56:44 1102

原创 Unity代码通过Package Manager导入包的方法

今天在做一个项目,项目中依赖于很多其他的Package,其他的Package又是通过tgz包提供的,没有放到中心仓库,要是通过PackageManager界面导入需要一个一个点击加载,费时又费力,那我就写了一个脚本,点击importpackage,就会扫描Packagetgz目录,把所有的Package加载进来,这个方法无法做到依赖包关系,需要你自己多加载几次。...

2022-07-20 19:05:12 2078

原创 Unity的相机的世界坐标Postion、Rotation、Scale怎样转换成View矩阵

最近在做端云协同渲染,会上报相机的世界坐标Postion、Rotation、Scale,没有保存View矩阵,那怎样根据Postion、Rotation、Scale获取得到View矩阵呢?我们知道Camera.worldToCameraMatrix可以直接获取得到view矩阵,这个矩阵是跟OpenGL保持一致的。我们知道Matrix TRS可以根据Postion Rotation Scale获取得到转换矩阵,所以根据Postion Rotation Scale获取得到View矩阵的公式为:更简单的计算

2022-07-13 14:52:28 1212

原创 Android上使用NDK MediaCodec硬解码到纹理上

在之前写过在Android平台上通过MediaCodec的能力,硬解码到纹理上,然后在Unity上使用纹理进行渲染。在Unity使用Android的MediaCodec硬解码能力进行纹理加载_XR风云的博客-CSDN博客在做AR云渲染项目中,需要在Unity中利用Android的MediaCodec能力进行对视频进行硬解码,我们知道MediaCodec可以把视频流渲染到一个surface上,怎样把视频流中的纹理在Unity中使用呢?一个办法就是MediaCodec解码完成之后,可以把图像的缓存读取出来,在U

2022-06-17 14:48:45 2031

原创 Unity上玩转数字人(Avatar)

现在数字人越来越有趣了,现在好多公司都在做,那我也想在Unity玩转一下,怎么玩呢?首先我们需要有数字人资源,数字人资源从哪来呢?第一你可以直接去Unity assetstore上去搜一下免费的数字人,有2个还是比较好的资源。第二可以是自己制作, 打开网址https://vrchat.readyplayer.me/avatar上传一个图片就可以自己捏脸,制作一个自己的avatar了。下面就是我根据关晓彤捏出来的,是不是捏出来的非常不像,这个网站是偏欧美化的,很多材质都很欧美风,所以希望有国内的做出来一个可以

2022-06-01 08:45:29 10219 5

原创 Unreal Engine源代码git clone方法

今天想下载Unreal Engine源代码下来研究研究,我以为像以前git clone一样这么简单就能把代码下载下来呢,但是Unreal Engine组织做了很多安全的事情,并没有这么简单下载下来。大部分人首次去Epic 的github官网首页上都看不到UnrealEngine这个工程的,为什么呢?Epic公司把这个做了账号绑定,只有你Epic的账号绑定到github的账号,才能正常查看UnrealEngine代码。账号绑定接下来我们就一步步来把Github账户关联到Epic Game.

2022-05-10 16:38:29 3406 3

原创 Unity Android多线程实时更新纹理数据

在上一文我们对Unity实时更新纹理数据做了一些研究,但是最后有一步骤,texture.Apply()依然需要在渲染线程中执行,这个函数其实也是非常耗时的,依然会影响到应用的FPS。这篇文章用了另外一条思路,就是开一个线程,主要处理纹理更新的线程,主要是参考了Unity 的NativeRenderingPlugin插件来写的,搞一个Unity单独更新纹理的插件。1、EGL在Android平台上,EGL是OpenGL ES与本地窗口系统(本机窗口系统)之间的通信接口,其主要功能:与设备的原生窗

2022-05-06 17:17:55 3416 2

原创 Unity中实时更新图片的方法探究

背景最近继续在做VR会议,在共享桌面这一块遇到了一个棘手的问题。在会议中,共享的桌面是通过发送一帧一帧的图片来实现的。在Unity中需要把图片渲染出来。3个难点在Unity实时的渲染图片有3个难点:在往texture中灌数据的时候是一个非常耗时的工作,如果是在主线程中做的话,是会影响帧率的。 服务端传过来的图片格式数据为RABG格式,是一个不规范的格式,没有办法直接赋值到texture中,需要做一次转换,转成RGBA格式或者ARGB格式。 texture.Apply函数,是把CPU中的数

2022-03-30 15:05:10 4192

原创 Unity中世界坐标与相对于某个物体的相对坐标的转换

最近在开发XR会议, 会上报一些姿态信息在多个端侧进行同步,由于在不同的端侧定位的位置是不一样的,如果你上传的是世界坐标,其实你在另个端侧根本就不能定位出来。所以我们在上报姿态信息时,都是相对于某个物体的相对坐标,然后在端侧在进行转换成相对坐标。设定roomObject为你要改变的相对物体,世界坐标转换成相对于roomObject这个物体的相对坐标: Vector3 headLocalPosition = roomObject.transform.InverseTransformPoint

2022-03-08 19:19:31 7099 1

原创 Unity中使用XR Input获取XR设备中手柄的姿态信息

在上一篇博客Unity在XR设备中获取手柄的按键信息_XR风云-CSDN博客我们知道怎样获取手柄的按键信息,那怎样获取得到手柄的姿态信息呢?也是很简单的了,Unity的XR Input已经帮我们对接上Oculus平台,能够获取手柄姿态信息。1、根据输入设备的类型获取设备,设备类型包括如下,我们今天是获取手柄信息,主要用到Left或者Right。 // // 摘要: // A set of bit flags describing XR.InputDevice ch

2022-03-04 09:17:44 6495

原创 Unity在XR设备中获取手柄的按键信息

我们在平常的XR设备开发中,尤其适用VR设备的时候,会用到手柄的操作。我们知道Oculus SDK提供了OVRInput,能够获取得到手柄的按键信息。// public variable that can be set to LTouch or RTouch in the Unity Inspectorpublic Controller controller;// returns a float of the Hand Trigger’s current state on the Oc.

2022-03-02 19:36:02 12572 5

原创 Unity如何导入已被烘焙的模型

最近在使用Unity做VR虚拟会议,美术给我们的会议房间资源是经过烘焙好的贴图,所以是不需要打光,亮度就非常亮的。当我们把fbx导入到Unity中,Unity显示的资源都非常的偏暗,基本没有光照信息,打开烘焙好的贴图,但是看贴图又是很亮,如何破解这个问题呢?1、首先我们资源文件拖到Unity中,点击资源文件的fbx,在Inspector中旋转Matrials,点击Extract Matrials,我们先抽离出来材质。2、导出材质到Materials目录下,选中你需要修改烘焙贴图的材质,勾选上Em

2022-01-28 15:20:52 2905

原创 Unity如何批量修改材质的属性

Unity导入fbx资源文件的时候,需要修改材质的某个属性,其实修改某个属性为同一个值还是比较简单的,只需要全选所有的材质,然后在Inspector里面进行修改就行了,就会批量修改所有的材质属性。如果修改很多的材质,每个属性都不一样呢?我这边写了一个脚本来进行操作。具体的步骤为:1、根据材质目录获取所有的材质路径2、根据材质路径加载所有的材质,并对每个材质修改属性。3、保存修改的材质。下面展示了我在修改烘焙材质的例子,大家可参考。主要我们Emission下面的Color贴图跟Albe

2022-01-28 15:17:01 4933

原创 Unity调用jar包或者aar包

最近一直在做VR云会议,使用到了华为云会议的服务,华为云会议服务没有提供Unity版本的SDK,提供了Android版本的native sdk,那就自己只能在Unity中自己封装一层来调用Android接口。在这过程中,碰到了一些问题,做一下总结。1、获取当前的Application或者当前的Activity using AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityP

2022-01-24 16:28:01 7091

原创 Oculus Quest,Unity开发如何开启虚拟键盘

最近在做一个VR虚拟会议,用到输入框,点击输入框的时候,需要开启虚拟键盘。我们主要使用了Oculus,集成了Oculus的SDK,也使用了MRTK作为我们开发3D界面的组件。我是使用的Unity2020.3.7版本,在Package Manager中安装了Oculus,MRTK:是由 Microsoft 驱动的项目,它提供了一系列组件和功能来加速 Unity 中的跨平台 MR 应用开发。 MRTK提供了TMP_KeyboardInputField,能够作为输入框,并且能够自动调用系统的虚拟键盘,

2022-01-22 08:23:33 3145 2

原创 解决UnityGLTF不支持Android手机端不能读取StreamingAssets目录下文件的问题

解决UnityGLTF不支持Android手机端不能读取StreamingAssets目录下文件的问题

2021-12-25 16:45:14 7102 4

原创 Unity引入自定义aar库,aar库又依赖其他第三方库,如何破?

最近开发一个VR上项目,这个项目想集成一个云上的SDK,但是这个SDK只发布了JAVA版本aar库,没有Unity版本。那只能自己想办法把aar库集成到Unity项目中。在这个集成过程中,发现这个aar库还依赖于第三方库,所以在Unity版本的apk运行的的时候,就会报错Unity AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/gson/GsonBuilder等。202

2021-10-20 10:32:27 3778

原创 VR开发者如何把Oculus Quest中的录制视频导出

最近在开发Oculus上的一个APP,在向上级汇报的时候,录制了一段视频,那怎样把这段视频导出到个人的PC上呢?之前用过Android Studio开发过手机的APP,之前可以在Android Studio上之间看到整个手机的目录。Oculus也是Android的系统,是否可以用相同的办法呢?打开Android Studio,在右下角有个Device File Explorer,打开就可以看到Oculus的整个目录结构了。录制的视频保存在目录sdcard/Oculus/VideoShots.

2021-10-14 09:18:13 6839 2

原创 看看2016年科幻元宇宙原型,2021年了我们还在为实现努力

Facebook:发力XR技术,打造下一个十年的计算平台,构建全产业竞争力

2021-10-09 08:47:56 178

原创 Unity2019版本打包一直停留在 detecting current sdk tools version的解决方案

1、我公司一般都是通过代理访问外网的,至于unity 如何设置代理,可以参考我这篇博客。2、所以按照Unity的android版本打包就非常的麻烦。所以Unity依赖的android SDK JDK我这就不赘述了,很多博客都有在写这块怎么安装。3、在所有的安装完成之后。我们需要安装Gradle-5.6.4以及Gradle的plugin 3.6.0,这一步很关键,Unity在打包的时候回用到Gradle-5.6.4,而Gradle以及它的插件缓存就很重要了。打开android stu.

2021-08-12 19:17:23 5210 1

原创 试用华为3D建模服务

我们知道苹果还有一些其他的公司都出了拿着手机对物体扫描就可以自动生成3D模型,最近看到华为消费者终端出了一款3D建模服务,就迫不及待的来试用一下。1、我们自己拿华为3D建模demo来进行试用。首先在github上下载3D建模服务的demo代码。代码地址如下:...

2021-07-31 09:43:55 3241 8

原创 Unity小实用八-使用input system进行单指/双指的手势操作

1、在package manager中先安装Input system 包。2、安装完成之后,创建input action。创建单手指操作,创建一个获取单手指位置的action,一个获取单手指交互的action。3、创建双手指的操作,创建一个获取第一个手指位置的action,一个获取第二个手指位置的action,一个获取第二个手指交互的action。4、创建InputManager.cs脚本,用来管理所有的操作信息。using System;using System.Collections

2021-07-27 17:30:28 4517

原创 Unity小实用七-简单的MessageBox

在工作的开发中,比如请求失败了,需要弹窗告知用户。自己就搞了个简单的MessageBox。能够满足我日常的弹窗要求。使用方法就很简单,就一行代码就能够弹窗。 /// <summary> /// 弹窗接口 /// </summary> /// <param name="title">弹窗的标题</param> /// <param name="body">弹窗的具体信息</param&gt...

2021-07-16 15:53:51 1597 1

原创 Unity场景导出GLTF格式的文件方法

最近需要在Unity中解析GLTF文件,以及能够导出Unity的场景信息。经过查询,最后决定使用UnitGLTF这个开源库。1、首选下载代码,git clone https://github.com/KhronosGroup/UnityGLTF.git2、打开UnityGLTF项目3、打开项目之后,选择Samples下面的一个场景,在Console有超多的错误信息。Assets\UnityGLTF\Runtime\Scripts\Extensions\SchemaExtensio

2021-07-15 08:57:01 4788 8

原创 Unity小实用六-Unity编辑中的字符串下拉框(String Dropdown)

在Unity中,enum类型会默认转换为下拉框进行选择。但是在平常的使用中,有时候还是非常不方便,我想要字符串作为选择呢?找Unity官方的方法,没有找到,那就自己进行进行定制了。第一步:需要我们定义一个自己的StringInList属性。然后增加到Inspector中可以进行编辑。文件名为: StringInListDrawer.cs代码如下:using System;using UnityEngine;#if UNITY_EDITORusing UnityEditor;#en

2021-06-08 15:58:06 2073 4

原创 Unity Render Streaming,3D模型流式云渲染的解决方案

Unity Render Streaming是Unity开源的一个高质量、高复杂的3D模型在云端渲染,手机端侧、浏览器显示的解决方案。此解决方案的流技术利用了WebRTC,开发人员甚至可以使用WebRTC包创建自己独特的解决方案。WebRTC的安装使用我们在此前的博客中说过了,大家可以看我之前的博客查看怎样安装。好,现在我们开始搭建一个Unity Render Streaming来看看demo的运行。一、Unity Render Streaming安装部署以及案例的运行1、首先创建一个工程,

2021-05-29 09:48:18 13752 15

原创 Unity开源的webrtc库,为流式远程渲染提供视频流传输方案

最近的项目中,可能会用webrtc跟Unity的结合,那就先研究一下webrtc怎样玩呗。那就找找看看有没有开源的的项目可以进行借鉴。幸得Unity官方自己出了一个Unity结合Webrtc的开源项目com.unity.webrtc,这个项目可以在Package Manager直接进行安装。那我就安装好完一下例子呗。1、首先创建一个工程,在Package Manager 的Advanced中首选勾选上Show preview packages,否则你查询不断webrtc。2、安装webrtc

2021-05-25 20:30:01 8736 17

原创 华为AREngine背景图变形(图片比例不正确)的问题

在利用华为AREngine开发的过程的,发现华为AREngine返回的摄像头背景图变形,物体被拉长了。初步定为摄像头的投影矩阵不正确。然后根据投影矩阵打印了一下,fov与aspect,发现aspect为0.78,如果是手机16:9的比例的话,应该大概是0.56左右。因此发现图片的长宽高比例不正确。那继续研究AREngine的接口,发现ARSession有个设置长宽的接口setDisplayGeometry,可以设置AREngine的长宽比。如果没有设置的话,就会默认使用手机自带的长宽比(1080, 14

2021-05-25 10:49:59 376

原创 Unity小实用五-对象的渲染顺序设置

最近在调AR云渲染服务的时候,我们都知道需要从AREngine或者ARCore获取得到摄像机的图片,作为我们渲染的背景图。背景图一般都是最后渲染,或者深度最深的背景。所以我们在写渲染背景图的Shader时,就会在Shader中设置Tag为: Tags { "Queue" = "Background" "RenderType" = "Background" "ForceNoShadowCast...

2021-05-24 11:21:07 251

原创 解决AR Foundation在Unity2019.3版本无法编译发布到android手机的问题

最近在使用AR Foundation开发一些AR应用,在编译的时候,碰到一个问题。就是Gradle报错,定位了一下,查找到了解决方法。当前我使用的Unity 2019.3版本,所以在编译android版本的时候,需要注意。报错信息如下:[:arcore_client:] C:\Users\y00384577\.gradle\caches\transforms-2\files-2.1\b6f763c3be184b6b50c3a1bb135fb791\AndroidManifest.x..

2021-05-21 10:56:38 3060 6

原创 Unity小实用四-强大的Runtime Inspector & Hierarchy,助你提高手机端调试效率

Runtime Inspector & Hierarchy是一个简单而强大的Unity 3D运行时检查器和层次结构解决方案,能够在Unity支持的几乎任何平台上工作,包括移动平台。这有4种安装安装:1、导入RuntimeInspector.unitypackage到你当前的开发工程中2、git clone或者下载源代码,然后把Plugins这个文件放到你工程的Assets目录下。Git地址为:https://github.com/yasirkula/UnityRuntimeInspe..

2021-05-20 16:06:09 2450

原创 Unity小实用三-Computer Shader使用RenderTexture类型进行数据的接收

我们知道compute shader的代码如下,我们Result使用RenderTexture类型接收数据// Each #kernel tells which function to compile; you can have many kernels#pragma kernel CSMain// Create a RenderTexture with enableRandomWrite flag and set it// with cs.SetTextureRWTexture2

2021-05-18 15:27:33 927

原创 Unity小实用二-配置visual studio查看依赖库代码的方法

我们在平常看Unity代码,都是使用visual studio作为外部编辑器,但是有时候看依赖库的的函数,经常定位不进去,报无法导航到插入点下面的符号,如下图所示的错误。这是因为我们vs的工程代码没有把依赖库的代码导入进来,所以定位不到函数所在的位置。解决办法:Edit-> Preferences->External Tools,把Registry packages勾选上,然后点击Regenerate project files。就会把我们从pakage manager安装的代.

2021-05-13 17:07:08 736 4

原创 Unity小实用一:选择绑定在其他组件上挂载的脚本

今天看开源Unity的代码,看到一个组件上的参数选择挂载了其他组件上的一个脚本,自己就尝试去绑定一下,好像绑定不到哦。那别人是怎样搞得呢?自己实践出来一个方法,如果Unity大神有更好的方法,请告知我,多谢。1、首先选中操作的组件,然后点击Inspector上右上角的小锁,进行锁定。2、点击Inspector上右上角的小三点,选择Add Tab->Inspector, 会弹出一个新的Inspector,我们把它拖出来,跟上一个Inspector并排。3、然后我在选择我们脚本

2021-05-12 10:36:41 1657 1

原创 Unity制作适配全屏的Quad图形

在Unity项目中,有时候需要呈现一直跟随摄像头移动的,能够全屏的一个quad长方形,quad加载纹理,就可以一直显示全屏了。把这个脚本绑定到Camera上,具体代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;public class camera : MonoBehaviour{ private GameObject _textureQuad; privat

2021-05-10 19:17:21 2620 2

原创 在Unity使用Android的MediaCodec硬解码能力进行纹理加载

在做AR云渲染项目中,需要在Unity中利用Android的MediaCodec能力进行对视频进行硬解码,我们知道MediaCodec可以把视频流渲染到一个surface上,怎样把视频流中的纹理在Unity中使用呢?一个办法就是MediaCodec解码完成之后,可以把图像的缓存读取出来,在Unity中利用Texture2D 的LoadRawTextureData能力加载到一个纹理上去, 然后在经过YUV格式转换成RGB格式。这个方法非常耗性能,需要从GPU->CPU->GPU的链条,是非常耗

2021-05-07 17:01:27 2525 11

Unity 多线程实时更新纹理数据(Android平台)

我们需要实时更新纹理数据,如果在主线程中更新,会影响帧率。当前我们在​Unity中搞了一个Naitve Plugin插件,开一个线程,主要处理纹理更新的线程,这样就不会影响主线程的帧率。 适合人群:研究多线程渲染的人群 语言:Unity以及C++语言 在压缩包中主要为2个压缩包,一个为Unity项目工程,一个为Plugin插件工程,一个操作指南,希望对你们有些帮助。

2022-05-06

单手指-双手指手势操作,可以旋转相机

单手指-双手指手势操作,可以旋转相机

2021-07-27

Unity弹窗提示窗口

Unity弹窗提示窗口

2021-07-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除