当前位置: 首页 > news >正文

利用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();

http://www.jsqmd.com/news/1097972/

相关文章:

  • 技术迷因ŗPHP6SìäżķēĊņ引发的思考:开发者如何高效评估与筛选真实技术项目
  • 回归还是分类?看决策动作而非输出形式
  • 对抗机器学习实战:攻防原理、工业级防御与物理世界鲁棒性
  • SAP集成中SOAP消息级认证与WS-Security实战指南
  • SoloPi实战指南:Android APP性能测试与优化全流程解析
  • 2026视频文案提取渠道汇总:电脑手机在线免费转文字工具实操指南
  • 金融数据接口逆向实战:从JS加密到Python模拟请求的完整指南
  • 线上SQL性能突降排查指南:从CPU飙升到执行计划突变的完整路径
  • Java ECC算法实战:从原理到应用场景与避坑指南
  • Windows环境下使用John the Ripper与Hashcat破解压缩包密码实战指南
  • Java国密算法实战:基于Hutool与Bouncy Castle的SM2/SM3/SM4集成指南
  • AI编程不是提效神器,而是开发者认知升级的催化剂
  • Android应用安全测试入门:从环境搭建到漏洞挖掘实战指南
  • Android与iOS原生应用集成reCAPTCHA v3无感验证实战指南
  • 春秋云境CVE-2021-28164(极速版)
  • 前端安全实战:从XSS、CSRF到HTTPS的浏览器攻防体系构建
  • 零基础玩转Coze与Dify:从AI智能体到工作流的实战指南
  • DeepSeek界面更新背后的商业化技术逻辑解析
  • 2026抚顺黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • 深度学习优化器原理与实战:从SGD到Adam的调优心法
  • AUTOSAR CP IdsM实战:手把手教你配置R23-11版本的安全事件过滤器链
  • 文献梳理效率低?okbiye 专项 AI 文献综述功能适配各学段学术写作标准
  • 移动端性能测试实战:基于SoloPi的五大核心指标监控与分析方法
  • 蒸馏式论文精读:从复现到创造的四层漏斗方法
  • Burp Suite代理拦截与请求修改:Web安全测试的核心技能详解
  • AI反向训练人类:认知被悄然重塑的真相
  • Kali Linux 2026 虚拟机部署与汉化:VMware 环境下的渗透测试平台搭建指南
  • 数据增强的本质是构建可控的认知扰动场
  • AI Newsletter如何成为工程师的技术决策中枢
  • Agent Runtime:AI代理的“操作系统时刻”来临