Threejs 实现3D 地图(01)创建基本场景

embedded/2024/10/20 14:23:38/

"d3": "^7.9.0",
"three": "^0.169.0",
"vue": "^3.5.10"
<script setup>
import { onMounted,ref } from 'vue'
import * as THREE from 'three'
import * as d3 from "d3";  //莫开托坐标 矫正地图坐标
import map from './constant/map.json'
// 引入轨道控制器扩展库OrbitControls.js
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
// 拿到页面的宽高
const width = window.innerWidth, height = window.innerHeight;// 创建场景
const scene = new THREE.Scene();
// 将背景颜色设置为白色
scene.background = new THREE.Color("#000000");// 创建相机
const camera = new THREE.PerspectiveCamera(70, width / height, 0.01, 10000);
// 设置相机位置
camera.position.z = 1000;// // 辅助线 AxesHelper
const axesHelper = new THREE.AxesHelper( 500 );
scene.add( axesHelper );// 初始化渲染器
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(width, height);// 设置相机控件轨道控制器OrbitControls
const controls = new OrbitControls(camera, renderer.domElement);
//阻尼 更真实
controls.enableDamping = trueconst initGeom = () => {// 添加一个物体(测试是否显示)const geometry = new THREE.BoxGeometry( 200, 200,200 );const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );const cube = new THREE.Mesh( geometry, material );scene.add( cube );
}// 渲染页面
const render = () => {// 将场景(scene)和摄像机(camera 加入进来)renderer.render(scene, camera)// 渲染下一帧的时候会调用render函数requestAnimationFrame(render)controls.update()
}const initLight = () => {// 基本光源const ambLight = new THREE.AmbientLight('#ffffff', 0.3)/*** 设置聚光灯相关的的属性*/const spotLight = new THREE.SpotLight(0xFFFFFF); // 聚光灯spotLight.position.set(40, 200, 10);spotLight.castShadow = true; // 只有该属性为true时,该点光源允许产生阴影,并且下列属性可用scene.add(ambLight, spotLight); // 向场景中添加光源
}onMounted(() => {// 添加物体到场景initGeom()// 渲染render()// 设置环境光initLight()// 将渲染加入到页面上document.body.appendChild(renderer.domElement);
})
</script><template><div id="info"></div>
</template><style scoped></style>

下一篇:Threejs 实现3D 地图(02)创建3d 地图-CSDN博客 


http://www.ppmy.cn/embedded/129009.html

相关文章

Mybatis-plus

Springboot3Mybatis3.5 基本框架环境依赖导入配置文件实体类业务类结构 基本功能——提供的mapper接口及实现插入删除——返回受影响行数修改数据查询方法自定义mapper&#xff08;和mybatis一样&#xff09; 相关功能——提供的Service方法Service层搭建相关方法添加记录插入或…

SpringCloud第三章:客户端负载均衡与服务调用

正常本章节应该讲解Netflix Ribbon&#xff0c;由于从Netflix Eureka Client 3.0版本开始内置Ribbon实现机制&#xff0c;不需要单独依赖Ribbon&#xff0c;如果引入Ribbon会报错 java.lang.IllegalStateException: No instances available for XXXXXX&#xff0c;并且想要修改…

1/2∥w∥^2 :这是w 的二次项,偏导数为 w

此公式出现在线性可分支持向量机基于拉格朗日函数L(w,b,α)对w求导的公式中。为什么 1 2 ∥ w ∥ 2 \frac{1}{2} \|\mathbf{w}\|^2 21​∥w∥2 对 w \mathbf{w} w 的偏导数是 w \mathbf{w} w。这个问题涉及到向量的微分运算。 1. 复习&#xff1a;向量的范数 我们首先来看…

DBdoctor推出无Agent轻量级纳管解决方案

目录 背景 DBdoctor推出无Agent轻量级纳管解决方案 方案优势&#xff1a; 实例纳管方式&#xff1a; 无Agent纳管可体验哪些功能&#xff1f; 1.全量SQL审核功能 2.实例巡检功能 3.性能洞察功能 4.基础监控功能 总结 背景 在数字化时代&#xff0c;数据库作为信息系…

pdf文件怎样一张纸打印四页

在日常工作和学习中&#xff0c;我们经常会遇到需要将PDF文件中的多页内容合并打印到一张纸上的情况&#xff0c;比如将四页内容打印到一张A4纸上&#xff0c;以节省纸张和成本。同时&#xff0c;在打开pdf文件的方式&#xff0c;一般都是通过电脑浏览器打印&#xff0c;因此对…

学习鸿蒙Next 之路 http

关于学习鸿蒙开发之http的请求 首先还是老样子先上代码&#xff0c;然后我再说出我的看法 先创建一个请求的函数 function RequestHttp&#xff08;url&#xff1a;string&#xff0c;data&#xff1f;:Object|string&#xff09;{ } 先展示get请求&#xff0c;之前在unity的开…

iOS 18.1的开发者预览版Beta 7版本测评,是否值得升级

10月14日苹果悄咪咪地放出了iOS 18.1的开发者预览版Beta 7&#xff0c;版本号是22B5075a。这啥意思呢&#xff1f;意味着下个星期&#xff0c;我们就能迎来iOS 18.7的准正式版啦&#xff01;苹果官方说得好好的&#xff0c;iOS 18.1正式版系统会在10月29日和大家见面。咱们就坐…

字符串及正则表达式

目录 字符串 字符串常用方法&#xff1a; 格格式化字符串的三种方式&#xff1a; 格式化字符串的详细格式&#xff1a; 字符串的编码&#xff1a; 字符串的解码&#xff1a; 数据的验证&#xff1a; 字符串拼接的几种方式&#xff1a; 字符串去重&#xff1a; 正则表达…