Cesium-Examples/examples/threeEx/1.1.21、CSS3DRenderer.html
2025-03-19 11:00:22 +08:00

112 lines
3.2 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--********************************************************************
* by jiawanlong
*********************************************************************-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<style>
* {
margin: 0;
padding: 0;
}
body,
.box {
width: 100%;
background-color: #1f1f1f;
height: 100%;
}
.card {
color: white;
background: blueviolet;
backface-visibility: hidden;
}
.card img{
width: 50px;
}
</style>
</head>
<body>
<!-- CSS3DObject、CSS3DSprite(精灵)、CSS2DObject的区别
CSS3D不面向摄像机场景缩放时缩小放大跟随着不被模型遮挡通过DOM事件点击
CSS2D面向摄像机场景缩放时缩小放大都一样大不被模型遮挡通过DOM事件点击。
精灵面向摄像机,场景缩放时,缩小放大跟随着,会被模型遮挡,可以被射线拾取。 -->
<!-- 渲染容器 -->
<div class="box" id="box"></div>
<!-- 标签 -->
<div class="card" id="cardId">
<p>模型标签</p>
<img src="./砖墙.jpg" alt="" srcset="">
</div>
<script type="importmap">
{
"imports": {
"three": "./../../libs/three/build/three.module.js",
"three/addons/": "./../../libs/three/examples/jsm/"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { CSS3DRenderer, CSS3DObject, CSS3DSprite } from 'three/addons/renderers/CSS3DRenderer.js';
const scene = new THREE.Scene()
let renderer = new THREE.WebGLRenderer({})
let cssRenderer = new CSS3DRenderer()
let box = document.getElementById("box")
// 坐标轴+灯光
const axes = new THREE.AxesHelper(500)
scene.add(axes)
// 相机
const camera = new THREE.PerspectiveCamera();
camera.position.set(400, 400, 400);
camera.lookAt(0, 0, 0);
//渲染区域
renderer.setSize(window.innerWidth, window.innerHeight)
box.appendChild(renderer.domElement)
//css3渲染区域
cssRenderer.setSize(window.innerWidth, window.innerHeight)
cssRenderer.domElement.style.position = 'absolute'
cssRenderer.domElement.style.top = 0 + 'px'
box.appendChild(cssRenderer.domElement)
// ----标注----
// let tag = new CSS3DSprite(document.getElementById('cardId'))
let tag = new CSS3DObject(document.getElementById('cardId'))
tag.position.set(100, 100, 100);
scene.add(tag)
// 执行渲染
function render() {
cssRenderer.render(scene, camera)
renderer.render(scene, camera)
requestAnimationFrame(render);
}
render();
let controls = new OrbitControls(camera, cssRenderer.domElement)
controls.addEventListener('change', function () {
cssRenderer.render(scene, camera)
renderer.render(scene, camera)
});
</script>
</body>
</html>