首页 > 其他分享 >使用model-viewer加载glb文件

使用model-viewer加载glb文件

时间:2024-11-15 13:18:16浏览次数:1  
标签:modelViewerPle index viewer 100% import model glb

实现效果

代码

react项目

  • 引入方式可选其一

1.在html中引入

<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
  1. npm 或者 yarn安装
yarn add @google/model-viewer
  • index.js
import React, { useState, useEffect } from 'react';
import { Spin } from 'antd';
import s from './index.less'

import model from './images/3d/three.glb';

export default function Three(props) {
    const [loading, setLoading] = useState(true)

    useEffect(() => {
        if (props.show) {
            const modelViewerPle = document.querySelector('#model');
            modelViewerPle.addEventListener('progress', (event) => {
                const loaded = event.detail.totalProgress;
                if (loaded === 1) {
                    setLoading(false)
                }
                console.log('loading-progress', loaded);
            });
            modelViewerPle.addEventListener('load', async () => {
                console.log('load',)
            })
        }
    }, [props.show])

    return (<div className={s.threeCon}>
        <div className={s.modelCon}>
            {
                loading ? <div className={s.loadingCon}>
                    <Spin
                        delay={300}
                        tip="加载中..."
                        size='large'
                        fullscreen
                        spinning
                    ></Spin>
                </div> : null}
            <model-viewer
                id='model'
                src={model}
                alt="A 3D model of an astronaut"
                // ar
                // auto-rotate
                camera-controls
                max-camera-orbit="auto 90deg auto"
                style={{ width: '100%', height: '100%' }}
            ></model-viewer>
        </div>
    </div>
    )
}

index.less

.threeCon {
    width: 100%;
    height: 100%;
    margin: 0 auto;

    .modelCon {
        width: 100%;
        height: 100%;
        position: relative;

        .loadingCon {
            width: 100%;
            height: 100%;
            background-color: rgba(15, 70, 94, 1);
            display: flex;
            align-items: center;
            justify-content: center;
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            z-index: 9;
        }
    }
}

本项目使用webpack,所以需要加下配置
先需要安装 file-loader 插件

export.default = {
    module: {
        rules: [
            ...
            {
                oneOf: [
                    {
                        test: /\.(glb|gltf)(\?.*)?$/,
                        use: [
                            {
                                loader: 'file-loader',
                                options: {
                                    outputPath: 'models', // 输出路径
                                    // limit: 2048, // 2kb
                                }
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

标签:modelViewerPle,index,viewer,100%,import,model,glb
From: https://www.cnblogs.com/ZerlinM/p/18547787

相关文章

  • 界面控件DevExpress Blazor UI v24.1新版亮点 - 全新PDF Viewer等组件
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。DevExpress Blazor控件目前已经升级到v24.1版本了,此版本发布了全新的PDF......
  • 界面控件DevExpress Blazor UI v24.1新版亮点 - 全新PDF Viewer等组件
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。DevExpress Blazor控件目前已经升级到v24.1版本了,此版本发布了全新的PDF查......
  • 自主研发RPA,基于uiautomatorviewer的自动化代码生成器,一键生成Java代码和Cucumber描述
    介绍基于UIAutomator进行二次开发,让你不懂开发也能编写自动化测试代码, 一边生成代码一边Debug,毫不费力写出完美的自动化测试代码 。该工具集成了Tomcat使得添加新的功能的时候使用HTML+API进行开发,降低了开发难度;集成了Derby数据库,测试用例持久化到数据库。软件架构采用HTML......
  • Vue2.0的v-model指令
    Vue2.0的v-model指令    v-model="属性"写在标签中上,相当于在一个标签上,同时写了  :value='属性值'  @iinput='handler' ,而handler对应的函数如果没有声明,就是给该属性值赋值的setter函数代码一: <!DOCTYPEhtml><htmllang="en"><head><meta......
  • 基于华为云FunctionGraph和ModelArts的智能动漫头像生成:从自拍到AI风格化的编程
    文章目录1引言2背景介绍2.1华为云FunctionGraph与ModelArts简介3项目准备3.1注册与登录华为云账号4实验步骤4.1首先我们配置云主机4.2安装FunctionGraph插件4.3创建函数4.4部署函数4.5函数配置委托4.6函数配置触发器4.7函数添加依赖包4.8订阅模型并部署A......
  • NLP论文速读(斯坦福大学)|生成式奖励模型(Generative Reward Models)
    论文速读|GenerativeRewardModels论文信息:简介:   这篇论文探讨了如何提高现代大型语言模型(LLMs)的性能,特别是在强化学习从人类反馈(RLHF)过程中的效率和效果。RLHF方法虽然有效,但它需要大量的人类偏好数据来训练奖励模型,这不仅资源密集,而且技术上具有挑战性。此外,现......
  • MVVM(Model-View-ViewModel)模型
    MVVM(ModelViewViewModel)模型是一种常用于软件开发中的架构模式,尤其在前端框架(如Vue.js、React、Angular)中被广泛应用。它将程序的用户界面与业务逻辑分离,便于维护和扩展。 MVVM的三个组成部分1.Model(模型):  表示应用程序的核心数据和业务逻辑。  处理数据的获取......
  • GIT RE-BASIN: MERGING MODELS MODULO PERMUTATION SYMMETRIES (1)
    在深度学习模型的训练过程中,经常会遇到这样的现象:每次训练,虽然初始值、随机种子、训练数据的顺序不一样,但是得到的loss曲线都差不多,在验证集上的结果也差不多.这篇论文从landscape的角度解释了这个问题:神经网络的losslandscape并不是我们想象中的很混乱、毫无规律,而是在per......
  • SciTech-BigDataAIML-Statistical Model-Topics Model主题模型-LDA(Latent Dirichilet
    SciTech-BigDataAIML-Algorithm-Heuristic启发式-StatisticalModel(统计概率模型)的一种TopicsModel(主题模型)LDA(LatentDirichiletAllocation)TopicsModel主题模型。LDA(LatentDirichiletAllocation,潜在狄利克雷分布)是一种TopicsModel(主题模型),用于在Lar......
  • LLMOps Essentials: A Practical Guide to Operationalizing Large Language Models
    LLMOpsEssentials:APracticalGuidetoOperationalizingLargeLanguageModelshttps://www.datacamp.com/blog/llmops-essentials-guide-to-operationalizing-large-language-models Whenwe,asusers,interactwithChatGPT,wesimplytypeapromptintothewe......