three.js点材质(PointsMaterial)常用属性设置

news/2024/11/20 11:47:17/

一、前景回顾

上一章节简单介绍了下怎么使用点材质和点对象创建物体点对象和点材质介绍

在这里插入图片描述

点材质和点对象基本运用示例代码:

import * as THREE from "three";
// 导入轨道控制器
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
// 导入动画库
import gsap from "gsap";
// 导入dat.gui
import * as dat from "dat.gui";// 目标:认识pointesconst gui = new dat.GUI();
// 1、创建场景
const scene = new THREE.Scene();// 2、创建相机
const camera = new THREE.PerspectiveCamera(75,window.innerWidth / window.innerHeight,0.1,1000
);// 设置相机位置
camera.position.set(0, 0, 10);
scene.add(camera);// 创建球几何体
const sphereGeometry = new THREE.SphereBufferGeometry(3, 30, 30);// 设置点材质
const pointsMaterial = new THREE.PointsMaterial();
pointsMaterial.size = 0.1; // 设置点的尺寸大小,默认为1
// 相机深度而衰减
pointsMaterial.sizeAttenuation = true;const points = new THREE.Points(sphereGeometry, pointsMaterial); // 将几何体和材质传入点对象scene.add(points);// 初始化渲染器
const renderer = new THREE.WebGLRenderer();
// 设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight);
// 开启场景中的阴影贴图
renderer.shadowMap.enabled = true;
renderer.physicallyCorrectLights = true;// 将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);// 创建轨道控制器
const controls = new OrbitControls(camera, renderer.domElement);
// 设置控制器阻尼,让控制器更有真实效果,必须在动画循环里调用.update()。
controls.enableDamping = true;function render() {controls.update();renderer.render(scene, camera);//   渲染下一帧的时候就会调用render函数requestAnimationFrame(render);
}render();// 监听画面变化,更新渲染画面
window.addEventListener("resize", () => {//   console.log("画面变化了");// 更新摄像头camera.aspect = window.innerWidth / window.innerHeight;//   更新摄像机的投影矩阵camera.updateProjectionMatrix();//   更新渲染器renderer.setSize(window.innerWidth, window.innerHeight);//   设置渲染器的像素比renderer.setPixelRatio(window.devicePixelRatio);
});

这一章节介绍一下点材质PointsMaterial上的常用属性。

二、点材质常用属性设置

PointsMaterial常用属性有:

  • color: 点的颜色,默认为白色。
  • size: 点的大小,可以使用PointScaleAttenuation属性同时调整大小。
  • sizeAttenuation: 是否使用点大小衰减(根据相机远近自动调整点的大小),默认为true。
  • map: 对点纹理进行设置,可以使用贴图来代替单色点,如星空。

1. 设置颜色

// 创建点材质
const pointsMaterial = new THREE.PointsMaterial();
pointsMaterial.color.set(0x22a1ff); // 设置点的颜色 默认是白色

在这里插入图片描述

2. 设置点的大小

// 创建点材质
const pointsMaterial = new THREE.PointsMaterial();
pointsMaterial.size = 0.3; // 设置点的大小 默认是1
pointsMaterial.color.set(0x22a1ff); // 设置点的颜色 默认是白色

在这里插入图片描述

3. 设置点的大小是否因相机深度而衰减

// 创建点材质
const pointsMaterial = new THREE.PointsMaterial();
pointsMaterial.size = 0.1; // 设置点的大小 默认是1
pointsMaterial.color.set(0x22a1ff); // 设置点的颜色 默认是白色
pointsMaterial.sizeAttenuation = false; // 设置点的大小是否随着距离的增加而减小 相机深度而衰减 默认为true

在这里插入图片描述

4. 设置纹理贴图

咱需要先准备一个贴图,然后通过纹理加载器加载
在这里插入图片描述

// 创建点材质
const pointsMaterial = new THREE.PointsMaterial();
pointsMaterial.size = 0.1; // 设置点的大小 默认是1
pointsMaterial.color.set(0x22a1ff); // 设置点的颜色 默认是白色
pointsMaterial.sizeAttenuation = false; // 设置点的大小是否随着距离的增加而减小 相机深度而衰减 默认为trueconst textureLoader = new THREE.TextureLoader(); // 创建纹理加载器
const texture = textureLoader.load("./textures/particles/4.png"); // 设置点材质的纹理
pointsMaterial.map = texture; // 设置点材质的纹理

在这里插入图片描述
好啦,以上就是点材质的常用属性介绍,
完整代码如下:

import * as THREE from "three";
// 导入轨道控制器
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
// 导入动画库
import gsap from "gsap";
// 导入dat.gui
import * as dat from "dat.gui";// 目标:认识pointesconst gui = new dat.GUI();
// 1、创建场景
const scene = new THREE.Scene();// 2、创建相机
const camera = new THREE.PerspectiveCamera(75,window.innerWidth / window.innerHeight,0.1,1000
);// 设置相机位置
camera.position.set(0, 0, 10);
scene.add(camera);// 载入纹理
const textureLoader = new THREE.TextureLoader(); // 创建纹理加载器
const texture = textureLoader.load("./textures/particles/4.png"); // 设置点材质的纹理// 创建球几何体
const sphereGeometry = new THREE.SphereBufferGeometry(3, 30, 30); // 1、半径 2、水平分段数 3、垂直分段数// 创建点材质
const pointsMaterial = new THREE.PointsMaterial();
// 设置点材质
pointsMaterial.size = 0.2; // 设置点的大小
// pointsMaterial.color.set(0x22a1ff); // 设置点的颜色
pointsMaterial.sizeAttenuation = true; // 设置点的大小是否随着距离的增加而减小 相机深度而衰减
// 设置点材质纹理
pointsMaterial.map = texture; // 设置点材质的纹理const points = new THREE.Points(sphereGeometry, pointsMaterial); // 将几何体和材质传入点对象
scene.add(points); // 将点对象添加到场景中// 初始化渲染器
const renderer = new THREE.WebGLRenderer();
// 设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight);
// 开启场景中的阴影贴图
renderer.shadowMap.enabled = true;
renderer.physicallyCorrectLights = true; // 开启物理渲染// 将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);// 创建轨道控制器
const controls = new OrbitControls(camera, renderer.domElement);
// 设置控制器阻尼,让控制器更有真实效果,必须在动画循环里调用.update()。
controls.enableDamping = true;function render() { // 渲染函数controls.update(); // 更新控制器renderer.render(scene, camera); // 渲染器渲染场景和相机//   渲染下一帧的时候就会调用render函数requestAnimationFrame(render);
}render();// 监听画面变化,更新渲染画面
window.addEventListener("resize", () => {//   console.log("画面变化了");// 更新摄像头camera.aspect = window.innerWidth / window.innerHeight;//   更新摄像机的投影矩阵camera.updateProjectionMatrix();//   更新渲染器renderer.setSize(window.innerWidth, window.innerHeight);//   设置渲染器的像素比renderer.setPixelRatio(window.devicePixelRatio);
});

http://www.ppmy.cn/news/650974.html

相关文章

计算机视觉领域的双璧之称 对象检测与语义分割

对象检测和语义分割是计算机视觉领域中两个重要的任务。它们在图像识别、智能交通、医学影像分析等领域具有广泛的应用。 一、对象检测 对象检测是一种计算机视觉任务,它的目的是在图像中准确地检测出目标物体的位置和大小。对象检测可以分为两种类型:单…

【Unity Shader】通用UI Effect

地址记录: 【Unity Shader】通用UI Effect(一) - 知乎

怎么下载优酷视频呢,你可以这样下

比如你打开视频后地址栏是 http://v.youku.com/v_show/id_XMjU4MDk1NzUy.html 你在youku前面加上love也就是 http://v.loveyouku.com/v_show/id_XMjU4MDk1NzUy.html 你就可以去下载了。

下载Youku视频观看

所需工具: 1、chorme内核浏览器,如Chorme、Firefox等等 2、vlc视频播放器 准备工作完成,开始工作 1、打开优酷的随便一个视频 2、按下F12选择Network(网络)选择Media(媒体),可能一次…

PHP PDOConnection类代码示例

本文整理汇总了PHP中PDOConnection类的典型用法代码示例。如果您正苦于以下问题:PHP PDOConnection类的具体用法?PHP PDOConnection怎么用?PHP PDOConnection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。 …

批量下载某些网站的在线视频(如:bibi,优酷等)

本文意在提供自用,如盗用他人视频牟利,只会招人鄙视! 文章描述的是在windows10系统pc端python环境下,利用you-get库来进行bilibili视频批量下载,是在cmd中操作完成,只建议有python环境的用户使用。 1.安装…

下载优酷视频

注意:无需安装任何软件即可下载: 1、访问网站:http://www.kisstudou.com 2、将优酷视频播放地址复制到首页的文本框中回车 3、将出现视频名称和真实flv下载地址 4、右键另存为下载 5、flv文件用暴风影音播放

优酷的视频真实地址(下载地址)

首先,我们需要这款名叫“点量视频解析嗅探组件”的软件,主要用于解析各大视频网站在线观看视频的真实地址,获得视频的源址。   目前,该软件可解析的视频网站包括: 乐视网、新浪视频、搜狐视频、风行网、PPTV、华数、…