【Three.js基础入门】:创建你的第一个3D场景

这篇具有很好参考价值的文章主要介绍了【Three.js基础入门】:创建你的第一个3D场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Three.js基础入门】:创建你的第一个3D场景,Three.js,javascript,3d,three.js,前端

引言:

Three.js是一种强大的JavaScript库,用于在Web浏览器中创建交互式的3D图形和动画。无需熟练的图形编程经验,你也可以通过Three.js轻松地构建令人惊叹的3D场景。

本文将带你逐步学习如何入门Three.js,从创建一个简单的3D场景开始。

创建步骤 

我们将介绍如何使用Three.js创建你的第一个3D场景。Three.js是一个基于WebGL的JavaScript库,可以帮助我们在Web上创建3D场景和交互式动画。

1.引入Three.js库

首先,我们需要在HTML文件中引入Three.js库。可以通过使用CDN或下载库文件来实现。在这里,我们将使用CDN方式引入Three.js库。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My First Three.js Scene</title>
    <style>
      body { margin: 0; }
      canvas { width: 100%; height: 100%; }
    </style>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/three@0.131.2/build/three.min.js"></script>
    <script>
      // Three.js code here
    </script>
  </body>
</html>

2 创建一个场景对象

接下来,我们需要创建一个场景对象、相机对象和渲染器对象。场景对象是用来存储和管理所有3D对象的容器,相机对象是用来定义我们的视角和观察场景的位置和方向,渲染器对象则是用来渲染场景和相机。

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

3 添加一个几何体对象

在场景中添加一个几何体对象,我们可以使用Three.js提供的几何体创建函数,并设置材质对象。在这里,我们将使用一个简单的立方体作为我们的几何体对象。

var geometry = new THREE.BoxGeometry();
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);

4.相机设置

最后,我们需要设置相机的位置并启动渲染器来渲染场景和相机。我们可以通过设置相机的位置来改变我们的视角和观察场景的方向。在这里,我们将相机的位置设置为z轴上5个单位的位置。

camera.position.z = 5;
function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();

5 总结

以上就是创建你的第一个3D场景的基本步骤。完整的代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My First Three.js Scene</title>
    <style>
      body { margin: 0; }
      canvas { width: 100%; height: 100%; }
    </style>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/three@0.131.2/build/three.min.js"></script>
    <script>
      var scene = new THREE.Scene();
      var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
      var renderer = new THREE.WebGLRenderer();
      renderer.setSize(window.innerWidth, window.innerHeight);
      document.body.appendChild(renderer.domElement);

      var geometry = new THREE.BoxGeometry();
      var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
      var cube = new THREE.Mesh(geometry, material);
      scene.add(cube);

      camera.position.z = 5;

      function animate() {
        requestAnimationFrame(animate);
        cube.rotation.x += 0.01;
        cube.rotation.y += 0.01;
        renderer.render(scene, camera);
      }

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

通过这个简单的例子,我们可以看到Three.js是如何帮助我们在Web上创建3D场景和交互式动画的。我们可以通过改变几何体对象和材质对象的属性,以及相机的位置和方向,来创建更加复杂和丰富的3D场景。

示例

简单星空

下面是一个简单的Three.js星空示例,我们将创建一个星空背景,展示闪烁的星星。文章来源地址https://www.toymoban.com/news/detail-600684.html

<!DOCTYPE html>
<html>
<head>
    <title>Three.js星空示例</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <script src="https://threejs.org/build/three.js"></script>
    <script>
        // 创建场景
        var scene = new THREE.Scene();

        // 创建透视相机
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

        // 创建WebGL渲染器
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);

        // 将渲染器添加到HTML页面中
        document.body.appendChild(renderer.domElement);

        // 创建星星材质
        var starMaterial = new THREE.PointsMaterial({
            color: 0xffffff,
            size: 0.1
        });

        // 创建星星几何体
        var starGeometry = new THREE.BufferGeometry();
        var starVertices = [];
        for (var i = 0; i < 1000; i++) {
            var x = (Math.random() - 0.5) * 2000;
            var y = (Math.random() - 0.5) * 2000;
            var z = (Math.random() - 0.5) * 2000;
            starVertices.push(x, y, z);
        }
        starGeometry.setAttribute('position', new THREE.Float32BufferAttribute(starVertices, 3));

        // 创建星星点云对象
        var stars = new THREE.Points(starGeometry, starMaterial);

        // 将星星点云对象添加到场景中
        scene.add(stars);

        // 将相机位置设为z轴向后200个单位,使星空在视野内
        camera.position.z = 200;

        // 添加动画效果,使星星闪烁
        function animate() {
            requestAnimationFrame(animate);

            // 让星星随机闪烁
            stars.rotation.x += 0.001;
            stars.rotation.y += 0.001;

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

        // 调用动画函数
        animate();
    </script>
</body>
</html>

彩色星空

<!DOCTYPE html>
<html>
<head>
    <title>五彩宇宙星空 - Three.js示例</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <script src="https://threejs.org/build/three.js"></script>
    <script>
        // 创建场景
        var scene = new THREE.Scene();

        // 创建透视相机
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

        // 创建WebGL渲染器
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);

        // 将渲染器添加到HTML页面中
        document.body.appendChild(renderer.domElement);

        // 创建粒子材质
        var particleMaterial = new THREE.PointsMaterial({
            size: 2,
            vertexColors: true, // 开启顶点颜色,使每个粒子有不同的颜色
            transparent: true,
            opacity: 0.7
        });

        // 创建粒子几何体
        var particleGeometry = new THREE.BufferGeometry();
        var particleVertices = [];
        var colors = [];
        for (var i = 0; i < 1000; i++) {
            var x = (Math.random() - 0.5) * 2000;
            var y = (Math.random() - 0.5) * 2000;
            var z = (Math.random() - 0.5) * 2000;
            particleVertices.push(x, y, z);

            // 为每个粒子随机生成一个五颜六色的颜色
            var color = new THREE.Color();
            color.setRGB(Math.random(), Math.random(), Math.random());
            colors.push(color.r, color.g, color.b);
        }
        particleGeometry.setAttribute('position', new THREE.Float32BufferAttribute(particleVertices, 3));
        particleGeometry.setAttribute('color', new THREE.Float32BufferAttribute(colors, 3));

        // 创建粒子系统对象
        var particles = new THREE.Points(particleGeometry, particleMaterial);

        // 将粒子系统对象添加到场景中
        scene.add(particles);

        // 将相机位置设为z轴向后1000个单位,使星空在视野内
        camera.position.z = 1000;

        // 添加动画效果,让粒子随机闪烁
        function animate() {
            requestAnimationFrame(animate);

            // 使粒子随机闪烁
            particles.rotation.x += 0.001;
            particles.rotation.y += 0.001;

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

        // 调用动画函数
        animate();
    </script>
</body>
</html>

到了这里,关于【Three.js基础入门】:创建你的第一个3D场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Three.js基础】创建场景、渲染场景、创建轨道控制器(一)

    🐱 个人主页: 不叫猫先生 🙋‍♂️ 作者简介:前端领域新星创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源码可以找我免费领取 🔥 前端

    2024年02月01日
    浏览(63)
  • Three入门 【基础知识,并搭建第一个场景】

    哈喽小伙伴们,最近工作比较忙一直没有给大家更新,这篇文章开始会开启新的专栏 Three.js ,记录一下博主学习Three.js的过程;一起来看下吧。 Parcel 是 Web 应用打包工具,适用于经验不同的开发者。它利用多核处理提供了极快的速度,并且不需要任何配置。 首先通过 Yarn 或

    2024年02月08日
    浏览(111)
  • TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操作。

    demo案例 TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操作。让我们来详细讲解它的输入参数、输出、属性和方法: 输入参数: TransformControls 构造函数通常接受两个参数: camera (THREE.Camera):用于渲染场景的摄像机。这个参数是必需的。

    2024年04月15日
    浏览(69)
  • 【Web3 系列开发教程——创建你的第一个 NFT(5)】使用 Ethers.js 铸造 NFT | 测试用例

    本节文章将描述如何通过 ethers.js 库使用以太币在以太坊区块链上 铸造 NFT ,以及我们还会讨论如何对创建的 NFT 进行基础的 测试 。 在本文中,我们将实践一种可替代的方法:即使用 OpenZeppelin V4 库 以及 Ethers.js 以太坊库实现。 除此之前,还将介绍使用 Hardhat 和 Waffle 测试合

    2024年01月18日
    浏览(88)
  • Kibana:创建你的第一个仪表板

    了解从你自己的数据创建仪表板的最常用方法。 本教程将从分析师查看网站日志的角度使用示例数据,但这种类型的仪表板适用于任何类型的数据。 完成后,你将全面了解示例 Web 日志数据。 在本次的展示中,我将使用最新的 Elastic Stack 8.7.1 来进行展示。 Kibana:创建你的第

    2024年02月06日
    浏览(89)
  • THREE.JS使用详细(three.js创建3d物体,three.js的使用方式)

    简述:three.js封装了WebGL的底层细节,是一款运行在浏览器中的 3D 引擎,可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象,目前在Git上已经拥有90k+的star,今天用three.js来构建一个三维模型; 1、首先,在项目中需要下载threejs的相关依赖; 2、在js页面引入使

    2024年01月23日
    浏览(84)
  • Django 初级指南:创建你的第一个 Django 项目

    Django 是一个强大的 Python Web 框架,它采用了“模型-视图-控制器”(MVC)的设计模式,能够帮助开发者快速、简洁地创建高质量的 Web 应用。这篇文章将引导你创建你的第一个 Django 项目。 首先,你需要在你的 Python 环境中安装 Django。你可以使用 pip 包管理器来安装: 你可以

    2024年02月13日
    浏览(72)
  • 和我一起学 Three.js【初级篇】:1. 搭建 3D 场景

    💡 本篇文章共 5572 字,最近更新于 2023 年 04 月 19 日。 本系列第 6,7,8 章节支持在我的个人公众号「前端乱步」内付费观看,将在全平台文章「点赞数」+「评论数」 = 500(第 6 章), 1000(第 7,8 章) 时分别解锁发布。 《和我一起学 Three.js【初级篇】:0. 总论》 📍 您当

    2023年04月10日
    浏览(55)
  • 鸿蒙Stage模型开发—创建你的第一个ArkTS应用

    基本概念 下图展示了Stage模型中的基本概念。 图1 Stage模型概念图 UIAbility组件和ExtensionAbility组件 Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。 UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。

    2024年02月04日
    浏览(97)
  • Vue中如何进行3D场景展示与交互(如Three.js)

    随着WebGL技术的发展,越来越多的网站开始使用3D场景来展示产品、游戏等内容。在Vue中,我们可以使用第三方库Three.js来实现3D场景的展示与交互。本文将介绍如何在Vue中使用Three.js来创建3D场景,并实现交互功能。 Three.js是一个用于创建3D图形的JavaScript库。它基于WebGL技术,

    2024年02月09日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包