1308 Tris2,70 × 9,25 × 3,30 m
Im Code verwenden
Im Editor remixenantenna-tower.js · 487 Zeilen
Eigenständiges ES-Modul — hängt nur von three ab. Ruf die Factory auf und füge die Gruppe deiner Szene hinzu.
/**
* Antenna Tower — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 1,308 · Size (W × H × D): 2.70 × 9.25 × 3.30 m
*
* Usage:
* import { createAntennaTower } from './antenna-tower.js';
*
* const model = createAntennaTower();
* model.position.set(0, 0, 0);
* scene.add(model);
*/
import * as THREE from 'three';
const deg = THREE.MathUtils.degToRad;
// Revolve a 2D profile [[radius, y], ...] around the Y axis.
function lathe(points, segments, phiStart = 0, phiLength = Math.PI * 2) {
return new THREE.LatheGeometry(points.map(([x, y]) => new THREE.Vector2(x, y)), segments, phiStart, phiLength);
}
// 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 createAntennaTower() {
const root = new THREE.Group();
root.name = 'AntennaTower';
// Materials
const steelMat = new THREE.MeshStandardMaterial({ name: 'steel', color: 0x8d959f, roughness: 0.45, metalness: 0.6, flatShading: true });
const whiteMat = new THREE.MeshStandardMaterial({ name: 'white', color: 0xe4e8ec, roughness: 0.5, metalness: 0.15, flatShading: true });
const dishMat = new THREE.MeshStandardMaterial({ name: 'dish', color: 0xeef0f3, roughness: 0.45, metalness: 0.1, flatShading: true, side: THREE.DoubleSide });
const darkMat = new THREE.MeshStandardMaterial({ name: 'dark', color: 0x2f343c, roughness: 0.6, metalness: 0.35, flatShading: true });
const accentMat = new THREE.MeshStandardMaterial({ name: 'accent', color: 0xe0683a, roughness: 0.5, metalness: 0.2, flatShading: true });
const concreteMat = new THREE.MeshStandardMaterial({ name: 'concrete', color: 0xa9a49b, roughness: 0.95, flatShading: true });
const glowMat = new THREE.MeshStandardMaterial({ name: 'glow', color: 0x46d2ff, roughness: 0.4, emissive: 0x38c8ff, emissiveIntensity: 1.1, flatShading: true });
const beaconMat = new THREE.MeshStandardMaterial({ name: 'beacon', color: 0xff2a1f, roughness: 0.4, emissive: 0xff2a1f, emissiveIntensity: 1.5, flatShading: true });
const haloMat = new THREE.MeshStandardMaterial({ name: 'halo', color: 0xff2a1f, roughness: 0.3, emissive: 0xff2a1f, emissiveIntensity: 0.8, transparent: true, opacity: 0.3, flatShading: true });
// Shared geometries
const boxGeo = new THREE.BoxGeometry(0.36, 0.14, 0.36);
const cylinderGeo = new THREE.CylinderGeometry(0.045, 0.065, 6.5074, 5);
const cylinderGeo2 = new THREE.CylinderGeometry(0.024, 0.024, 2.7464, 3, 1, true);
const cylinderGeo3 = new THREE.CylinderGeometry(0.024, 0.024, 2.5155, 3, 1, true);
const cylinderGeo4 = new THREE.CylinderGeometry(0.028, 0.028, 1.4933, 3, 1, true);
const cylinderGeo5 = new THREE.CylinderGeometry(0.024, 0.024, 2.3333, 3, 1, true);
const cylinderGeo6 = new THREE.CylinderGeometry(0.028, 0.028, 1.0867, 3, 1, true);
const boxGeo2 = new THREE.BoxGeometry(1.58, 0.035, 0.035);
const boxGeo3 = new THREE.BoxGeometry(1.58, 0.03, 0.03);
const boxGeo4 = new THREE.BoxGeometry(0.035, 0.6, 0.035);
const boxGeo5 = new THREE.BoxGeometry(0.24, 1.1, 0.09);
const boxGeo6 = new THREE.BoxGeometry(0.08, 0.2, 0.08);
const cylinderGeo7 = new THREE.CylinderGeometry(0.11, 0.11, 0.12, 6);
const cylinderGeo8 = new THREE.CylinderGeometry(0.012, 0.012, 0.9, 4);
const octahedronGeo = new THREE.OctahedronGeometry(0.07, 0);
const cylinderGeo9 = new THREE.CylinderGeometry(0.04, 0.04, 0.38, 5);
const latheGeo = lathe([[0.001, 0], [0.1667, 0.0174], [0.3333, 0.0694], [0.5, 0.1563]], 8);
const torusGeo = new THREE.TorusGeometry(0.5, 0.025, 3, 8);
const cylinderGeo10 = new THREE.CylinderGeometry(0.1, 0.14, 0.16, 6);
const cylinderGeo11 = new THREE.CylinderGeometry(0.012, 0.012, 0.4, 3);
const cylinderGeo12 = new THREE.CylinderGeometry(0.04, 0.06, 0.08, 5);
const boxGeo7 = new THREE.BoxGeometry(0.05, 0.05, 0.02);
// Parts
const pad = new THREE.Mesh(new THREE.BoxGeometry(2.7, 0.12, 3.3), concreteMat);
pad.name = 'pad';
pad.position.set(0, 0.06, 0.3);
root.add(pad);
const footing1 = new THREE.Mesh(boxGeo, concreteMat);
footing1.name = 'footing1';
footing1.position.set(0.95, 0.18, 0.95);
root.add(footing1);
const footing2 = new THREE.Mesh(boxGeo, concreteMat);
footing2.name = 'footing2';
footing2.position.set(-0.95, 0.18, 0.95);
root.add(footing2);
const footing3 = new THREE.Mesh(boxGeo, concreteMat);
footing3.name = 'footing3';
footing3.position.set(-0.95, 0.18, -0.95);
root.add(footing3);
const footing4 = new THREE.Mesh(boxGeo, concreteMat);
footing4.name = 'footing4';
footing4.position.set(0.95, 0.18, -0.95);
root.add(footing4);
const lattice = new THREE.Group();
lattice.name = 'lattice';
root.add(lattice);
const leg1 = new THREE.Mesh(cylinderGeo, steelMat);
leg1.name = 'leg1';
leg1.position.set(0.645, 3.475, 0.645);
leg1.rotation.set(deg(-5.3788), deg(-0.2528), deg(5.3788));
lattice.add(leg1);
const leg2 = new THREE.Mesh(cylinderGeo, steelMat);
leg2.name = 'leg2';
leg2.position.set(-0.645, 3.475, 0.645);
leg2.rotation.set(deg(-5.3788), deg(0.2528), deg(-5.3788));
lattice.add(leg2);
const leg3 = new THREE.Mesh(cylinderGeo, steelMat);
leg3.name = 'leg3';
leg3.position.set(-0.645, 3.475, -0.645);
leg3.rotation.set(deg(5.3788), deg(-0.2528), deg(-5.3788));
lattice.add(leg3);
const leg4 = new THREE.Mesh(cylinderGeo, steelMat);
leg4.name = 'leg4';
leg4.position.set(0.645, 3.475, -0.645);
leg4.rotation.set(deg(5.3788), deg(0.2528), deg(5.3788));
lattice.add(leg4);
const cylinder11 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder11.position.set(0.1017, 1.325, 0.8483);
cylinder11.rotation.set(deg(-4.2473), deg(-1.4701), deg(38.1695));
lattice.add(cylinder11);
const cylinder12 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder12.position.set(-0.1017, 1.325, 0.8483);
cylinder12.rotation.set(deg(-4.2473), deg(1.4701), deg(-38.1695));
lattice.add(cylinder12);
const cylinder13 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder13.position.set(-0.8483, 1.325, 0.1017);
cylinder13.rotation.set(deg(-38.1695), deg(1.4701), deg(-4.2473));
lattice.add(cylinder13);
const cylinder14 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder14.position.set(-0.8483, 1.325, -0.1017);
cylinder14.rotation.set(deg(38.1695), deg(-1.4701), deg(-4.2473));
lattice.add(cylinder14);
const cylinder15 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder15.position.set(-0.1017, 1.325, -0.8483);
cylinder15.rotation.set(deg(4.2473), deg(-1.4701), deg(-38.1695));
lattice.add(cylinder15);
const cylinder16 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder16.position.set(0.1017, 1.325, -0.8483);
cylinder16.rotation.set(deg(4.2473), deg(1.4701), deg(38.1695));
lattice.add(cylinder16);
const cylinder17 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder17.position.set(0.8483, 1.325, -0.1017);
cylinder17.rotation.set(deg(38.1695), deg(1.4701), deg(4.2473));
lattice.add(cylinder17);
const cylinder18 = new THREE.Mesh(cylinderGeo2, steelMat);
cylinder18.position.set(0.8483, 1.325, 0.1017);
cylinder18.rotation.set(deg(-38.1695), deg(-1.4701), deg(4.2473));
lattice.add(cylinder18);
const cylinder19 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder19.position.set(0.1017, 3.475, 0.645);
cylinder19.rotation.set(deg(-4.6375), deg(-1.2806), deg(30.8599));
lattice.add(cylinder19);
const cylinder20 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder20.position.set(-0.1017, 3.475, 0.645);
cylinder20.rotation.set(deg(-4.6375), deg(1.2806), deg(-30.8599));
lattice.add(cylinder20);
const cylinder21 = new THREE.Mesh(cylinderGeo4, steelMat);
cylinder21.position.set(0, 2.4, 0.7467);
cylinder21.rotation.set(0, 0, deg(90));
lattice.add(cylinder21);
const cylinder22 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder22.position.set(-0.645, 3.475, 0.1017);
cylinder22.rotation.set(deg(-30.8599), deg(1.2806), deg(-4.6375));
lattice.add(cylinder22);
const cylinder23 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder23.position.set(-0.645, 3.475, -0.1017);
cylinder23.rotation.set(deg(30.8599), deg(-1.2806), deg(-4.6375));
lattice.add(cylinder23);
const cylinder24 = new THREE.Mesh(cylinderGeo4, steelMat);
cylinder24.position.set(-0.7467, 2.4, 0);
cylinder24.rotation.set(deg(-90), 0, 0);
lattice.add(cylinder24);
const cylinder25 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder25.position.set(-0.1017, 3.475, -0.645);
cylinder25.rotation.set(deg(4.6375), deg(-1.2806), deg(-30.8599));
lattice.add(cylinder25);
const cylinder26 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder26.position.set(0.1017, 3.475, -0.645);
cylinder26.rotation.set(deg(4.6375), deg(1.2806), deg(30.8599));
lattice.add(cylinder26);
const cylinder27 = new THREE.Mesh(cylinderGeo4, steelMat);
cylinder27.position.set(0, 2.4, -0.7467);
cylinder27.rotation.set(0, 0, deg(-90));
lattice.add(cylinder27);
const cylinder28 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder28.position.set(0.645, 3.475, -0.1017);
cylinder28.rotation.set(deg(30.8599), deg(1.2806), deg(4.6375));
lattice.add(cylinder28);
const cylinder29 = new THREE.Mesh(cylinderGeo3, steelMat);
cylinder29.position.set(0.645, 3.475, 0.1017);
cylinder29.rotation.set(deg(-30.8599), deg(-1.2806), deg(4.6375));
lattice.add(cylinder29);
const cylinder30 = new THREE.Mesh(cylinderGeo4, steelMat);
cylinder30.position.set(0.7467, 2.4, 0);
cylinder30.rotation.set(deg(90), 0, 0);
lattice.add(cylinder30);
const cylinder31 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder31.position.set(0.1017, 5.625, 0.4417);
cylinder31.rotation.set(deg(-5.0001), deg(-0.9838), deg(22.2494));
lattice.add(cylinder31);
const cylinder32 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder32.position.set(-0.1017, 5.625, 0.4417);
cylinder32.rotation.set(deg(-5.0001), deg(0.9838), deg(-22.2494));
lattice.add(cylinder32);
const cylinder33 = new THREE.Mesh(cylinderGeo6, steelMat);
cylinder33.position.set(0, 4.55, 0.5433);
cylinder33.rotation.set(0, 0, deg(90));
lattice.add(cylinder33);
const cylinder34 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder34.position.set(-0.4417, 5.625, 0.1017);
cylinder34.rotation.set(deg(-22.2494), deg(0.9838), deg(-5.0001));
lattice.add(cylinder34);
const cylinder35 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder35.position.set(-0.4417, 5.625, -0.1017);
cylinder35.rotation.set(deg(22.2494), deg(-0.9838), deg(-5.0001));
lattice.add(cylinder35);
const cylinder36 = new THREE.Mesh(cylinderGeo6, steelMat);
cylinder36.position.set(-0.5433, 4.55, 0);
cylinder36.rotation.set(deg(-90), 0, 0);
lattice.add(cylinder36);
const cylinder37 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder37.position.set(-0.1017, 5.625, -0.4417);
cylinder37.rotation.set(deg(5.0001), deg(-0.9838), deg(-22.2494));
lattice.add(cylinder37);
const cylinder38 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder38.position.set(0.1017, 5.625, -0.4417);
cylinder38.rotation.set(deg(5.0001), deg(0.9838), deg(22.2494));
lattice.add(cylinder38);
const cylinder39 = new THREE.Mesh(cylinderGeo6, steelMat);
cylinder39.position.set(0, 4.55, -0.5433);
cylinder39.rotation.set(0, 0, deg(-90));
lattice.add(cylinder39);
const cylinder40 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder40.position.set(0.4417, 5.625, -0.1017);
cylinder40.rotation.set(deg(22.2494), deg(0.9838), deg(5.0001));
lattice.add(cylinder40);
const cylinder41 = new THREE.Mesh(cylinderGeo5, steelMat);
cylinder41.position.set(0.4417, 5.625, 0.1017);
cylinder41.rotation.set(deg(-22.2494), deg(-0.9838), deg(5.0001));
lattice.add(cylinder41);
const cylinder42 = new THREE.Mesh(cylinderGeo6, steelMat);
cylinder42.position.set(0.5433, 4.55, 0);
cylinder42.rotation.set(deg(90), 0, 0);
lattice.add(cylinder42);
const cableRun = new THREE.Mesh(tube([[-0.7922, 0.65, 0.8622], [-0.24, 6.7, 0.29]], 0.04, 1, 4), darkMat);
cableRun.name = 'cableRun';
lattice.add(cableRun);
const platform = new THREE.Mesh(new THREE.BoxGeometry(1.58, 0.08, 1.58), steelMat);
platform.name = 'platform';
platform.position.set(0, 6.74, 0);
root.add(platform);
const platformEdge = new THREE.Mesh(new THREE.BoxGeometry(1.64, 0.05, 1.64), accentMat);
platformEdge.name = 'platformEdge';
platformEdge.position.set(0, 6.695, 0);
root.add(platformEdge);
const rail1 = new THREE.Group();
rail1.name = 'rail1';
root.add(rail1);
const box47 = new THREE.Mesh(boxGeo2, whiteMat);
box47.position.set(0, 7.32, 0.79);
rail1.add(box47);
const box48 = new THREE.Mesh(boxGeo3, whiteMat);
box48.position.set(0, 7.04, 0.79);
rail1.add(box48);
const box49 = new THREE.Mesh(boxGeo4, whiteMat);
box49.position.set(0.79, 7.08, 0.79);
rail1.add(box49);
const rail2 = new THREE.Group();
rail2.name = 'rail2';
rail2.rotation.set(0, deg(90), 0);
root.add(rail2);
const box51 = new THREE.Mesh(boxGeo2, whiteMat);
box51.position.set(0, 7.32, 0.79);
rail2.add(box51);
const box52 = new THREE.Mesh(boxGeo3, whiteMat);
box52.position.set(0, 7.04, 0.79);
rail2.add(box52);
const box53 = new THREE.Mesh(boxGeo4, whiteMat);
box53.position.set(0.79, 7.08, 0.79);
rail2.add(box53);
const rail3 = new THREE.Group();
rail3.name = 'rail3';
rail3.rotation.set(0, deg(180), 0);
root.add(rail3);
const box55 = new THREE.Mesh(boxGeo2, whiteMat);
box55.position.set(0, 7.32, 0.79);
rail3.add(box55);
const box56 = new THREE.Mesh(boxGeo3, whiteMat);
box56.position.set(0, 7.04, 0.79);
rail3.add(box56);
const box57 = new THREE.Mesh(boxGeo4, whiteMat);
box57.position.set(0.79, 7.08, 0.79);
rail3.add(box57);
const rail4 = new THREE.Group();
rail4.name = 'rail4';
rail4.rotation.set(0, deg(270), 0);
root.add(rail4);
const box59 = new THREE.Mesh(boxGeo2, whiteMat);
box59.position.set(0, 7.32, 0.79);
rail4.add(box59);
const box60 = new THREE.Mesh(boxGeo3, whiteMat);
box60.position.set(0, 7.04, 0.79);
rail4.add(box60);
const box61 = new THREE.Mesh(boxGeo4, whiteMat);
box61.position.set(0.79, 7.08, 0.79);
rail4.add(box61);
const panelAntenna1 = new THREE.Mesh(boxGeo5, whiteMat);
panelAntenna1.name = 'panelAntenna1';
panelAntenna1.position.set(0.335, 7.45, 0.5802);
panelAntenna1.rotation.set(0, deg(30), 0);
root.add(panelAntenna1);
const box63 = new THREE.Mesh(boxGeo6, darkMat);
box63.position.set(0.295, 6.88, 0.511);
box63.rotation.set(0, deg(30), 0);
root.add(box63);
const panelAntenna2 = new THREE.Mesh(boxGeo5, whiteMat);
panelAntenna2.name = 'panelAntenna2';
panelAntenna2.position.set(0.335, 7.45, -0.5802);
panelAntenna2.rotation.set(0, deg(150), 0);
root.add(panelAntenna2);
const box65 = new THREE.Mesh(boxGeo6, darkMat);
box65.position.set(0.295, 6.88, -0.511);
box65.rotation.set(0, deg(150), 0);
root.add(box65);
const panelAntenna3 = new THREE.Mesh(boxGeo5, whiteMat);
panelAntenna3.name = 'panelAntenna3';
panelAntenna3.position.set(-0.67, 7.45, 0);
panelAntenna3.rotation.set(0, deg(270), 0);
root.add(panelAntenna3);
const box67 = new THREE.Mesh(boxGeo6, darkMat);
box67.position.set(-0.59, 6.88, 0);
box67.rotation.set(0, deg(270), 0);
root.add(box67);
const relayBox = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.42, 0.4), darkMat);
relayBox.name = 'relayBox';
relayBox.position.set(-0.12, 6.99, -0.15);
root.add(relayBox);
const relayLight = new THREE.Mesh(new THREE.BoxGeometry(0.2, 0.05, 0.02), glowMat);
relayLight.name = 'relayLight';
relayLight.position.set(-0.12, 7.06, 0.06);
root.add(relayLight);
const mast = new THREE.Mesh(new THREE.CylinderGeometry(0.07, 0.1, 2, 6), whiteMat);
mast.name = 'mast';
mast.position.set(0, 7.78, 0);
root.add(mast);
const cylinder71 = new THREE.Mesh(cylinderGeo7, accentMat);
cylinder71.position.set(0, 7.36, 0);
root.add(cylinder71);
const cylinder72 = new THREE.Mesh(cylinderGeo7, accentMat);
cylinder72.position.set(0, 8.06, 0);
root.add(cylinder72);
const crossArm = new THREE.Mesh(new THREE.BoxGeometry(0.9, 0.035, 0.035), steelMat);
crossArm.name = 'crossArm';
crossArm.position.set(0, 8.35, 0);
crossArm.rotation.set(0, deg(35), 0);
root.add(crossArm);
const whipL = new THREE.Mesh(cylinderGeo8, steelMat);
whipL.name = 'whipL';
whipL.position.set(-0.3277, 8.8, 0.2294);
root.add(whipL);
const whipR = new THREE.Mesh(cylinderGeo8, steelMat);
whipR.name = 'whipR';
whipR.position.set(0.3277, 8.8, -0.2294);
root.add(whipR);
const beaconBase = new THREE.Mesh(new THREE.CylinderGeometry(0.09, 0.09, 0.08, 8), darkMat);
beaconBase.name = 'beaconBase';
beaconBase.position.set(0, 8.82, 0);
root.add(beaconBase);
const beacon = new THREE.Mesh(new THREE.SphereGeometry(0.11, 6, 4), beaconMat);
beacon.name = 'beacon';
beacon.position.set(0, 8.92, 0);
root.add(beacon);
const beaconHalo = new THREE.Mesh(new THREE.SphereGeometry(0.2, 6, 4), haloMat);
beaconHalo.name = 'beaconHalo';
beaconHalo.position.set(0, 8.92, 0);
root.add(beaconHalo);
const midBeacon1 = new THREE.Mesh(octahedronGeo, beaconMat);
midBeacon1.name = 'midBeacon1';
midBeacon1.position.set(0.6637, 3.7975, 0.6637);
root.add(midBeacon1);
const midBeacon2 = new THREE.Mesh(octahedronGeo, beaconMat);
midBeacon2.name = 'midBeacon2';
midBeacon2.position.set(-0.6637, 3.7975, 0.6637);
root.add(midBeacon2);
const midBeacon3 = new THREE.Mesh(octahedronGeo, beaconMat);
midBeacon3.name = 'midBeacon3';
midBeacon3.position.set(-0.6637, 3.7975, -0.6637);
root.add(midBeacon3);
const midBeacon4 = new THREE.Mesh(octahedronGeo, beaconMat);
midBeacon4.name = 'midBeacon4';
midBeacon4.position.set(0.6637, 3.7975, -0.6637);
root.add(midBeacon4);
const dishBracket1 = new THREE.Mesh(cylinderGeo9, steelMat);
dishBracket1.name = 'dishBracket1';
dishBracket1.position.set(0.7262, 4.5213, 0.0626);
dishBracket1.rotation.set(deg(20.1221), deg(-16.7578), deg(-79.3958));
root.add(dishBracket1);
const dish1 = new THREE.Group();
dish1.name = 'dish1';
dish1.position.set(0.905, 4.5356, 0.1252);
dish1.rotation.set(deg(-12.875), deg(70.2505), deg(9.0765));
root.add(dish1);
const reflector = new THREE.Mesh(latheGeo, dishMat);
reflector.name = 'reflector';
reflector.rotation.set(deg(90), 0, 0);
dish1.add(reflector);
const rim = new THREE.Mesh(torusGeo, accentMat);
rim.name = 'rim';
rim.position.set(0, 0, 0.1563);
dish1.add(rim);
const hub = new THREE.Mesh(cylinderGeo10, steelMat);
hub.name = 'hub';
hub.position.set(0, 0, -0.06);
hub.rotation.set(deg(90), 0, 0);
dish1.add(hub);
const feedStrut = new THREE.Mesh(cylinderGeo11, steelMat);
feedStrut.name = 'feedStrut';
feedStrut.position.set(0, 0, 0.2);
feedStrut.rotation.set(deg(90), 0, 0);
dish1.add(feedStrut);
const feed = new THREE.Mesh(cylinderGeo12, darkMat);
feed.name = 'feed';
feed.position.set(0, 0, 0.4);
feed.rotation.set(deg(90), 0, 0);
dish1.add(feed);
const dishBracket2 = new THREE.Mesh(cylinderGeo9, steelMat);
dishBracket2.name = 'dishBracket2';
dishBracket2.position.set(-0.046, 3.3552, 0.8413);
dishBracket2.rotation.set(deg(83.8493), deg(12.9379), deg(14.3924));
root.add(dishBracket2);
const dish2 = new THREE.Group();
dish2.name = 'dish2';
dish2.position.set(-0.0921, 3.3644, 1.0254);
dish2.rotation.set(deg(-2.8624), deg(-14.0194), deg(-0.352));
root.add(dish2);
const reflector2 = new THREE.Mesh(latheGeo, dishMat);
reflector2.name = 'reflector';
reflector2.rotation.set(deg(90), 0, 0);
dish2.add(reflector2);
const rim2 = new THREE.Mesh(torusGeo, accentMat);
rim2.name = 'rim';
rim2.position.set(0, 0, 0.1563);
dish2.add(rim2);
const hub2 = new THREE.Mesh(cylinderGeo10, steelMat);
hub2.name = 'hub';
hub2.position.set(0, 0, -0.06);
hub2.rotation.set(deg(90), 0, 0);
dish2.add(hub2);
const feedStrut2 = new THREE.Mesh(cylinderGeo11, steelMat);
feedStrut2.name = 'feedStrut';
feedStrut2.position.set(0, 0, 0.2);
feedStrut2.rotation.set(deg(90), 0, 0);
dish2.add(feedStrut2);
const feed2 = new THREE.Mesh(cylinderGeo12, darkMat);
feed2.name = 'feed';
feed2.position.set(0, 0, 0.4);
feed2.rotation.set(deg(90), 0, 0);
dish2.add(feed2);
const cabinet = new THREE.Mesh(new THREE.BoxGeometry(0.7, 0.95, 0.42), whiteMat);
cabinet.name = 'cabinet';
cabinet.position.set(0.15, 0.595, 1.4);
root.add(cabinet);
const cabinetDoor = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.6, 0.02), darkMat);
cabinetDoor.name = 'cabinetDoor';
cabinetDoor.position.set(0.15, 0.6, 1.615);
root.add(cabinetDoor);
const cabinetLed1 = new THREE.Mesh(boxGeo7, glowMat);
cabinetLed1.name = 'cabinetLed1';
cabinetLed1.position.set(0, 0.98, 1.62);
root.add(cabinetLed1);
const cabinetLed2 = new THREE.Mesh(boxGeo7, glowMat);
cabinetLed2.name = 'cabinetLed2';
cabinetLed2.position.set(0.08, 0.98, 1.62);
root.add(cabinetLed2);
const cabinetLed3 = new THREE.Mesh(boxGeo7, beaconMat);
cabinetLed3.name = 'cabinetLed3';
cabinetLed3.position.set(0.16, 0.98, 1.62);
root.add(cabinetLed3);
const feedCable = new THREE.Mesh(tube([[-0.05, 1, 1.3], [-0.45, 0.95, 1.08], [-0.7922, 0.65, 0.8622]], 0.04, 6, 4), darkMat);
feedCable.name = 'feedCable';
root.add(feedCable);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createAntennaTower;
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









