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

学习threejs,绘制二维线

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
  • 二、🍀绘制二维线
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍基于threejs如何绘制二维线,亲测可用。希望能帮助到您。一起学习,加油!加油!

二、🍀绘制二维线

1. ☘️实现思路

  • 1、创建Scene三维场景
  • 2、初始化camera相机,定义相机位置 camera.position.set,设置相机朝向lookAt
  • 3、创建渲染器,document加入渲染器
  • 4、创建THREE.LineBasicMaterial线材质,创建THREE.Geometry线几何,线几何计入THREE.Vector3顶点,创建THREE.Line线类型,场景scene加入THREE.Line线。
  • 5、渲染器renderer渲染场景scene和相机camera

2. ☘️代码样例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>learn2</title><script src="lib/threejs/91/three.js"></script><style>body{margin:0;}canvas{width: 100%; height:100%; display: block;}</style>
</head>
<body>
<script>//创建场景var scene = new THREE.Scene()//设置相机(视野,显示口的宽高比,近裁剪面,远裁剪面)var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 )//设置相机的视点camera.position.set(0,0,100)//设置相机的朝向camera.lookAt(new THREE.Vector3(0,0,0))//渲染器var renderer = new THREE.WebGLRenderer()//设置渲染器的高度和宽度,如果加上第三个值 false,则按场景大小显示,等比例缩放renderer.setSize( window.innerWidth, window.innerHeight,false)//将渲染器添加到html当中document.body.appendChild( renderer.domElement )//定义线的基本材料,我们可以使用LineBasicMaterial(实线材料)和LineDashedMaterial(虚线材料)var material = new THREE.LineBasicMaterial({color:0x0000ff})//设置具有几何顶点的几何(Geometry)或缓冲区几何(BufferGeometry)设置顶点位置,看名字就知道了,一个是直接将数据保存在js里面的,另一个是保存在WebGL缓冲区内的,而且肯定保存到WebGL缓冲区内的效率更高var geometry = new THREE.Geometry();geometry.vertices.push(new THREE.Vector3(-50,0,0))geometry.vertices.push(new THREE.Vector3(0,50,0))geometry.vertices.push(new THREE.Vector3(50,0,0))//使用Line方法将线初始化var line = new THREE.Line(geometry, material)//将线添加到场景scene.add(line)line.rotation.x += 1//使用渲染器渲染出场景和相机renderer.render(scene, camera);
</script>
</body>
</html>

效果如下:
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue2项目实现国际化(若依框架示例)
  • Java 全栈开发中的最佳实践:从前端到后端的完整流程
  • Swing模拟银行柜台系统
  • Dify 中的讯飞星火平台工具源码分析
  • 【嵌入式硬件】续流二极管
  • 流量特征随机ua修改
  • Python 学习之虚拟环境
  • 一元运算符(自增自减)
  • 力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs
  • Docker 的安装部署与基本使用
  • 使用 from __future__ import annotations 语句来允许在类型注释中使用尚未定义的类名
  • 用 Pygame 实现一个乒乓球游戏
  • 数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)
  • lxml库
  • Axios基本语法和前后端交互
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript对象详解
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • node-glob通配符
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 初探 Vue 生命周期和钩子函数
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 给github项目添加CI badge
  • 区块链技术特点之去中心化特性
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 用jquery写贪吃蛇
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​Python 3 新特性:类型注解
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #NOIP 2014#Day.2 T3 解方程
  • (a /b)*c的值
  • (javascript)再说document.body.scrollTop的使用问题
  • (js)循环条件满足时终止循环
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (过滤器)Filter和(监听器)listener
  • (七)Java对象在Hibernate持久化层的状态
  • (三分钟)速览传统边缘检测算子
  • (十八)三元表达式和列表解析
  • (四)事件系统
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一一四)第九章编程练习
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Linux下编译安装log4cxx
  • (转)可以带来幸福的一本书
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ./configure、make、make install 命令