news 2026/6/30 19:51:25

利用threejs创建一个3D图形

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
利用threejs创建一个3D图形

一、主要内容

本文主要描述如何利用threejs创建一个3D图形,客户端通过ip地址加端口可访问到创建的3D界面

本文是续写 创建threejs工程-CSDN博客 内容,如果看需要参考请翻阅该文档。

二、静态页面main.js文件内容

import * as THREE from 'three'; // console.log(THREE); //创建场景 const scene = new THREE.Scene(); //创建相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); //设置相机位置 camera.position.set(0,0,10); //添加到场景中 scene.add(camera); //添加物体 const box = new THREE.BoxGeometry(1,1,1); //创建材质 const material = new THREE.MeshBasicMaterial({color:0xffff00}); //材质和物体结合 const cube= new THREE.Mesh(box,material); //将集合添加到场景中 scene.add(cube); //初始化渲染器 const renderer = new THREE.WebGLRenderer(); //设置渲染器宽度和高度 renderer.setSize(window.innerWidth,window.innerHeight); //将webgl渲染的canvas内容添加到body中 document.body.appendChild(renderer.domElement); //使用渲染器,通过相机将场景渲染进来 renderer.render(scene,camera); //打印日志输出 console.log('Hello Three.js!');

获得如下静态页面:

三、动态页面main.js文件内容

相比静态图形,主要增加了轨道控制器和windows自带的requestAnimationFrame函数,它主要是每帧会执行requestAnimationFrame指定的回调函数。下一帧继续执行renderer,形成无限循环

//引入threejs import * as THREE from 'three'; //引入轨道控制器 import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' // console.log(THREE); //创建场景 const scene = new THREE.Scene(); //创建相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); //设置相机位置 camera.position.set(0,0,10); //添加到场景中 scene.add(camera); //添加物体 const box = new THREE.BoxGeometry(1,1,1); //创建材质 const material = new THREE.MeshBasicMaterial({color:0xffff00}); //材质和物体结合 const cube= new THREE.Mesh(box,material); //将集合添加到场景中 scene.add(cube); //初始化渲染器 const renderer = new THREE.WebGLRenderer(); //设置渲染器宽度和高度 renderer.setSize(window.innerWidth,window.innerHeight); //将webgl渲染的canvas内容添加到body中 document.body.appendChild(renderer.domElement); // //使用渲染器,通过相机将场景渲染进来 // renderer.render(scene,camera); //添加轨道控制器 const controls = new OrbitControls(camera,renderer.domElement); function render(){ renderer.render(scene,camera); requestAnimationFrame(render); } render(); //打印日志输出 console.log('Hello Three.js!');

动态3D图形:可以放大缩小,旋转

四、添加坐标服务器mian.js内容

//引入threejs import * as THREE from 'three'; //引入轨道控制器 import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' // console.log(THREE); //创建场景 const scene = new THREE.Scene(); //创建相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); //设置相机位置 camera.position.set(0,0,10); //添加到场景中 scene.add(camera); //添加物体 const box = new THREE.BoxGeometry(1,1,1); //创建材质 const material = new THREE.MeshBasicMaterial({color:0xffff00}); //材质和物体结合 const cube= new THREE.Mesh(box,material); //将集合添加到场景中 scene.add(cube); //初始化渲染器 const renderer = new THREE.WebGLRenderer(); //设置渲染器宽度和高度 renderer.setSize(window.innerWidth,window.innerHeight); //将webgl渲染的canvas内容添加到body中 document.body.appendChild(renderer.domElement); // //使用渲染器,通过相机将场景渲染进来 // renderer.render(scene,camera); //添加轨道控制器 const controls = new OrbitControls(camera,renderer.domElement); //增加坐标服务器 const axeshelper=new THREE.AxesHelper(8); scene.add(axeshelper); //添加到场景中 //渲染 function render(){ renderer.render(scene,camera); requestAnimationFrame(render); } render();

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 19:50:23

Objects that Sound:基于物理建模的视听联合生成模型

1. 项目概述:当眼睛“听见”世界,耳朵“看见”结构 你有没有试过只听一段环境音,就能在脑子里勾勒出声音发生的场景?比如听到雨点敲打铁皮屋顶的清脆回响,立刻想到一个倾斜的、锈迹斑斑的旧棚子;或者听见远…

作者头像 李华
网站建设 2026/6/30 19:49:11

AI落地三大支点:边缘确定性、知识结构化与人机闭环

1. 项目概述:这不是一句口号,而是一份技术演进路线图“The Best AI Trend Is Yet To Come”——这句话乍看像媒体稿里的宣传语,但在我过去十年跟踪AI落地项目的实践中,它早已不是修辞,而是可验证的工程判断。我经手过从…

作者头像 李华
网站建设 2026/6/30 19:47:00

SAP集成中SOAP消息级认证与WS-Security实战指南

1. 项目概述:为什么SOAP消息级认证在SAP集成中如此关键? 在SAP与外部系统集成的世界里,Web Service是打通数据孤岛、实现业务流程自动化的核心桥梁。无论是SAP S/4HANA与一个外部的MES系统交换生产订单,还是SAP CRM与一个电商平台…

作者头像 李华
网站建设 2026/6/30 19:45:08

iOS应用安全加固实战:混淆与加密技术深度解析

1. 项目概述:为什么iOS App安全加固刻不容缓 几年前,我接手过一个项目,客户反馈说他们的iOS应用在第三方应用商店被“破解版”疯狂传播,不仅内购功能被绕过,核心业务逻辑也被扒得干干净净。那一刻我才深刻意识到&#…

作者头像 李华
网站建设 2026/6/30 19:43:20

Muon优化器与MLA技术:中国AI开源双子星的训练推理革命

1. 这不是彩蛋,是开源AI时代的技术握手今天上午DeepSeek V4技术报告刚一公开,我就泡在PDF里逐页翻。不是为了找性能参数,也不是看上下文长度——那些数字早被媒体刷屏了。我盯着的是训练方法章节里那个不起眼的词:Muon优化器。它就…

作者头像 李华
网站建设 2026/6/30 19:42:03

大模型MoE架构揭秘:为何每步仅激活2%参数

1. 这不是“参数越多越强”的简单故事:拆解大模型里被悄悄激活的那2%你肯定见过这类标题:“GPT-4参数量突破1.8万亿!”“DeepSeek-R1狂堆6710亿参数!”——但真正决定它回答你“今天该穿什么”是否靠谱的,从来不是那个…

作者头像 李华