美文网首页
Unity外部动态加载glTF glb模型

Unity外部动态加载glTF glb模型

作者: U3D界金城武 | 来源:发表于2020-08-05 09:17 被阅读0次

GLTF介绍

简单来说就是 方便实时的外部加载模型 尤其用在webGL上 从服务器获取模型进行加载
官方介绍

下载

GLTFUtility插件下载
Newtonsoft.Json-for-Unity 下载 :插件需要此dll

使用

using Siccity.GLTFUtility;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 加载GLB模型单例
/// </summary>
public class GLTFUtilityScript
{
    private static GLTFUtilityScript instance;
    public static GLTFUtilityScript Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new GLTFUtilityScript();
            }
            return instance;
        }

    }

    Action action;
    public GameObject obj;
    bool isCreate = true;

    /// <summary>
    /// 同步加载 gltf and glb (不建议使用)
    /// </summary>
    /// <param name="filepath">路径</param>
    /// <param name="action">回调函数</param>
    public void ImportGLTF(string filepath, Action action)
    {
        UnloadAndDestroy(obj);
        obj = Importer.LoadFromFile(filepath);
        action = this.action;
    }

    /// <summary>
    /// 异步加载 gltf and glb   
    /// </summary>
    /// <param name="filepath">路径</param>
    /// <param name="action">回调函数</param>
    public void ImportGLTFAsync(string filepath, Action action)
    {
        if (!isCreate) return;
        isCreate = false;
        UnloadAndDestroy(obj);
        Importer.LoadFromFileAsync(filepath, new ImportSettings(), OnFinishAsync);
        action = this.action;
    }

    public void ImportGLTFAsync(string filepath)
    {
        if (!isCreate) return;
        isCreate = false;
        UnloadAndDestroy(obj);
        Importer.LoadFromFileAsync(filepath, new ImportSettings(), OnFinishAsync);
    }

    public void ImportGLTAsync()
    {
        obj = new GameObject ();
    }

    /// <summary>
    /// 加载完后的回调
    /// </summary>
    /// <param name="result">加载出来的物体</param>
    /// <param name="clip"></param>
    void OnFinishAsync(GameObject result, AnimationClip[] clip)
    {
        obj = result;
        isCreate = true;
        Debug.Log("Finished importing " + result.name);
        if (action != null)
            action();
    }

    /// <summary>
    /// 删除卸载 所有加载过的模型 清除缓存
    /// </summary>
    public void UnloadAndDestroy(GameObject obj)
    {
        if (obj != null)
        {
            GameObject.Destroy(obj);
        }
        Resources.UnloadUnusedAssets();
    }

    ///// <summary>
    ///// 删除卸载 所有加载过的模型 清除缓存
    ///// </summary>
    //public void UnloadAndDestroyALL()
    //{
    //    Resources.UnloadUnusedAssets();

    //}

}

问题

unity 直接加载没问题 打包会加载不出来 报错:着色器


需要把插件里的shader 放入unity 的图形设置里


OVER

相关文章

  • Unity外部动态加载glTF glb模型

    GLTF介绍 简单来说就是 方便实时的外部加载模型 尤其用在webGL上 从服务器获取模型进行加载官方介绍 下载...

  • cesium 4 gltf模型处理与加载

    4 gltf模型处理与加载 Cesium所支持的模型数据类型目前所知的有gltf、glb、bgltf等格式的模型数...

  • Csium小车模型移动

    本文主要讲解Cesium加载小车模型(glb或gltf),并在三维地球上移动。 访问http://127.0.0....

  • ArcGIS JS 4.x 导入3D模型

    ArcGIS JS 4.11后支持加载GLTF/GLB格式的3D模型了,但是对模型有一定要求,具体可以去官方查看。...

  • Unity 加载.glb模型

    Unity本身无法识别的,需要借助插件。 一、首先添加JSON .NET 进入资源商店:https://asset...

  • gltf模型详解

    一、文件结构 二、gltf模型信息详解 1、数据结构: 2、概述 模型加载顺序为,先加载gltf文件,然后解析依次...

  • 加载GLTF模型

    运行结果: 总结: 要使用GLTFLoader,需要先加入GLTFLoader.js文件; 在GLTFLoader...

  • cesium 海量gltf三维模型可视化

    加载海量模型时,除了使用3dtiles,还可以使用ModelInstanceCollection来批量加载gltf...

  • vue-cli3 使用 cesium 创建 gltf/glb 3

    说下踩坑经历吧,之前一直把 3d 模型(gltf/glb) 文件放在项目目录里面,然后在组件中引入,一直会报错.网...

  • Cesium gltf模型姿态动态调整

    Cesium 动态调整 gltf模型姿态:包含中心点、平移、旋转、缩放。 效果 代码

网友评论

      本文标题:Unity外部动态加载glTF glb模型

      本文链接:https://www.haomeiwen.com/subject/cohnrktx.html