1892 Tris12,3 × 5,65 × 14,8 m
Im Code verwenden
Im Editor remixenlanding-pad.js · 497 Zeilen
Eigenständiges ES-Modul — hängt nur von three ab. Ruf die Factory auf und füge die Gruppe deiner Szene hinzu.
/**
* Landing Pad — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 1,892 · Size (W × H × D): 12.31 × 5.65 × 14.80 m
*
* Usage:
* import { createLandingPad } from './landing-pad.js';
*
* const model = createLandingPad();
* model.position.set(0, 0, 0);
* scene.add(model);
*/
import * as THREE from 'three';
const deg = THREE.MathUtils.degToRad;
// Tube along a smooth curve through the given points.
function tube(path, radius, tubularSegments, radialSegments, closed = false) {
const curve = new THREE.CatmullRomCurve3(path.map(([x, y, z]) => new THREE.Vector3(x, y, z)), closed);
return new THREE.TubeGeometry(curve, tubularSegments, radius, radialSegments, closed);
}
export function createLandingPad() {
const root = new THREE.Group();
root.name = 'LandingPad';
// Materials
const deckMat = new THREE.MeshStandardMaterial({ name: 'deck', color: 0x5d646e, roughness: 0.75, metalness: 0.25, flatShading: true });
const deckLightMat = new THREE.MeshStandardMaterial({ name: 'deckLight', color: 0x737b86, roughness: 0.75, metalness: 0.2, flatShading: true });
const shellMat = new THREE.MeshStandardMaterial({ name: 'shell', color: 0xd0d6de, roughness: 0.45, metalness: 0.3, flatShading: true });
const darkMat = new THREE.MeshStandardMaterial({ name: 'dark', color: 0x2f343c, roughness: 0.6, metalness: 0.35, flatShading: true });
const metalMat = new THREE.MeshStandardMaterial({ name: 'metal', color: 0x8a929c, roughness: 0.4, metalness: 0.6, flatShading: true });
const concreteMat = new THREE.MeshStandardMaterial({ name: 'concrete', color: 0xa9a49b, roughness: 0.95, flatShading: true });
const markMat = new THREE.MeshStandardMaterial({ name: 'mark', color: 0xf2c230, roughness: 0.6, flatShading: true });
const lightMat = new THREE.MeshStandardMaterial({ name: 'light', color: 0x4fd8ff, roughness: 0.4, emissive: 0x4fd8ff, emissiveIntensity: 1.3, flatShading: true });
const warmMat = new THREE.MeshStandardMaterial({ name: 'warm', color: 0xfff1c8, roughness: 0.3, emissive: 0xffe2a0, emissiveIntensity: 1.2, flatShading: true });
// Shared geometries
const boxGeo = new THREE.BoxGeometry(0.5, 0.03, 0.16);
const boxGeo2 = new THREE.BoxGeometry(0.396, 0.03, 2.52);
const cylinderGeo = new THREE.CylinderGeometry(0.15, 0.18, 0.1, 6);
const cylinderGeo2 = new THREE.CylinderGeometry(0.11, 0.11, 0.1, 6);
const cylinderGeo3 = new THREE.CylinderGeometry(0.22, 0.28, 0.88, 6);
const boxGeo3 = new THREE.BoxGeometry(0.8, 0.12, 0.8);
const cylinderGeo4 = new THREE.CylinderGeometry(0.06, 0.06, 3.3439, 5);
const boxGeo4 = new THREE.BoxGeometry(0.14, 0.24, 4.3681);
const boxGeo5 = new THREE.BoxGeometry(0.06, 0.9, 0.06);
const cylinderGeo5 = new THREE.CylinderGeometry(0.04, 0.04, 3.7201, 5);
const boxGeo6 = new THREE.BoxGeometry(0.1, 0.05, 0.3);
// Parts
const deck = new THREE.Mesh(new THREE.CylinderGeometry(6, 6, 0.32, 6, 1, false, Math.PI / 6), deckMat);
deck.name = 'deck';
deck.position.set(0, 1.04, 0);
root.add(deck);
const rim = new THREE.Mesh(new THREE.CylinderGeometry(6.12, 6.12, 0.16, 6, 1, false, Math.PI / 6), darkMat);
rim.name = 'rim';
rim.position.set(0, 1.18, 0);
root.add(rim);
const deckInset = new THREE.Mesh(new THREE.CylinderGeometry(5.4, 5.4, 0.04, 6, 1, false, Math.PI / 6), deckLightMat);
deckInset.name = 'deckInset';
deckInset.position.set(0, 1.23, 0);
root.add(deckInset);
const underFrame = new THREE.Mesh(new THREE.CylinderGeometry(5.7, 5.55, 0.3, 6, 1, false, Math.PI / 6), darkMat);
underFrame.name = 'underFrame';
underFrame.position.set(0, 0.73, 0);
root.add(underFrame);
const box5 = new THREE.Mesh(boxGeo, markMat);
box5.position.set(2.4839, 1.245, 4.9883);
box5.rotation.set(0, deg(71.4706), 0);
root.add(box5);
const box6 = new THREE.Mesh(boxGeo, markMat);
box6.position.set(3.2643, 1.245, 4.3227);
box6.rotation.set(0, deg(82.0588), 0);
root.add(box6);
const box7 = new THREE.Mesh(boxGeo, markMat);
box7.position.set(3.7738, 1.245, 3.4402);
box7.rotation.set(0, deg(92.6471), 0);
root.add(box7);
const box8 = new THREE.Mesh(boxGeo, markMat);
box8.position.set(4.2432, 1.245, 2.6273);
box8.rotation.set(0, deg(103.2353), 0);
root.add(box8);
const box9 = new THREE.Mesh(boxGeo, markMat);
box9.position.set(4.7072, 1.245, 1.8236);
box9.rotation.set(0, deg(113.8235), 0);
root.add(box9);
const box10 = new THREE.Mesh(boxGeo, markMat);
box10.position.set(5.1989, 1.245, 0.9718);
box10.rotation.set(0, deg(124.4118), 0);
root.add(box10);
const box11 = new THREE.Mesh(boxGeo, markMat);
box11.position.set(5.76, 1.245, 0);
box11.rotation.set(0, deg(135), 0);
root.add(box11);
const box12 = new THREE.Mesh(boxGeo, markMat);
box12.position.set(5.1989, 1.245, -0.9718);
box12.rotation.set(0, deg(145.5882), 0);
root.add(box12);
const box13 = new THREE.Mesh(boxGeo, markMat);
box13.position.set(4.7072, 1.245, -1.8236);
box13.rotation.set(0, deg(156.1765), 0);
root.add(box13);
const box14 = new THREE.Mesh(boxGeo, markMat);
box14.position.set(4.2432, 1.245, -2.6273);
box14.rotation.set(0, deg(166.7647), 0);
root.add(box14);
const box15 = new THREE.Mesh(boxGeo, markMat);
box15.position.set(3.7738, 1.245, -3.4402);
box15.rotation.set(0, deg(177.3529), 0);
root.add(box15);
const box16 = new THREE.Mesh(boxGeo, markMat);
box16.position.set(3.2643, 1.245, -4.3227);
box16.rotation.set(0, deg(187.9412), 0);
root.add(box16);
const box17 = new THREE.Mesh(boxGeo, markMat);
box17.position.set(2.4839, 1.245, -4.9883);
box17.rotation.set(0, deg(198.5294), 0);
root.add(box17);
const box18 = new THREE.Mesh(boxGeo, markMat);
box18.position.set(1.4193, 1.245, -4.9883);
box18.rotation.set(0, deg(209.1176), 0);
root.add(box18);
const box19 = new THREE.Mesh(boxGeo, markMat);
box19.position.set(0.4622, 1.245, -4.9883);
box19.rotation.set(0, deg(219.7059), 0);
root.add(box19);
const box20 = new THREE.Mesh(boxGeo, markMat);
box20.position.set(-0.4622, 1.245, -4.9883);
box20.rotation.set(0, deg(230.2941), 0);
root.add(box20);
const box21 = new THREE.Mesh(boxGeo, markMat);
box21.position.set(-1.4193, 1.245, -4.9883);
box21.rotation.set(0, deg(240.8824), 0);
root.add(box21);
const box22 = new THREE.Mesh(boxGeo, markMat);
box22.position.set(-2.4839, 1.245, -4.9883);
box22.rotation.set(0, deg(251.4706), 0);
root.add(box22);
const box23 = new THREE.Mesh(boxGeo, markMat);
box23.position.set(-3.2643, 1.245, -4.3227);
box23.rotation.set(0, deg(262.0588), 0);
root.add(box23);
const box24 = new THREE.Mesh(boxGeo, markMat);
box24.position.set(-3.7738, 1.245, -3.4402);
box24.rotation.set(0, deg(272.6471), 0);
root.add(box24);
const box25 = new THREE.Mesh(boxGeo, markMat);
box25.position.set(-4.2432, 1.245, -2.6273);
box25.rotation.set(0, deg(283.2353), 0);
root.add(box25);
const box26 = new THREE.Mesh(boxGeo, markMat);
box26.position.set(-4.7072, 1.245, -1.8236);
box26.rotation.set(0, deg(293.8235), 0);
root.add(box26);
const box27 = new THREE.Mesh(boxGeo, markMat);
box27.position.set(-5.1989, 1.245, -0.9718);
box27.rotation.set(0, deg(304.4118), 0);
root.add(box27);
const box28 = new THREE.Mesh(boxGeo, markMat);
box28.position.set(-5.76, 1.245, 0);
box28.rotation.set(0, deg(315), 0);
root.add(box28);
const box29 = new THREE.Mesh(boxGeo, markMat);
box29.position.set(-5.1989, 1.245, 0.9718);
box29.rotation.set(0, deg(325.5882), 0);
root.add(box29);
const box30 = new THREE.Mesh(boxGeo, markMat);
box30.position.set(-4.7072, 1.245, 1.8236);
box30.rotation.set(0, deg(336.1765), 0);
root.add(box30);
const box31 = new THREE.Mesh(boxGeo, markMat);
box31.position.set(-4.2432, 1.245, 2.6273);
box31.rotation.set(0, deg(346.7647), 0);
root.add(box31);
const box32 = new THREE.Mesh(boxGeo, markMat);
box32.position.set(-3.7738, 1.245, 3.4402);
box32.rotation.set(0, deg(357.3529), 0);
root.add(box32);
const box33 = new THREE.Mesh(boxGeo, markMat);
box33.position.set(-3.2643, 1.245, 4.3227);
box33.rotation.set(0, deg(367.9412), 0);
root.add(box33);
const box34 = new THREE.Mesh(boxGeo, markMat);
box34.position.set(-2.4839, 1.245, 4.9883);
box34.rotation.set(0, deg(378.5294), 0);
root.add(box34);
const touchdownRing = new THREE.Mesh(new THREE.RingGeometry(3, 3.36, 24), markMat);
touchdownRing.name = 'touchdownRing';
touchdownRing.position.set(0, 1.275, 0);
touchdownRing.rotation.set(deg(-90), 0, 0);
root.add(touchdownRing);
const touchdownZone = new THREE.Mesh(new THREE.RingGeometry(1.2, 3.96, 24), deckMat);
touchdownZone.name = 'touchdownZone';
touchdownZone.position.set(0, 1.265, 0);
touchdownZone.rotation.set(deg(-90), 0, 0);
root.add(touchdownZone);
const markHL = new THREE.Mesh(boxGeo2, markMat);
markHL.name = 'markHL';
markHL.position.set(-0.81, 1.27, 0);
root.add(markHL);
const markHR = new THREE.Mesh(boxGeo2, markMat);
markHR.name = 'markHR';
markHR.position.set(0.81, 1.27, 0);
root.add(markHR);
const markHBar = new THREE.Mesh(new THREE.BoxGeometry(1.62, 0.03, 0.396), markMat);
markHBar.name = 'markHBar';
markHBar.position.set(0, 1.27, 0);
root.add(markHBar);
const edgeLightBase2 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase2.name = 'edgeLightBase2';
edgeLightBase2.position.set(3, 1.31, 5.1962);
root.add(edgeLightBase2);
const edgeLight2 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight2.name = 'edgeLight2';
edgeLight2.position.set(3, 1.41, 5.1962);
root.add(edgeLight2);
const edgeLightBase3 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase3.name = 'edgeLightBase3';
edgeLightBase3.position.set(4.5, 1.31, 2.5981);
root.add(edgeLightBase3);
const edgeLight3 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight3.name = 'edgeLight3';
edgeLight3.position.set(4.5, 1.41, 2.5981);
root.add(edgeLight3);
const edgeLightBase4 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase4.name = 'edgeLightBase4';
edgeLightBase4.position.set(6, 1.31, 0);
root.add(edgeLightBase4);
const edgeLight4 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight4.name = 'edgeLight4';
edgeLight4.position.set(6, 1.41, 0);
root.add(edgeLight4);
const edgeLightBase5 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase5.name = 'edgeLightBase5';
edgeLightBase5.position.set(4.5, 1.31, -2.5981);
root.add(edgeLightBase5);
const edgeLight5 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight5.name = 'edgeLight5';
edgeLight5.position.set(4.5, 1.41, -2.5981);
root.add(edgeLight5);
const edgeLightBase6 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase6.name = 'edgeLightBase6';
edgeLightBase6.position.set(3, 1.31, -5.1962);
root.add(edgeLightBase6);
const edgeLight6 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight6.name = 'edgeLight6';
edgeLight6.position.set(3, 1.41, -5.1962);
root.add(edgeLight6);
const edgeLightBase7 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase7.name = 'edgeLightBase7';
edgeLightBase7.position.set(0, 1.31, -5.1962);
root.add(edgeLightBase7);
const edgeLight7 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight7.name = 'edgeLight7';
edgeLight7.position.set(0, 1.41, -5.1962);
root.add(edgeLight7);
const edgeLightBase8 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase8.name = 'edgeLightBase8';
edgeLightBase8.position.set(-3, 1.31, -5.1962);
root.add(edgeLightBase8);
const edgeLight8 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight8.name = 'edgeLight8';
edgeLight8.position.set(-3, 1.41, -5.1962);
root.add(edgeLight8);
const edgeLightBase9 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase9.name = 'edgeLightBase9';
edgeLightBase9.position.set(-4.5, 1.31, -2.5981);
root.add(edgeLightBase9);
const edgeLight9 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight9.name = 'edgeLight9';
edgeLight9.position.set(-4.5, 1.41, -2.5981);
root.add(edgeLight9);
const edgeLightBase10 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase10.name = 'edgeLightBase10';
edgeLightBase10.position.set(-6, 1.31, 0);
root.add(edgeLightBase10);
const edgeLight10 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight10.name = 'edgeLight10';
edgeLight10.position.set(-6, 1.41, 0);
root.add(edgeLight10);
const edgeLightBase11 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase11.name = 'edgeLightBase11';
edgeLightBase11.position.set(-4.5, 1.31, 2.5981);
root.add(edgeLightBase11);
const edgeLight11 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight11.name = 'edgeLight11';
edgeLight11.position.set(-4.5, 1.41, 2.5981);
root.add(edgeLight11);
const edgeLightBase12 = new THREE.Mesh(cylinderGeo, darkMat);
edgeLightBase12.name = 'edgeLightBase12';
edgeLightBase12.position.set(-3, 1.31, 5.1962);
root.add(edgeLightBase12);
const edgeLight12 = new THREE.Mesh(cylinderGeo2, lightMat);
edgeLight12.name = 'edgeLight12';
edgeLight12.position.set(-3, 1.41, 5.1962);
root.add(edgeLight12);
const centerColumn = new THREE.Mesh(new THREE.CylinderGeometry(0.7, 0.9, 0.88, 8), shellMat);
centerColumn.name = 'centerColumn';
centerColumn.position.set(0, 0.44, 0);
root.add(centerColumn);
const leg1 = new THREE.Mesh(cylinderGeo3, shellMat);
leg1.name = 'leg1';
leg1.position.set(2.1, 0.44, 3.6373);
root.add(leg1);
const footing1 = new THREE.Mesh(boxGeo3, concreteMat);
footing1.name = 'footing1';
footing1.position.set(2.1, 0.06, 3.6373);
footing1.rotation.set(0, deg(30), 0);
root.add(footing1);
const cylinder65 = new THREE.Mesh(cylinderGeo4, metalMat);
cylinder65.position.set(1.2185, 0.49, 2.1105);
cylinder65.rotation.set(deg(64.606), deg(-20.1791), deg(-31.4374));
root.add(cylinder65);
const leg2 = new THREE.Mesh(cylinderGeo3, shellMat);
leg2.name = 'leg2';
leg2.position.set(4.2, 0.44, 0);
root.add(leg2);
const footing2 = new THREE.Mesh(boxGeo3, concreteMat);
footing2.name = 'footing2';
footing2.position.set(4.2, 0.06, 0);
footing2.rotation.set(0, deg(90), 0);
root.add(footing2);
const cylinder68 = new THREE.Mesh(cylinderGeo4, metalMat);
cylinder68.position.set(2.437, 0.49, 0);
cylinder68.rotation.set(0, 0, deg(-78.2667));
root.add(cylinder68);
const leg3 = new THREE.Mesh(cylinderGeo3, shellMat);
leg3.name = 'leg3';
leg3.position.set(2.1, 0.44, -3.6373);
root.add(leg3);
const footing3 = new THREE.Mesh(boxGeo3, concreteMat);
footing3.name = 'footing3';
footing3.position.set(2.1, 0.06, -3.6373);
footing3.rotation.set(0, deg(150), 0);
root.add(footing3);
const cylinder71 = new THREE.Mesh(cylinderGeo4, metalMat);
cylinder71.position.set(1.2185, 0.49, -2.1105);
cylinder71.rotation.set(deg(-64.606), deg(20.1791), deg(-31.4374));
root.add(cylinder71);
const leg4 = new THREE.Mesh(cylinderGeo3, shellMat);
leg4.name = 'leg4';
leg4.position.set(-2.1, 0.44, -3.6373);
root.add(leg4);
const footing4 = new THREE.Mesh(boxGeo3, concreteMat);
footing4.name = 'footing4';
footing4.position.set(-2.1, 0.06, -3.6373);
footing4.rotation.set(0, deg(210), 0);
root.add(footing4);
const cylinder74 = new THREE.Mesh(cylinderGeo4, metalMat);
cylinder74.position.set(-1.2185, 0.49, -2.1105);
cylinder74.rotation.set(deg(-64.606), deg(-20.1791), deg(31.4374));
root.add(cylinder74);
const leg5 = new THREE.Mesh(cylinderGeo3, shellMat);
leg5.name = 'leg5';
leg5.position.set(-4.2, 0.44, 0);
root.add(leg5);
const footing5 = new THREE.Mesh(boxGeo3, concreteMat);
footing5.name = 'footing5';
footing5.position.set(-4.2, 0.06, 0);
footing5.rotation.set(0, deg(270), 0);
root.add(footing5);
const cylinder77 = new THREE.Mesh(cylinderGeo4, metalMat);
cylinder77.position.set(-2.437, 0.49, 0);
cylinder77.rotation.set(0, 0, deg(78.2667));
root.add(cylinder77);
const leg6 = new THREE.Mesh(cylinderGeo3, shellMat);
leg6.name = 'leg6';
leg6.position.set(-2.1, 0.44, 3.6373);
root.add(leg6);
const footing6 = new THREE.Mesh(boxGeo3, concreteMat);
footing6.name = 'footing6';
footing6.position.set(-2.1, 0.06, 3.6373);
footing6.rotation.set(0, deg(330), 0);
root.add(footing6);
const cylinder80 = new THREE.Mesh(cylinderGeo4, metalMat);
cylinder80.position.set(-1.2185, 0.49, 2.1105);
cylinder80.rotation.set(deg(64.606), deg(20.1791), deg(31.4374));
root.add(cylinder80);
const ramp = new THREE.Mesh(new THREE.BoxGeometry(3.2, 0.14, 4.3681), deckMat);
ramp.name = 'ramp';
ramp.position.set(0, 0.67, 7.2962);
ramp.rotation.set(deg(15.9454), 0, 0);
root.add(ramp);
const rampEdgeL = new THREE.Mesh(boxGeo4, markMat);
rampEdgeL.name = 'rampEdgeL';
rampEdgeL.position.set(-1.65, 0.72, 7.2962);
rampEdgeL.rotation.set(deg(15.9454), 0, 0);
root.add(rampEdgeL);
const box83 = new THREE.Mesh(boxGeo5, metalMat);
box83.position.set(-1.65, 1.7686, 5.4462);
root.add(box83);
const box84 = new THREE.Mesh(boxGeo5, metalMat);
box84.position.set(-1.65, 1.2686, 7.1962);
root.add(box84);
const box85 = new THREE.Mesh(boxGeo5, metalMat);
box85.position.set(-1.65, 0.7686, 8.9462);
root.add(box85);
const railL = new THREE.Mesh(cylinderGeo5, metalMat);
railL.name = 'railL';
railL.position.set(-1.65, 1.7386, 7.1962);
railL.rotation.set(deg(105.9454), 0, 0);
root.add(railL);
const guideLightL1 = new THREE.Mesh(boxGeo6, lightMat);
guideLightL1.name = 'guideLightL1';
guideLightL1.position.set(-1.35, 1.15, 5.8962);
guideLightL1.rotation.set(deg(15.9454), 0, 0);
root.add(guideLightL1);
const guideLightL2 = new THREE.Mesh(boxGeo6, lightMat);
guideLightL2.name = 'guideLightL2';
guideLightL2.position.set(-1.35, 0.7929, 7.1462);
guideLightL2.rotation.set(deg(15.9454), 0, 0);
root.add(guideLightL2);
const guideLightL3 = new THREE.Mesh(boxGeo6, lightMat);
guideLightL3.name = 'guideLightL3';
guideLightL3.position.set(-1.35, 0.4357, 8.3962);
guideLightL3.rotation.set(deg(15.9454), 0, 0);
root.add(guideLightL3);
const rampEdgeR = new THREE.Mesh(boxGeo4, markMat);
rampEdgeR.name = 'rampEdgeR';
rampEdgeR.position.set(1.65, 0.72, 7.2962);
rampEdgeR.rotation.set(deg(15.9454), 0, 0);
root.add(rampEdgeR);
const box91 = new THREE.Mesh(boxGeo5, metalMat);
box91.position.set(1.65, 1.7686, 5.4462);
root.add(box91);
const box92 = new THREE.Mesh(boxGeo5, metalMat);
box92.position.set(1.65, 1.2686, 7.1962);
root.add(box92);
const box93 = new THREE.Mesh(boxGeo5, metalMat);
box93.position.set(1.65, 0.7686, 8.9462);
root.add(box93);
const railR = new THREE.Mesh(cylinderGeo5, metalMat);
railR.name = 'railR';
railR.position.set(1.65, 1.7386, 7.1962);
railR.rotation.set(deg(105.9454), 0, 0);
root.add(railR);
const guideLightR1 = new THREE.Mesh(boxGeo6, lightMat);
guideLightR1.name = 'guideLightR1';
guideLightR1.position.set(1.35, 1.15, 5.8962);
guideLightR1.rotation.set(deg(15.9454), 0, 0);
root.add(guideLightR1);
const guideLightR2 = new THREE.Mesh(boxGeo6, lightMat);
guideLightR2.name = 'guideLightR2';
guideLightR2.position.set(1.35, 0.7929, 7.1462);
guideLightR2.rotation.set(deg(15.9454), 0, 0);
root.add(guideLightR2);
const guideLightR3 = new THREE.Mesh(boxGeo6, lightMat);
guideLightR3.name = 'guideLightR3';
guideLightR3.position.set(1.35, 0.4357, 8.3962);
guideLightR3.rotation.set(deg(15.9454), 0, 0);
root.add(guideLightR3);
const lightMast = new THREE.Mesh(new THREE.CylinderGeometry(0.08, 0.12, 4.2, 6), metalMat);
lightMast.name = 'lightMast';
lightMast.position.set(4.2036, 3.2, -3.5272);
root.add(lightMast);
const floodlight = new THREE.Group();
floodlight.name = 'floodlight';
floodlight.position.set(4.2036, 5.35, -3.5272);
floodlight.rotation.set(deg(31.7652), deg(-45.3769), deg(13.5674));
root.add(floodlight);
const lampHousing = new THREE.Mesh(new THREE.BoxGeometry(0.7, 0.32, 0.22), darkMat);
lampHousing.name = 'lampHousing';
floodlight.add(lampHousing);
const lampFace = new THREE.Mesh(new THREE.BoxGeometry(0.6, 0.24, 0.02), warmMat);
lampFace.name = 'lampFace';
lampFace.position.set(0, 0, 0.12);
floodlight.add(lampFace);
const mastBeacon = new THREE.Mesh(new THREE.SphereGeometry(0.07, 6, 4), lightMat);
mastBeacon.name = 'mastBeacon';
mastBeacon.position.set(4.2036, 5.58, -3.5272);
root.add(mastBeacon);
const refuelTerminal = new THREE.Mesh(new THREE.BoxGeometry(0.9, 1.1, 0.6), shellMat);
refuelTerminal.name = 'refuelTerminal';
refuelTerminal.position.set(-3.5891, 1.8, -2.5131);
refuelTerminal.rotation.set(0, deg(55), 0);
root.add(refuelTerminal);
const terminalScreen = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.25, 0.02), lightMat);
terminalScreen.name = 'terminalScreen';
terminalScreen.position.set(-3.3351, 2.05, -2.3353);
terminalScreen.rotation.set(0, deg(55), 0);
root.add(terminalScreen);
const fuelHose = new THREE.Mesh(tube([[-3.3891, 1.6, -2.3131], [-2.7891, 1.28, -1.6131], [-2.1891, 1.28, -1.3131]], 0.06, 8, 5), darkMat);
fuelHose.name = 'fuelHose';
root.add(fuelHose);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createLandingPad;
Bewertungen & Kommentare
—
Noch keine Bewertungen — gib die erste ab.
5
0
4
0
3
0
2
0
1
0
Melde dich an, um zu bewerten und zu kommentieren.
0 Kommentare
Noch keine Kommentare. Erzähl, wie du dieses Modell genutzt hast oder was besser sein könnte.
Ähnliche Modelle
Gleiche Kategorie oder ähnliche Tags









