首页 > 其他分享 >51. Three.js案例-创建透明立方体

51. Three.js案例-创建透明立方体

时间:2025-01-03 09:26:26浏览次数:3  
标签:布尔值 51 THREE 默认 Three var 立方体 new js

51. Three.js案例-创建透明立方体

实现效果

本案例展示了如何使用Three.js创建两个具有不同透明度的立方体,并将其渲染到网页中。通过调整相机位置和设置场景,用户可以观察到这两个立方体在三维空间中的相对位置和透明效果。
效果

知识点

WebGLRenderer(WebGL渲染器)

WebGLRenderer是Three.js中最常用的渲染器之一,用于将场景渲染为WebGL内容。它支持抗锯齿等高级特性。

构造器
new THREE.WebGLRenderer(parameters)
参数类型描述
parametersObject渲染器参数配置对象

常用参数包括:

  • antialias:布尔值,是否开启抗锯齿,默认为false
  • alpha:布尔值,是否允许透明背景,默认为false
  • premultipliedAlpha:布尔值,是否使用预乘Alpha通道,默认为true
  • preserveDrawingBuffer:布尔值,是否保存绘图缓冲区,默认为false
  • depth:布尔值,是否创建深度缓冲区,默认为true
  • stencil:布尔值,是否创建模板缓冲区,默认为true
  • maxAnisotropy:整数,最大各向异性级别,默认为1
  • failIfMajorPerformanceCaveat:布尔值,如果性能不佳则失败,默认为false

PerspectiveCamera(透视相机)

PerspectiveCamera用于模拟人眼视角,提供真实的透视效果。

构造器
new THREE.PerspectiveCamera(fov, aspect, near, far)
参数类型描述
fovFloat视野角度(Field of View),以度为单位
aspectFloat宽高比
nearFloat近裁剪面距离
farFloat远裁剪面距离

Scene(场景)

Scene是所有物体、光源、相机等元素的容器。

方法
  • add(object):添加一个对象到场景中。
  • remove(object):从场景中移除一个对象。

AmbientLight(环境光)

AmbientLight是一种均匀照亮整个场景的光源,不考虑方向或距离。

构造器
new THREE.AmbientLight(color, intensity)
参数类型描述
colorColor光的颜色
intensityFloat光的强度,默认为1

BoxGeometry(立方体几何体)

BoxGeometry用于创建立方体或长方体。

构造器
new THREE.BoxGeometry(width, height, depth, widthSegments, heightSegments, depthSegments)
参数类型描述
widthFloat立方体宽度,默认为1
heightFloat立方体高度,默认为1
depthFloat立方体深度,默认为1
widthSegmentsInteger宽度分割段数,默认为1
heightSegmentsInteger高度分割段数,默认为1
depthSegmentsInteger深度分割段数,默认为1

MeshNormalMaterial(网格法线材质)

MeshNormalMaterial根据网格的法线方向计算颜色,常用于调试。

构造器
new THREE.MeshNormalMaterial(parameters)
参数类型描述
parametersObject材质参数配置对象

常用参数包括:

  • color:材质颜色,默认为0xaaaaaa
  • wireframe:布尔值,是否显示线框模式,默认为false
  • flatShading:布尔值,是否启用平面着色,默认为false
  • opacity:浮点数,透明度,默认为1.0
  • transparent:布尔值,是否启用透明,默认为false

Vector3(三维向量)

Vector3表示三维空间中的一个点或向量。

构造器
new THREE.Vector3(x, y, z)
参数类型描述
xFloatX轴坐标,默认为0
yFloatY轴坐标,默认为0
zFloatZ轴坐标,默认为0

代码

<!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 myCamera = new THREE.PerspectiveCamera(45,
        window.innerWidth / window.innerHeight, 30, 1000);
    myCamera.position.set(-34.34, -40.56, 35.83);
    myCamera.lookAt(new THREE.Vector3(0, 0, 0));

    // 创建场景
    var myScene = new THREE.Scene();
    myScene.add(new THREE.AmbientLight('white'));

    // 创建第一个立方体
    var myGeometry1 = new THREE.BoxGeometry(6, 6, 6);
    var myMaterial1 = new THREE.MeshNormalMaterial({
        opacity: 0.19, transparent: true
    });
    var myMesh1 = new THREE.Mesh(myGeometry1, myMaterial1);
    myMesh1.translateX(-20);
    myScene.add(myMesh1);

    // 创建第二个立方体
    var myGeometry2 = new THREE.BoxGeometry(16, 16, 16);
    var myMaterial2 = new THREE.MeshNormalMaterial({
        opacity: 0.99, transparent: true
    });
    var myMesh2 = new THREE.Mesh(myGeometry2, myMaterial2);
    myMesh2.translateX(10);
    myScene.add(myMesh2);

    // 渲染立方体
    myRenderer.render(myScene, myCamera);
</script>
</body>
</html>

演示链接

示例链接

标签:布尔值,51,THREE,默认,Three,var,立方体,new,js
From: https://blog.csdn.net/m0_51180924/article/details/144900299

相关文章

  • 请解译下nodejs中__dirname,__filename属性的作用
    在Node.js中,__dirname和__filename是两个全局变量,它们提供了关于当前执行脚本的目录和文件名的信息。这两个变量在Node.js应用程序中特别有用,尤其是当你需要处理文件路径或构建相对路径时。__dirname:__dirname返回当前执行脚本所在的目录的绝对路径。这是一个字符串......
  • Nodejs中是如何导出模块的?
    在Node.js中,你可以使用module.exports或exports关键字来导出模块,使得其他文件可以通过require关键字来引入和使用这些模块。以下是一些示例:示例1:使用module.exports导出//在一个名为myModule.js的文件中functionmyFunction(){console.log("Hellofrommymodule!");......
  • 在Nodejs中异步I/O的流程是怎样的?
    在Node.js中,异步I/O(输入/输出)的流程涉及几个关键概念,包括事件循环、事件队列、回调函数、Promise、以及async/await。这些机制共同工作,使得Node.js能够以非阻塞的方式处理I/O操作,从而提高应用程序的性能和响应能力。以下是异步I/O在Node.js中的基本流程:事件循环(Eve......
  • (免费源码)计算机毕业设计必学必看 java、python、php、node.js、c#、APP、小程序、大数
     摘 要疫情之下,实体经济面临下行压力。2019年以来,新冠肺炎疫情卷土而来,各地地疫情防控形势严峻,许多中小微企业经营发展屡次遭受打击。面对疫情常态化的社会现实,为纾困中小企业,助力经济复苏,保障社会稳定运行,国家有关部门相继出台一系列政策“组合拳”,加大纾困支持力度,提振......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,抗疫物资管理小程序被用户普遍使用,为方便用户能够可以随时进行抗疫物资管理小程序的数据信息管理,特开发了基于PHP南宁......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
     摘 要随着我国经济迅速发展,人们对医疗管理的需求越来越大,各种医疗管理系统也都在被广泛应用,对于医疗管理的各种软件也是备受用户的喜爱,医疗管理系统被用户普遍使用,为方便用户能够可以随时进行医疗管理系统的数据信息管理,特开发了基于springboot医疗管理系统。医疗管理系......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校课程实验系统等问题,对面向过程性考核的高校课程实验系统进行研究分析,然后开发设计出面向过......
  • Python----Python爬虫(re、bs4、pyquery、xpath、json的使用)
    一、正则表达式的使用1.1、正则表达式        正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了1.2、规则1.2.1、定位符字符描述^......
  • JVM实战—8.如何分析jstat统计来定位GC
    大纲1.使用jstat了解线上系统的JVM运行状况2.使用jmap和jhat了解线上系统的对象分布3.如何分析JVM运行状况并合理优化4.使用jstat分析模拟的BI系统JVM运行情况5.使用jstat分析模拟的计算系统JVM运行情况6.问题汇总 1.使用jstat了解线上系统的JVM运行状况(1)JVM的整体运......
  • Vue cli 插件( plugins.js)
    1、功能增加Vue2、创建插件(plugins.js)文件a,b为其它参数exportdefault{install(Vue,a,b){//全局混入Vue.mixin({data(){return{x:100,y:99}......