微软MR开发技术笔记之3D APP Launchers UWP 3D图标制作

2023-10-19 21:40

本文主要是介绍微软MR开发技术笔记之3D APP Launchers UWP 3D图标制作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个笔记是2017年11、12月份我跟着Lei哥一起应邀到上海参与微软的MR混合现实UWP应用开发培训,所进行的一些技术探究。

当时总共整理记录了几篇技术总结,不经意间看到,想分享出来。心想当时也浪费了不少时间研究,技术也总是往前发展的,可能当时用的技术手段已经过时了,但还是希望能对有缘的开发者提供一些帮助。

 

一、gltf 以及glb格式的文件如果按官方推荐,使用Blender软件安装gltf插件,导出的gltf以及glb文件不带贴图。

二、研究官方提供的GLTF文件发现是用Unity导出的,因此后面采取用官方提供的UnityGLTF插件,实现Gltf文件的转换。将模型文件用UnityGLTF工具导出Gltf文件

插件链接: 

 https://github.com/KhronosGroup/UnityGLTF

Unity GLTF工具使用步骤:

步骤1:Unity中新建GLTF工程后,导入自己制作的FBX或者其它格式的模型文件,以及模型使用到的相关贴图文件。

步骤2:经测试,3D launchers 实现PBR材质(带凹凸,高光等)效果,目前需使用特定的PBR材质。

上面红框标明的Shader可以正常导出所有PBR的贴图,下面的Pbr Shader在导出Gltf格式后则缺少BaceColor贴图,因此推荐使用 PbrMetallicRoughness 材质,在Unity中调整好3D Launcher模型材质效果。

 

步骤3:在Unity菜单中选择模型,选择路径,导出GLTF文件。

三、使用 makeglb 工具将Gltf格式文件转换成Glb文件。

工具链接:https://github.com/sbtron/makeglb  

工具使用方法:使用Chrome浏览器打开Index,把所有的Gltf文件相关联的文件(包括Gltf、贴图,以及bin文件)拖放到显示的框内,即可自动下载3D Launcher使用到的Glb文件

经测试微软提供的 WindowsMRAssetConverter 

链接:https://github.com/Microsoft/glTF-Toolkit/releases 

工 具不用也是可以的,如果使用他转换,GLB文件反而体积变大了。但是模型带LOD细节级别则必须要使用 WindowsMRAssetConverter 转换工具。

四、将Glb文件复制到UWP项目的资源文件夹下面,并将其内容改为True。

动画的添加

技术参考链接:

https://docs.microsoft.com/zh-cn/windows/mixed-reality/creating-3d-models-for-use-in-the-windows-mixed-reality-home#animation-guidelines

 

3D launcher动画添加步骤:

1、从3D软件中制作好模型,指定好相关的材质与贴图,如果模型需要凹凸、反射、高光等效果,需要按照PBR材质的制作流程(PBR流程贴图最终输出为Albedo,Normal,Metalness,Roughness(以金属度,粗糙度流程为例))。导出带动画的FBX文件。

2、https://github.com/KhronosGroup/glTF#editors-and-modeling-tools 从此链接下载FBX转换GLTF文件工具-FBX2glTF-windows-x64.exe

用命令符把FBX文件转换成为GLTF格式的文件。

3、在电脑上下载安装Visual Studio Code,glTF Tools for Visual Studio Code ,VS Code很方便打开和编辑预览GLTF文件,并且可以导出GLB格式的文件。

4、将FBX转换好的GLTF文件用VS Code打开,在最末尾加上:图示的这一段语句。将动画触发器添加到GLTF模型JSON中。

5、保存文件,在VS Code编辑器标题栏右键选择导出GBL文件。

6、把GBL文件复制到UWP项目的资源文件夹下面,并生成操作为内容。

7、配置3Dlaundher 的指定路径。

8、在混合现实门户中选择生成的UWP应用,创建3DLauncher。用户接近3Dlauncher,触发动画。

 

重点注意:

经测试,目前带动画模型超过32个网格数量时,混合现实门户识别不出来,显示无法放置。如果超过32个网格数量的模型需要优化模型。

不支持透明贴图

动画持续时间:不超过20分钟

变形动画顶点:不超过8192

动画帧数:不超过36,000

支持多个动画导出及使用,

使用Maya2glTF插件:https://github.com/WonderMediaProductions/Maya2glTF
 

文中的一些技术笔记、工具、链接可能已经过时失效,我暂时也没有精力验证和更新,也不知是否有必要?所以还请谅解。

 

至此本文完!

这篇关于微软MR开发技术笔记之3D APP Launchers UWP 3D图标制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242534

相关文章

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32