首页 > 其他分享 >在react 中还有另外一种three.js 渲染方式

在react 中还有另外一种three.js 渲染方式

时间:2024-09-09 13:51:47浏览次数:11  
标签:GLTFLoader 模型 three js react useLoader import


npm install @react-three/drei

利用标签去渲染模型

import React, { useRef,useEffect, useState } from 'react';
import { Canvas, useFrame, useThree,useLoader } from '@react-three/fiber';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
import { OrbitControls } from '@react-three/drei';
import * as THREE from 'three';
function BuildingModel({  }) {
  const [position, setPosition] = useState([130,120,10]);
  
    // 使用useLoader钩子加载GLTF模型
  const gltf = useLoader(GLTFLoader, './绿植单元模型.glb');
  useFrame(() => {
    // 更新模型状态,如动画等
   
  });


  return (
        <mesh
            position={position}
            rotation={[0.9, 0.09,0.02]}  
             >
            <primitive object={gltf.scene} />
        </mesh>
  );
}



export default function App() {


  

    return (
        <Canvas 
            camera={{   type: 'perspective',position: [0, 188, 60] ,fov:120}} style={{width:'100%',height:'100vh'}}>
            <ambientLight  intensity={1}/>
            <directionalLight position={[0, 10, 0]} intensity={1} color="#ffffff" /> 添加定向光源
            <BuildingModel position={[0, 0, 60]}  />
            <OrbitControls 
                    // ref={controlsRef }
                    enableZoom={false}
                    target={[0,180, 60]} // 设置围绕的目标点
                    enablePan={false} // 禁止平移
                    minDistance={5} // 最小距离
                    maxDistance={22} // 最大距离
                    minPolarAngle={Math.PI/16} // 最小俯仰角(从上方)
                    maxPolarAngle={Math.PI/16} // 最大俯仰角(到水平 />
                />
        </Canvas>
  );
}

标签:GLTFLoader,模型,three,js,react,useLoader,import
From: https://blog.51cto.com/u_15482477/11960681

相关文章

  • json.dumps(data.__dict__) 会把中文字符转义为 Unicode 码点
    在Python中,json.dumps()函数会将Python对象序列化为JSON字符串,并默认使用UTF-8编码来处理非ASCII字符。虽然在Python3中,字符串是默认以Unicode形式存储的,但是当json.dumps()将Python字符串转换为JSON格式时,非ASCII字符会自动被转义为Unicode码点(例如\u......
  • linux手动安装nodejs
    1.下载nodejs的安装文件,要选择编译好的  预构建二进制文件 这样就不用自己再编译安装了 https://nodejs.org/zh-cn/download/prebuilt-binaries2.下载完成后使用如下命令解压缩文件1)使用xz-dnode-v18.20.4-linux-x64.tar.xz 解压缩得到node-v18.20.4-linux......
  • 【JavaScript系列八】—讲述JS学习历程的知识分享!
    前言本篇主要讲述JS中较为重要的一环,函数的用法,深拷贝和浅拷贝的概念和区别,闭包和递归,包括一些案例:例如递归实现斐波那契数列,求阶乘等等一、关于函数定义函数的方式function关键字函数表达式(匿名函数)varfn=function(){}newfunction()函数的调用及其this指向普通函数—......
  • 【JavaScript系列九】—讲述JS学习历程的知识分享!
    前言本篇主要是讲述ES6的新增语法和相关运用一、ES6ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。泛指2015年6月之后发布的版本为什么使用ES6语言更加完善功能更加强大变量提升特性增加了程序运行时的不确定性语法过于......
  • java导入json数据至doris
    表结构字段名称与json key名称一致:packagecom.ruoyi.doris;importcn.hutool.core.io.FileUtil;importcn.hutool.http.HttpRequest;importcn.hutool.http.HttpResponse;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importlomb......
  • 基于Node.js+vue基于的营养配餐评价系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和健康意识的增强,科学合理的膳食搭配成为了现代人追求健康生活方式的重要组成部分。然而,在日常饮食中,许多人因缺乏专业的营养知识和......
  • 基于Node.js+vue应急物资管理平台(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在自然灾害、公共卫生事件等突发事件频发的背景下,应急物资的高效管理与快速调配成为保障人民生命财产安全、维护社会稳定的关键环节。然而,传统的应急物资管......
  • 基于Node.js+vue基于的外卖订餐系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和智能手机的普及,外卖订餐服务已成为现代生活中不可或缺的一部分。人们越来越倾向于通过便捷的手机应用解决日常餐饮需求,这不仅节......
  • 基于Node.js+vue基于springboot的茶文化交流平台的设计与实现(开题+程序+论文) 计算机
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,文化的传承与交流显得尤为重要。茶文化作为中国传统文化的瑰宝,不仅承载着深厚的历史底蕴,还蕴含着丰富的哲学思想和审美追求。然而,随......
  • 基于Node.js+vue应急平台(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在全球化与信息化的时代背景下,自然灾害、公共卫生事件等突发事件频发,对社会稳定、经济发展及人民生命财产安全构成了严重威胁。传统应急响应机制往往面临信......