Three.js学习(一)three.js的一些基本操作

news2024/11/16 7:20:20

文章目录

  • 1.鼠标操作三维场景旋转、移动和缩放
  • 2.场景中添加新的三维图形
  • 3.设置材质效果
  • 4.光源效果

1.鼠标操作三维场景旋转、移动和缩放

  使用THREE的OrbitControls控件,可以实现鼠标控制三维图形的操作。主要是通过监听鼠标操作,控制相机的三维参数。

import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'

const render = () => {
  renderer.render(scene,camera);
  requestAnimationFrame(render);
}

render();
new OrbitControls(camera,renderer.domElement);
  • 鼠标左键,控制旋转
  • 鼠标中建,控制缩放
  • 鼠标右键,控制移动

2.场景中添加新的三维图形

  可以通过创建不同的mesh添加到场景中的方式,来添加不同的图形到同一个场景中。

const geometry = new THREE.BoxGeometry(100,100,100); // 创建一个立方体几何对象
const material = new THREE.MeshLambertMaterial({
  color:0x0000ff,
  specular:0x4488ee,
  shininess:12
}); // 材质对象material
const mesh = new THREE.Mesh(geometry,material); // 网格模型对象Mesh
scene.add(mesh);

const geometry1 = new THREE.SphereGeometry(60,40,40); //创建一个球体几何对象 
const material1 = new THREE.MeshLambertMaterial({
  color: 0x0000ff,
})
const mesh1 = new THREE.Mesh(geometry1,material1);
mesh1.translateY(120);
scene.add(mesh1);

  然后会得到这样的效果:

image-20230103191621406

  这里是一些其他的图形的实现代码:

//长方体 参数:长,宽,高
var geometry = new THREE.BoxGeometry(100, 100, 100);
// 球体 参数:半径60  经纬度细分数40,40
var geometry = new THREE.SphereGeometry(60, 40, 40);
// 圆柱  参数:圆柱面顶部、底部直径50,50   高度100  圆周分段数
var geometry = new THREE.CylinderGeometry( 50, 50, 100, 25 );
// 正八面体
var geometry = new THREE.OctahedronGeometry(50);
// 正十二面体
var geometry = new THREE.DodecahedronGeometry(50);
// 正二十面体
var geometry = new THREE.IcosahedronGeometry(50);

3.设置材质效果

(1)常见材质:

材质属性简介
color材质颜色,比如蓝色0x0000ff
wireframe将几何图形渲染为线框。 默认值为false
opacity透明度设置,0表示完全透明,1表示完全不透明
transparent是否开启透明,默认false

(2)常用材质类型:

材质类型功能
MeshBasicMaterial基础网格材质,不受光照影响的材质
MeshLambertMaterialLambert网格材质,与光照有反应,漫反射
MeshPhongMaterial高光Phong材质,与光照有反应
MeshStandardMaterialPBR物理材质,相比较高光Phong材质可以更好的模拟金属、玻璃等效果

4.光源效果

(1)常见光源效果

光源简介
AmbientLight环境光
PointLight点光源
DirectionalLight平行光,比如太阳光
SpotLight聚光源

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

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

相关文章

在线问诊呈爆发式增长,聚合支付分账如何助力互联网医疗平台加速发展?

(图源:pexels网站) 随着疫情的放开,人们问诊需求快速上涨,由于医院服务的压力激增,线上问诊成为了不少人替代去医院的有效手段,甚至于线上问诊开始出现了爆发式增长。但是在互联网医疗平台的发展过程中&am…

C语言进阶——数据的存储

目录 一. 数据类型 二. 整形在内存中的存储 1.原码、反码、补码 2.大小端 三. 浮点型在内存中的存储 存储 取出 一. 数据类型 在前面,我们已经学过一些基本的内置类型 char——字符数据类型 short——短整型 int——整形 long——长整形 long…

电路方案分析(十四)汽车电动座椅参考方案设计(H桥,高低边驱动器设计)

汽车电动座椅参考方案设计 tips:TI设计方案参考分析:TI Designs:TIDA-020008 双向和单向电机驱动器的电机驱动应用(如汽车电动座椅)的驱动和控制电路。它演示了如何驱动具有小电路板尺寸、高度可靠性和完整诊断功能的…

第二章 linux常用指令

第二章 linux常用指令一、ls指令:查看目录内容1、作用2、语法3、示例二、pwd命令:查看当前位置1、作用2、语法3、示例三、cd 指令:进入1、作用2、语法3、常用变型四、touch指令:创建文件1、作用2、语法3、常用选项五、mkdir指令&a…

12月VR大数据:兼2022全年VR硬件和应用汇总

Hello大家好,每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么?关注这里就对了。我们会统计Steam平台的用户及内容等数据,每月初准时为你推送,不要错过喔!本数据报告包含:Steam VR硬…

excel查找技巧:单个函数在区间查找中的应用解析

区间取值的问题,在我们日常工作中经常会遇到,比如:销售提成、等级评定、生产标准核定、绩效考核等等,都属于此类问题,今天就给大家介绍几种常用的方式方法,旨在丰富大家知识面的同时,也可以对函…

JavaScript 变量

文章目录JavaScript 变量JavaScript 变量JavaScript 数据类型声明(创建) JavaScript 变量一条语句,多个变量重新声明 JavaScript 变量JavaScript 算数JavaScript 变量 变量是用于存储信息的"容器"。 实例 var x5; var y6; var zx…

BlocProvider add数据流程

我们看看往bloc中添加数据流程&#xff0c;以demo为例 void _incrementCounter() {_counter;BlocProvider.of<TestBloc>(context).add(LoadTestEvent(_counter));} 我们调用了BlocProvider获取对应的Bloc &#xff0c;然后调用他的add方法 void add(Event event) {asser…

【华为重启门】华为/荣耀手机一直自动重启原因解决方案(荣耀V10)

文章目录1.问题描述2.分析原因3.解决方案4.实际操作1.问题描述 荣耀V10&#xff0c;莫名其妙的、无规律的死机重启。 一开始是重启后进入紧急备份&#xff0c;无法正常开机。 之后莫名其妙可以正常开机了&#xff0c;但是总是会重启。 2.分析原因 不搜不知道&#xff0c;一…

Maven安装及配置

1.下载 Maven – Download Apache Maven 2.安装 maven压缩包解压到一个没有中文&#xff0c;空格或其他特殊字符的文件夹内即可使用。 3.配置环境变量 1.右键此电脑->属性->高级系统设置->环境变量 2.新建系统变量MAVEN_HOME 3.编辑系统变量Path&#xff0c;添…

【源码解析】断路器Hystrix使用和工作原理

断路器Hystrix使用和工作原理 介绍 在微服务架构的分布式系统中&#xff0c;众多微服务有复杂的依赖关系&#xff0c;这些依赖在某些情况下不可避免的会出现一些请求失败。当一个依赖由于延迟高出现阻塞&#xff0c;调用该依赖的服务线程就会发生排队阻塞。如果这个时候出现大…

二叉树实现及应用(C语言模拟实现可以存放任意结点的栈、队列,二叉树遍历的递归与非递归实现,附上源码和实验报告,用了自取)

XIAN TECHNOLOGICAL UNIVERSITY 目录 课程设计报告 1绪论 2课程设计目的和内容 3算法的基本思想 1 .建立二叉树结构      建立二叉树时&#xff0c;要先明确是按哪一种遍历规则输入&#xff0c;该二叉树是按你所输入的遍历规则来建立的。本实验用的先序遍历行建树。二叉树…

第六章. 图解数组计算模块Numpy—数据的相关概念和创建数组

第六章. 图解数组计算模块Numpy 6.1 数据的相关概念和创建数组 Numpy是Python数组计算&#xff0c;矩阵运算和科学计算的核心库&#xff0c;它的用途是以数组的形式对数据进行操作&#xff0c;由于Numpy是通过C语言实现的&#xff0c;所以运算速度比较快。 1. Numpy的功能&…

技术贴 | SQL 编译与执行 -parser

前言SQL 编译与执行系列技术博客将按照以下顺序分别介绍整个 SQL 执行引擎。图一 SQL 编译与执行研读流程parser 部分&#xff0c;包括词法解析和语法解析。compile 部分&#xff0c;包括语义解析以及计划的构建。optimize 部分&#xff0c;包括计划的优化。exec 部分&#xff…

十四、TCP多线程、原子类AtomicInteger、日志、枚举

tcp多线程 tcp客户端 多线程收发代码 package com.heima.test2;import java.io.*; import java.net.Socket; import java.nio.charset.Charset; import java.util.Scanner;class ClientSend implements Runnable {Socket socket;Scanner sc new Scanner(System.in);public C…

2019年数维杯国际大学生数学建模B题无人机避障问题设计规划求解全过程文档及程序

2019年数维杯国际大学生数学建模 B题 无人机避障问题设计规划 问题重述&#xff1a; 任务1&#xff1a;假设无人机在飞行过程中不受风向、湿度等外界因素的影响&#xff0c;飞行速度和拍摄角度恒定&#xff0c;无人机对一定宽度的区域进行直线飞行模式航拍。执行此航拍的飞行…

SpringBoot(一): SpringBoot的创建和使用

Spring的创建和使用1. 什么是Spring&#xff1f;2. SpringBoot的优点3. SpringBoot项目的创建3.1 使用IDEA创建3.2 使用网页创建4. 项目目录介绍和运行4.1 目录介绍4.2 项目运行4.3 输出hello world4.4 约定大于配置1. 什么是Spring&#xff1f; Spring的诞生是为了简化Java程…

Spring-boot启动失败 Unregistering JMX-exposed beans on shutdown 异常处理

目录一、异常错误二、原因三、解决方法一、异常错误 Spring-boot启动Run时&#xff0c;出现 o.s.j.e.a.AnnotationMBeanExporter - Unregistering JMX-exposed beans on shutdown 错误 *************************** APPLICATION FAILED TO START Description: The Tomcat conn…

【小程序】包与数据共享

文章目录使用 npm 包Vant WeappAPI Promise化全局事件共享MobX分包分包概念使用分包独立分包分包预下载使用 npm 包 目前&#xff0c;小程序中已经支持使用 npm 安装第三方包&#xff0c;从而来提高小程序的开发效率。但是&#xff0c;在小程序中使用npm 包有如下 3 个限制&am…

【韩顺平Linux】学习笔记3

【韩顺平Linux】学习笔记3一、文件目录指令pwd指令 ls指令cd指令mkdir指令rmdir指令touch指令cp指令rm指令mv指令cat指令more指令less 指令echo指令 head指令tail指令> 指令 >>指令ln指令history指令二、时间日期指令三、查找指令四、压缩和解压一、文件目录指令 根目…