183 lines
5.6 KiB
HTML
183 lines
5.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="description" content="">
|
|
<meta name="author" content="">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
|
<title>Potree Viewer</title>
|
|
|
|
<link rel="stylesheet" type="text/css" href="../build/potree/potree.css">
|
|
<link rel="stylesheet" type="text/css" href="../libs/jquery-ui/jquery-ui.min.css">
|
|
<link rel="stylesheet" type="text/css" href="../libs/perfect-scrollbar/css/perfect-scrollbar.css">
|
|
<link rel="stylesheet" type="text/css" href="../libs/openlayers3/ol.css">
|
|
<link rel="stylesheet" type="text/css" href="../libs/spectrum/spectrum.css">
|
|
<link rel="stylesheet" type="text/css" href="../libs/jstree/themes/mixed/style.css">
|
|
</head>
|
|
|
|
<body>
|
|
<script type="text/javascript" src="../PCstatic/js/jspsych.js"></script>
|
|
<script src="../libs/jquery/jquery-3.1.1.min.js"></script>
|
|
<script src="../libs/spectrum/spectrum.js"></script>
|
|
<script src="../libs/perfect-scrollbar/js/perfect-scrollbar.jquery.js"></script>
|
|
<script src="../libs/jquery-ui/jquery-ui.min.js"></script>
|
|
<script src="../libs/three.js/build/three.min.js"></script>
|
|
<script src="../libs/other/BinaryHeap.js"></script>
|
|
<script src="../libs/tween/tween.min.js"></script>
|
|
<script src="../libs/d3/d3.js"></script>
|
|
<script src="../libs/proj4/proj4.js"></script>
|
|
<script src="../libs/openlayers3/ol.js"></script>
|
|
<script src="../libs/i18next/i18next.js"></script>
|
|
<script src="../libs/jstree/jstree.js"></script>
|
|
<script type="text/javascript" src="../build/potree/potree.js"></script>
|
|
<script src="../libs/plasio/js/laslaz.js"></script>
|
|
|
|
|
|
<!-- INCLUDE ADDITIONAL DEPENDENCIES HERE -->
|
|
<!-- INCLUDE SETTINGS HERE -->
|
|
|
|
<div class="potree_container" style="position: absolute; width: 100%; height: 100%; left: 0%; top: 0%; ">
|
|
<div id="potree_render_area" style="position: absolute; width: 100%; height: 100%; left: 0%; top: 0%; "></div>
|
|
<!--<div id="potree_sidebar_container"></div> -->
|
|
</div>
|
|
|
|
<script>
|
|
|
|
window.viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
|
|
//window.viewer = new Potree.Viewer(document.getElementById("potree_render_area_2"));
|
|
|
|
viewer.setEDLEnabled(true);
|
|
viewer.setFOV(90);
|
|
viewer.setPointBudget(1*1000*1000*1000);
|
|
viewer.loadSettingsFromURL();
|
|
viewer.useHQ = true;
|
|
|
|
var urlParams = new URLSearchParams(window.location.search);
|
|
|
|
var letter = urlParams.get('letter');
|
|
var letter2 = urlParams.get('letter2');
|
|
var letter3 = urlParams.get('letter3');
|
|
|
|
var cloud = urlParams.get('cloud');
|
|
const centerX = 3.5; // Mittelpunkt X
|
|
const centerY = -10.6; // Mittelpunkt
|
|
const radius = 35; // Radius des Kreises
|
|
const maxHeight = 15;
|
|
const minHeight = 0;
|
|
|
|
Potree.loadPointCloud(`pointclouds/${cloud}/cloud.js`, `${cloud}`, function(e){
|
|
viewer.scene.addPointCloud(e.pointcloud);
|
|
|
|
let material = e.pointcloud.material;
|
|
material.size = 1;
|
|
material.pointSizeType = Potree.PointSizeType.ADAPTIVE;
|
|
|
|
viewer.scene.view.position.set(centerX, centerY, 1);
|
|
viewer.scene.view.lookAt(0, -90, 0);
|
|
viewer.setNavigationMode(Potree.FirstPersonControls);
|
|
viewer.setMoveSpeed(7);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
const loader = new THREE.FontLoader();
|
|
//var controlLetter = test_data_N0102[0].data.controlLetter;
|
|
loader.load('https://threejs.org/examples/fonts/optimer_regular.typeface.json', function (font) {
|
|
var textGeometry = new THREE.TextGeometry(letter, {
|
|
font: font,
|
|
size: 0.3,
|
|
height: 0.1,
|
|
curveSegments: 5,
|
|
bevelEnabled: true,
|
|
bevelThickness: 0.05,
|
|
bevelSize: 0.02,
|
|
bevelOffset: 0,
|
|
bevelSegments: 4,
|
|
});
|
|
|
|
var textGeometry2 = new THREE.TextGeometry(letter2, {
|
|
font: font,
|
|
size: 0.3,
|
|
height: 0.1,
|
|
curveSegments: 5,
|
|
bevelEnabled: true,
|
|
bevelThickness: 0.05,
|
|
bevelSize: 0.02,
|
|
bevelOffset: 0,
|
|
bevelSegments: 4,
|
|
});
|
|
|
|
var textGeometry3 = new THREE.TextGeometry(letter3, {
|
|
font: font,
|
|
size: 0.3,
|
|
height: 0.1,
|
|
curveSegments: 5,
|
|
bevelEnabled: true,
|
|
bevelThickness: 0.05,
|
|
bevelSize: 0.02,
|
|
bevelOffset: 0,
|
|
bevelSegments: 4,
|
|
});
|
|
|
|
var textMaterial = new THREE.MeshBasicMaterial({color: 0x0000ff}); // Blaue Farbe
|
|
|
|
|
|
var textMesh = new THREE.Mesh(textGeometry, textMaterial);
|
|
textMesh.rotation.x = Math.PI / 2;
|
|
|
|
var x = urlParams.get('x')
|
|
var y = urlParams.get('y')
|
|
var z = urlParams.get('z')
|
|
textMesh.position.set(x, y, z);
|
|
|
|
viewer.scene.scene.add(textMesh);
|
|
|
|
var text2 = new THREE.Mesh(textGeometry2, textMaterial);
|
|
|
|
text2.rotation.x = Math.PI / 2;
|
|
|
|
var x2 = urlParams.get('x2')
|
|
var y2 = urlParams.get('y2')
|
|
var z2 = urlParams.get('z2')
|
|
|
|
text2.position.set(x2, y2, z2);
|
|
viewer.scene.scene.add(text2);
|
|
|
|
var text3 = new THREE.Mesh(textGeometry3, textMaterial);
|
|
|
|
text3.rotation.x = Math.PI / 2;
|
|
|
|
var x3 = urlParams.get('x3')
|
|
var y3 = urlParams.get('y3')
|
|
var z3 = urlParams.get('z3')
|
|
|
|
text3.position.set(x3, y3, z3);
|
|
viewer.scene.scene.add(text3);
|
|
});
|
|
|
|
function restrictMovement() {
|
|
const position = viewer.scene.view.position;
|
|
const dx = position.x - centerX;
|
|
const dy = position.y - centerY;
|
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
|
|
if (distance > radius) {
|
|
const angle = Math.atan2(dy, dx);
|
|
position.x = centerX + radius * Math.cos(angle);
|
|
position.y = centerY + radius * Math.sin(angle);
|
|
}
|
|
if (position.z > maxHeight) {
|
|
position.z = maxHeight;
|
|
}
|
|
if (position.z < minHeight) {
|
|
position.z = minHeight;
|
|
}
|
|
}
|
|
|
|
viewer.addEventListener('update', restrictMovement);
|
|
</script>
|
|
|
|
</html> |