Three.js入门教程:使用代码实现引入模型的例子

news/2024/7/7 20:35:28

Three.js是一款基于WebGL的JavaScript 3D图形库,它可以让开发者在浏览器中创建和展示3D图形,包括模型、动画、场景等。本文将介绍如何使用Three.js入门,并通过一个实例来演示如何引入一个模型。

一、环境搭建

在使用Three.js之前,需要先搭建好开发环境。首先,需要在HTML文件中引入Three.js库:

<script src="https://cdn.jsdelivr.net/npm/three@0.132.2/build/three.min.js"></script>

然后,需要在JavaScript文件中创建一个场景、相机和渲染器:

// 创建场景
const scene = new THREE.Scene();

// 创建相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;

// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

二、创建模型

在Three.js中,可以通过加载外部模型文件来创建模型。常见的模型文件格式包括OBJ、FBX、GLTF等。本文以GLTF格式为例,演示如何引入一个模型。

首先,需要在HTML文件中引入GLTFLoader.js库:

<script src="https://cdn.jsdelivr.net/npm/three@0.132.2/examples/js/loaders/GLTFLoader.js"></script>

然后,在JavaScript文件中创建一个GLTFLoader对象,并使用它加载模型文件:

// 创建GLTFLoader对象
const loader = new THREE.GLTFLoader();

// 加载模型文件
loader.load('model.gltf', function(gltf) {
  scene.add(gltf.scene);
}, undefined, function(error) {
  console.error(error);
});

其中,'model.gltf’是模型文件的路径,gltf.scene是模型的根节点,可以通过scene.add()方法将其添加到场景中。

三、渲染场景

最后,需要在JavaScript文件中添加一个渲染函数,用于在每一帧更新场景并渲染:

function render() {
  requestAnimationFrame(render);
  renderer.render(scene, camera);
}

render();

至此,一个简单的Three.js场景就创建完成了。完整代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Three.js入门</title>
    <style>
      body {
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/three@0.132.2/build/three.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/three@0.132.2/examples/js/loaders/GLTFLoader.js"></script>
    <script>
      // 创建场景
      const scene = new THREE.Scene();

      // 创建相机
      const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
      camera.position.z = 5;

      // 创建渲染器
      const renderer = new THREE.WebGLRenderer();
      renderer.setSize(window.innerWidth, window.innerHeight);
      document.body.appendChild(renderer.domElement);

      // 创建GLTFLoader对象
      const loader = new THREE.GLTFLoader();

      // 加载模型文件
      loader.load('model.gltf', function(gltf) {
        scene.add(gltf.scene);
      }, undefined, function(error) {
        console.error(error);
      });

      // 渲染场景
      function render() {
        requestAnimationFrame(render);
        renderer.render(scene, camera);
      }

      render();
    </script>
  </body>
</html>

需要注意的是,由于Three.js是基于WebGL的,因此需要浏览器支持WebGL才能正常运行。如果浏览器不支持WebGL,可以考虑使用其他的3D图形库,如Babylon.js等。


http://lihuaxi.xjx100.cn/news/1197551.html

相关文章

Windows10系统下使用IDEA创建SpringBoot项目(二)

步骤 打开IntelliJ IDEA&#xff0c;选择 Create New Project选择 Spring Initializr在弹出的窗口中&#xff0c;选择项目名称、项目路径、项目类型、语言和Spring Boot版本等点击 Next填写 Group、Artifact、Name、Description、Package等信息点击 Next选择 Spring Boot Star…

Hive和Hadoop关系

Hive是基于Hadoop的一个数据仓库工具&#xff0c;用来进行数据提取、转化、加载&#xff0c;这是一种可以查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表&#xff0c;并提供SQL查询功能&#xff0c;能将SQL语句转变成Ma…

Redis安装部署

Redis安装部署【简单】 简介 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 redis的特点就是&#xff1a;快&#xff0c;可以基于内存存储数据并提供超低延迟、超快的检索速度 一般用于在系统中提供快速缓存的能力。 安装…

病毒分析丨一款注入病毒

作者丨黑蛋 一、病毒简介 SHA256: de2a83f256ef821a5e9a806254bf77e4508eb5137c70ee55ec94695029f80e45 MD5: 6e4b0a001c493f0fcf8c5e9020958f38 SHA1: bea213f1c932455aee8ff6fde346b1d1960d57ff 云沙箱检测&#xff1a; 二、环境准备 系统 Win7x86Sp1 三、行为监控 打开…

完成MQTT客户端,前几年的欠债还上了

最近有点儿忙&#xff0c;努力方向很重要&#xff0c;最近VFP硬件开发课已完结&#xff0c;顺便补一下前面欠的MQTT完整客户端&#xff0c;支持QOS0,OQS1,LAST WILLMSG. QOS2的支持看有需求再说了。 猫猫的心里话 加菲猫的VFP|狐友会社群接收投稿啦 加菲猫的VFP&#xff0c;用…

【Java多线程进阶】线程池详解

前言 在大量的并发任务中&#xff0c;频繁的创建和销毁线程对系统的开销是非常大的&#xff0c;多个任务执行的速度也是非常慢的。因此&#xff0c;设计出一个好的 Java 线程池就可以减少系统的开销、使程序运行速度提升。在这篇博文中&#xff0c;我将介绍 Java 线程池概念以及…

bert中文文本摘要代码(2)

bert中文文本摘要代码 写在最前面关于BERT使用transformers库进行微调 model.py自定义参数激活函数geluswish定义激活函数字典 BertConfig类参数配置vocab_size_or_config_json_filefrom_dict方法&#xff08;from_json_file时调用&#xff09;from_json_file方法一系列方法 Be…

华清远见 day04

break 打破循环,再也不执行 continue 跳出本次循环,继续执行下一次循环; ​ 常量 字面常量 宏常量 #define A 100 //定义一个宏常量, 名为:A 值为:100 位置 在 头文件 下面 ,文件开头 ​ ​ 输入时间秒 得到 小时 分钟 秒的时间输出 用到 三运算符; 宏常量 Mi 是60 t1 /Mi>6…