"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 = true
const 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 地图(01)创建基本场景
爷傲奈我何!2024-10-19 11:51
相关推荐
燃先生._.2 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)2401_857600956 小时前
SSM 与 Vue 共筑电脑测评系统:精准洞察电脑世界2401_857600956 小时前
数字时代的医疗挂号变革:SSM+Vue 系统设计与实现之道GDAL6 小时前
vue入门教程:组件透传 Attributes轻口味6 小时前
Vue.js 核心概念:模板、指令、数据绑定2402_857583496 小时前
基于 SSM 框架的 Vue 电脑测评系统:照亮电脑品质之路java_heartLake7 小时前
Vue3之性能优化ddd君317748 小时前
组件的声明、创建、渲染mirrornan8 小时前
3D和AR技术在电商行业的应用有哪些?前端没钱8 小时前
从 Vue 迈向 React:平滑过渡与关键注意点全解析