Three.js 系列专题 5:加载外部模型

内容概述

Three.js 支持加载多种 3D 文件格式(如 GLTF、OBJ、FBX),这让开发者可以直接使用专业建模软件(如 Blender、Maya)创建的复杂模型。本专题将重点介绍 GLTF 格式的加载,并调整模型的位置和材质。

学习目标
  • 理解常见 3D 文件格式及其特点。
  • 掌握使用 GLTFLoader 加载外部模型。
  • 学会调整加载模型的属性(如位置、大小、材质)。
完整代码实现

我们将加载一个 GLTF 格式的狐狸模型(来自 Three.js 官方示例),并让它在场景中旋转。

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Three.js - 加载外部模型</title><style>body { margin: 0; overflow: hidden; }canvas { display: block; }</style>
</head>
<body><!-- 引入 Three.js 和 GLTFLoader --><script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></script><script src="https://threejs.org/examples/js/loaders/GLTFLoader.js"></script><script>// 1. 初始化场景、相机和渲染器const scene = new THREE.Scene();const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);camera.position.set(0, 2, 5);camera.lookAt(0, 0, 0);const renderer = new THREE.WebGLRenderer();renderer.setSize(window.innerWidth, window.innerHeight);document.body.appendChild(renderer.domElement);// 2. 添加光源const ambientLight = new THREE.AmbientLight

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1006 [NOIP 2008 提高组] 传纸条 题解

题目传送门 前言 每次准备摸鱼时都在这道题的界面。 今天有空做做&#xff0c;顺便写一波题解&#xff0c;毕竟估值蹭蹭往下跳。 双倍经验&#xff1a;P1004 [NOIP 2000 提高组] 方格取数&#xff0c;P1006 [NOIP 2008 提高组] 传纸条。 题意简述 现有一个 m m m 行 n …

LLM架构解析:长短期记忆网络(LSTM)(第三部分)—— 从基础原理到实践应用的深度探索

本专栏深入探究从循环神经网络&#xff08;RNN&#xff09;到Transformer等自然语言处理&#xff08;NLP&#xff09;模型的架构&#xff0c;以及基于这些模型构建的应用程序。 本系列文章内容&#xff1a; NLP自然语言处理基础词嵌入&#xff08;Word Embeddings&#xff09…

ffmpeg提取字幕

使用ffmpeg -i test.mkv 获取视频文件的字幕流信息如下 Stream #0:4(chi): Subtitle: subrip (srt) (default) Metadata: title : chs Stream #0:5(chi): Subtitle: subrip (srt) Metadata: title : cht Stream #0:6(jpn)…

Python设计模式:构建模式

1. 什么是构建模式 构建模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许使用多个简单的对象一步步构建一个复杂的对象。构建模式通过将构建过程与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。换句话说&#xff0c;构建模…

使用 VIM 编辑器对文件进行编辑

一、VIM 的两种状态 VIM&#xff08;vimsual&#xff09;是 Linux/UNIX 系列 OS 中通用的全屏编辑器。vim 分为两种状态&#xff0c;即命令状态和编辑状态&#xff0c;在命令状态下&#xff0c;所键入的字符系统均作命令来处理&#xff1b;而编辑状态则是用来编辑文本资料&…

GaussDB回调机制深度实践:从事件驱动到系统集成

GaussDB回调机制深度实践&#xff1a;从事件驱动到系统集成 一、回调机制核心概念 回调类型矩阵 二、核心实现技术栈 触发器回调开发 sql -- 创建审计触发器回调 CREATE OR REPLACE FUNCTION audit_trigger() RETURNS TRIGGER AS $$ BEGININSERT INTO audit_log (operati…

AI小白:AI算法中常用的数学函数

文章目录 一、激活函数1. Sigmoid2. ReLU&#xff08;Rectified Linear Unit&#xff09;3. Tanh&#xff08;双曲正切&#xff09;4. Softmax示例代码&#xff1a;激活函数的实现 二、损失函数1. 均方误差&#xff08;MSE&#xff09;2. 交叉熵损失&#xff08;Cross-Entropy&…

idea 打不开terminal

IDEA更新到2024.3后Terminal终端打不开的问题_idea terminal打不开-CSDN博客

Python代码list列表的使用和常用方法及增删改查

Python代码list列表的使用和常用方法及增删改查 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ python语法-p…

Open CASCADE学习|读取点集拟合样条曲线(续)

问题 上一篇文章已经实现了样条曲线拟合&#xff0c;但是仍存在问题&#xff0c;Tolerance过大拟合成直线了&#xff0c;Tolerance过大头尾波浪形。 正确改进方案 1️⃣ 核心参数优化 通过调整以下参数控制曲线平滑度&#xff1a; Standard_Integer DegMin 3; // 最低阶…

Python基础知识点(列表与字典)

列表list[] # list [12,34,56,78] # print(list) """ 1.list可以保存同一类型的数据 或 不同类型的数据 2.list是有序的&#xff0c;所以可以通过[下标]访问元素 3.list保存重复的值 4.list是可变的&#xff0c;可以添加 删除元素 """ …

在 Elasticsearch 中使用 Amazon Nova 模型

作者&#xff1a;来自 Elastic Andre Luiz 了解如何在 Elasticsearch 中使用 Amazon Nova 系列模型。 在本文中&#xff0c;我们将讨论 Amazon 的 AI 模型家族——Amazon Nova&#xff0c;并学习如何将其与 Elasticsearch 结合使用。 关于 Amazon Nova Amazon Nova 是 Amazon …

MySQL8.0.40编译安装(Mysql8.0.40 Compilation and Installation)

MySQL8.0.40编译安装 近期MySQL发布了8.0.40版本&#xff0c;与之前的版本相比&#xff0c;部分依赖包发生了变化&#xff0c;因此重新编译一版&#xff0c;也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号&#xff0…

python中pyside6多个py文件生成exe

网上见到的教程大多数都是pyinstaller安装单个py文件,针对多个py文件的打包,鲜有人提及;有也是部分全而多的解释,让人目不暇接,本次记录自己设置一个声波捕捉界面的打包过程。 1.pycharm中调用pyinstaller打包 参考链接:https://blog.csdn.net/weixin_45793544/articl…

Java中使用Function Call实现AI大模型与业务系统的集成​

这个理念实际上很早就出现了&#xff0c;只不过早期的模型推理理解能力比较差&#xff0c;用户理解深度预测不够&#xff0c;现在每天的迭代有了改进&#xff0c;逐步引入到我们本身的业务系统&#xff0c;让AI大模型集成进来管理自身业务功能。当然现在也不是一个什么难事了。…

id 属性自动创建 js 全局变量

给一个元素设置 id 属性&#xff0c;它会在 js 中创建全局变量&#xff0c;如 <div class"test" click"test" id"idTest">test</div>test() {console.log(idTest:, window.idTest) }.test {height: 50px;width: 200px;background-c…

Android SELinux权限使用

Android SELinux权限使用 一、SELinux开关 adb在线修改seLinux(也可以改配置文件彻底关闭) $ getenforce; //获取当前seLinux状态,Enforcing(表示已打开),Permissive(表示已关闭) $ setenforce 1; //打开seLinux $ setenforce 0; //关闭seLinux二、命令查看sel…

【R语言绘图】圈图绘制代码

绘制代码 rm(list ls())# 加载必要包 library(data.table) library(circlize) library(ComplexHeatmap) library(rtracklayer) library(GenomicRanges) library(BSgenome) library(GenomicFeatures) library(dplyr)### 数据准备阶段 ### # 1. 读取染色体长度信息 df <- re…

vim 编辑器 使用教程

Vim是一款强大的文本&#xff08;代码&#xff09;编辑器&#xff0c;它是由Bram Moolenaar于1991年开发完成。它的前身是Bill Joy开发的vi。名字的意义是Vi IMproved。 打开vim&#xff0c;直接在命令行输入vim即可&#xff0c;或者vim <filename>. Vim分为四种模式&a…

C++20新增内容

C20 是 C 语言的一次重大更新&#xff0c;它引入了许多新特性&#xff0c;使代码更现代化、简洁且高效。以下是 C20 的主要新增内容&#xff1a; 1. 概念&#xff08;Concepts&#xff09; 概念用于约束模板参数&#xff0c;使模板编程更加直观和安全。 #include <concept…