Codels
1892 Tris12,3 × 5,65 × 14,8 m

Im Code verwenden

Im Editor remixen
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