react 中three.js 模型渲染

2024-09-03 19:20

本文主要是介绍react 中three.js 模型渲染,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    npm install three

import * as THREE from "three";
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
const mountRef = useRef(null);
useEffect(() => {// 创建渲染器  const renderer = new THREE.WebGLRenderer(); const width = mountRef.current.clientWidth;  const height = mountRef.current.clientHeight; // 创建场景  const scene = new THREE.Scene();  
// 创建相机  const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);  camera.position.z = 125;  camera.rotation.x=-70camera.position.y=150// 更新相机的矩阵camera.updateMatrix();// 修改fovcamera.scale.set(1.3,1.5,1.2);camera.fov = 100; // 设置新的fov为90度camera.updateProjectionMatrix(); // 更新投影矩阵renderer.setSize(width, height);  mountRef.current.appendChild(renderer.domElement);  renderer.setClearColor(0x000000, 0); //画布背景为透明,// 创建加载器  const loader = new GLTFLoader();const ambientLight = new THREE.AmbientLight(0xffffff, 2);scene.add(ambientLight);loader.load(  './factory.glb', // 模型的URL  function (gltf) {  model = gltf.scene;scene.add(model); // 将加载的模型添加到场景中  });  // 渲染循环  const animate = (event) => {  renderer.render(scene, camera); TWEEN.update(); // 更新动画状态requestAnimationFrame(animate);};  animate(); 
})return(<div ref={mountRef} style={{width:'100%',height:'100%',backgroundColor: "transparent"}}></div>
)

这里有个问题是模型放的文件夹,在我这引用的时候,我是放到了public文件下,引用的时候就是./  放在其他文件下 会有问题。

模型必须给光源,要不然模型是黑的

 // 添加光源

    // AmbientLight 环境光 环境光环境光是最简单的一种光源,它均匀地照亮场景中的所有物体,没有方向性。使用环境光可以为场景提供基础亮度,但它不能产生阴影,也不提供方向性的光照效果。

    //DirectionalLight 方向光 方向光模仿太阳光,从一个方向均匀地照亮场景,可以产生硬阴影。为了照亮整个模型,你可以将方向光的方向设置为指向模型,通常是从上方或侧面照射

    //HemisphereLight 半球光 半球光提供来自两个方向的光照,通常用于模拟天空和地面的光照。它可以为场景提供更为自然的基础照明。

    //PointLight(点光源) 或 SpotLight(聚光灯) 这两种光源可以照亮模型的大部分区域,但是它们的效果通常受限于光源的位置和范围。为了照亮整个模型,你可能需要多个光源,或者调整光源的位置和范围。

    // const light = new THREE.SpotLight(0xffffff, 2);

    // light.position.set(10, 10, 10).normalize();

    // scene.add(light);

这篇关于react 中three.js 模型渲染的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...