17. Threejs案例-Three.js创建多个立方体

news2025/1/19 14:35:44

17. Threejs案例-Three.js创建多个立方体

实现效果

效果

知识点

WebGLRenderer (WebGL渲染器)

WebGLRenderer 是 Three.js 中用于渲染 WebGL 场景的核心类。它负责将场景中的对象渲染到画布上。

构造器

new THREE.WebGLRenderer(parameters)

参数类型描述
parametersObject可选参数对象,用于配置渲染器。常用参数包括:antialias(抗锯齿)、alpha(透明背景)等。
方法
  • setSize(width, height): 设置渲染器输出的尺寸。
  • setClearColor(color, alpha): 设置渲染器的背景颜色和透明度。
Scene (场景)

Scene 是 Three.js 中用于存储和管理所有可见对象的容器。

构造器

new THREE.Scene()

方法
  • add(object): 向场景中添加对象。
  • remove(object): 从场景中移除对象。
PerspectiveCamera (透视相机)

PerspectiveCamera 是 Three.js 中用于模拟人眼视角的相机类。

构造器

new THREE.PerspectiveCamera(fov, aspect, near, far)

参数类型描述
fovNumber视野角度,单位为度。
aspectNumber相机的宽高比。
nearNumber近裁剪面距离。
farNumber远裁剪面距离。
方法
  • position.set(x, y, z): 设置相机的位置。
  • lookAt(vector): 设置相机的朝向目标点。
BoxGeometry (立方体几何体)

BoxGeometry 是 Three.js 中用于创建立方体几何体的类。

构造器

new THREE.BoxGeometry(width, height, depth)

参数类型描述
widthNumber立方体的宽度。
heightNumber立方体的高度。
depthNumber立方体的深度。
方法
  • translateX(amount): 沿 X 轴移动几何体。
  • translateY(amount): 沿 Y 轴移动几何体。
  • translateZ(amount): 沿 Z 轴移动几何体。
MeshNormalMaterial (网格法线材质)

MeshNormalMaterial 是 Three.js 中用于显示网格法线的材质。

构造器

new THREE.MeshNormalMaterial(parameters)

参数类型描述
parametersObject可选参数对象,用于配置材质。
方法
  • color.set(color): 设置材质的颜色。
Mesh (网格对象)

Mesh 是 Three.js 中用于组合几何体和材质的对象。

构造器

new THREE.Mesh(geometry, material)

参数类型描述
geometryGeometry几何体对象。
materialMaterial材质对象。
方法
  • translateX(amount): 沿 X 轴移动网格对象。
  • translateY(amount): 沿 Y 轴移动网格对象。
  • translateZ(amount): 沿 Z 轴移动网格对象。

代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="ThreeJS/three.js"></script>
    <script src="ThreeJS/jquery.js"></script>
</head>
<body>
<center id="myContainer"></center>
<script>
    // 创建渲染器
    var myRenderer = new THREE.WebGLRenderer({antialias: true});
    myRenderer.setSize(window.innerWidth, window.innerHeight);
    myRenderer.setClearColor('white', 1.0);
    $("#myContainer").append(myRenderer.domElement);

    // 创建场景
    var myScene = new THREE.Scene();

    // 创建透视相机
    var myCamera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
    myCamera.position.set(40.06, 20.92, 42.68);
    myCamera.lookAt(new THREE.Vector3(0, 0, 0));

    // 创建第一个立方体
    var myGeometry1 = new THREE.BoxGeometry(16, 16, 16);
    var myMaterial1 = new THREE.MeshNormalMaterial();
    var myMesh1 = new THREE.Mesh(myGeometry1, myMaterial1);
    myMesh1.translateX(-40);
    myScene.add(myMesh1);

    // 创建第二个立方体
    var myGeometry2 = new THREE.BoxGeometry(16, 16, 16);
    var myMaterial2 = new THREE.MeshNormalMaterial();
    var myMesh2 = new THREE.Mesh(myGeometry2, myMaterial2);
    myMesh2.translateX(-10);
    myScene.add(myMesh2);

    // 创建第三个立方体
    var myGeometry3 = new THREE.BoxGeometry(16, 16, 16);
    var myMaterial3 = new THREE.MeshNormalMaterial();
    var myMesh3 = new THREE.Mesh(myGeometry3, myMaterial3);
    myMesh3.translateX(20);
    myScene.add(myMesh3);

    // 渲染三个相同大小的立方体图形
    myRenderer.render(myScene, myCamera);
</script>
</body>
</html>

演示链接

示例链接

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

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

相关文章

【解决pycharm下site-packages文件标记为红色的问题】

怎么解决pycharm下site-packages文件标记为红色的问题 这是一个pycharm无法识别本地site-packages问题答案解释器设置路径如下&#xff1a; 这是一个pycharm无法识别本地site-packages问题 最近正在搭建一个python3requestsunittestHTMLTestRunner接口测试框架&#xff0c;发现…

高中数学:计数原理-排列组合

文章目录 一、排列排列数例题 二、组合组合数例题 三、使用方法总结 一、排列 排列数 例题 二、组合 组合数 例题 三、使用方法总结 组合&#xff1a;从n个元素中抽取m个元素&#xff0c;不排序&#xff0c;则用组合计算 排列&#xff1a;从n个元素中抽取m个元素&#xff0c;再…

软件设计师下午题知识点

下午题一&#xff1a;数据流图DFD 数据流图平衡原则 此题注意两个平衡&#xff1a; 1、父图与子图的平衡&#xff08;顶层图、0层图&#xff09;&#xff1b;2、子图内平衡&#xff09;遵循自顶向下&#xff0c;从抽象到具体 结构化分析 在结构化分析方法中&#xff0c;数…

C++哈希(一)

1.底层结构 顺序结构以及平衡中&#xff0c;元素关键码与其存储位置之间没有相对应的关系&#xff0c;因此在查找一个元素时&#xff0c;要经过关键码的多次比较。顺序查找的时间复杂度为O(N)。 理想的搜索方法&#xff1a;可以不经过比较&#xff0c;依次直接从表中直接搜索…

Open-webui:本地化管理AI大模型

Open WebUI 是一个开源的用户界面工具&#xff0c;用于运行和管理大语言模型 (LLM) 及其他人工智能功能。它的主要目的是简化人工智能模型的本地部署和操作&#xff0c;让用户能够方便地通过浏览器界面与各种 AI 模型进行交互。 官方地址&#xff1a;https://github.com/open-…

1 数据库(上):MySQL的概述和安装、SQL简介、IDEA连接数据库使用图形化界面

文章目录 前言一、数据库相关的概念二、MySQL概述1 MySQL的安装和配置2 MySQL登录、退出&#xff08;1&#xff09;mysql -uroot -p1234 或者mysql -uroot -p ---- 登录&#xff08;2&#xff09;exit或者quit ---- 退出 3 远程登录服务器上的MySQL命令mysql -hip地址 -P3306 -…

Elasticsearch:使用硬件加速的 SIMD 指令实现超快 BBQ

作者&#xff1a;来自 Elastic Chris Hegarty 我们如何使用硬件加速 SIMD&#xff08;Single Instruction Multiple Data - 单指令多数据&#xff09;指令优化 BBQ 中的向量比较。 随着我们继续致力于让 Elasticsearch 和 Apache Lucene 成为存储和搜索向量数据的最佳场所&…

面经自测——死锁/死锁的必要条件/死锁的预防/进程通信的方式

前言 本文是作者专门用来自测Java后端相关面试题的&#xff0c;所有问题都是在牛客、知识星球或网上找到的最近最新的面试题&#xff0c;全文回答都是作者按自己的真实水平仿照真实环境的回答&#xff0c;所以答案不一定真实&#xff08;但回答一定真诚&#x1f923;&#xff0…

通过电路指纹攻击发现洋葱服务

文章信息 论文题目&#xff1a;Discovering onion services through circuit fingerprinting attacks 期刊&#xff08;会议&#xff09;&#xff1a; High-Confidence Computing 时间&#xff1a;2023 级别&#xff1a;CCF C 文章链接&#xff1a;https://www.sciencedir…

[每周一更]-(第126期):MQ解耦场景

消息队列&#xff08;MQ&#xff09;解耦是一种软件架构设计模式&#xff0c;主要通过中间件将系统中的生产者和消费者模块分离&#xff0c;减少模块之间的直接依赖&#xff0c;使系统具有更高的扩展性和灵活性。这种模式尤其适用于需要处理复杂业务逻辑、频繁请求或异步处理的…

flinkSql 将流和表的互相转换

流——>表 方式一 方式二 方式一&#xff1a;写sql DataStreamSource<String> source env.socketTextStream("localhost", 8881); // 表名&#xff0c;流&#xff0c;字段名称 tableEnv.createTemporaryView("t_1",source&#xff0c;$("…

linuxCNC(五)HAL驱动的指令介绍

HAL驱动的构成 指令举例详解 从终端进入到HAL命令行&#xff0c;执行halrun&#xff0c;即可进入halcmd命令行 # halrun指令描述oadrt加载comoonent&#xff0c;loadrt threads name1 period1创建新线程loadusr halmeter加载万用表UI界面loadusr halscope加载示波器UI界面sho…

SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

之前和很多群友聊天发现对2016的无域和负载均衡满心期待&#xff0c;毕竟可以简单搭建而且可以不适用第三方负载均衡器&#xff0c;SQL自己可以负载了。windows2016已经可以下载使用了&#xff0c;那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了。 …

vue3+elementPlus封装的数据过滤区

目录结构 源码 index.vue <template><el-form class"mb-5" :rules"rules" :model"queryForm" ref"queryDOM" label-width"80"><el-row :gutter"20"><slot></slot><el-col cla…

iOS如何自定义一个类似UITextView的本文编辑View

对于IOS涉及文本输入常用的两个View是UITextView和UITextField&#xff0c;一个用于复杂文本输入&#xff0c;一个用于简单文本输入&#xff0c;在大多数开发中涉及文本输入的场景使用这两个View能够满足需求。但是对于富文本编辑相关的开发&#xff0c;这两个View就无法满足自…

《黑神话:悟空》闪退,提示D3D12崩溃,游戏崩溃无法启动是什么原因?要怎么解决?

《黑神话&#xff1a;悟空》闪退、D3D12崩溃及游戏无法启动&#xff1a;原因、解决方案与预防措施 作为一名软件开发从业者&#xff0c;我深知电脑游戏运行时可能遇到的各种问题&#xff0c;尤其是像《黑神话&#xff1a;悟空》这样的高品质游戏&#xff0c;其对硬件和系统配置…

JUC:Synchronized和锁升级

1. 面试题 谈谈你对Synchronized的理解Sychronized的锁升级你聊聊Synchronized实现原理&#xff0c;monitor对象什么时候生成的&#xff1f;知道monitor的monitorenter和monitorexit这两个是怎么保证同步的嘛&#xff1f;或者说这两个操作计算机底层是如何执行的偏向锁和轻量级…

SAP SD学习笔记19 - 形式发票(Proforma Invoice)

上面几章讲了投诉处理。 SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖&#xff0c;投诉处理流程的总结-CSDN博客 本章继续学习SD 模块的其他内容。 本章讲了形式发票&#xff08;Proforma Invoice&#xff09;的概要及系统操作。 形式发票是在出库确认之前&#xff0c;有…

M005 PHP+MYSQL+web编程课程网站的设计与实现 源码 配置 文档

web编程课程网站 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着互联网的飞速发展&#xff0c;各行各业的信息化进程逐步加快。商业信息化、政务信息化、教育信息、服务信息化等等已遍布全国各地。信息化的服务平台能更加高效的为用户提供各种服务…

【力扣】13.罗马数字转整数

问题描述 思路解析 对于这种限制字符的问题&#xff0c;使用Map来对键值存储 对其进行判断&#xff0c;如果前面的数小于后面的数&#xff0c;那么结果相减 否则&#xff0c;正常相加。 代码 class Solution {Map<Character,Integer> mapnew HashMap<Character,In…