20 lines
1.5 KiB
TypeScript
20 lines
1.5 KiB
TypeScript
import {readFileSync,writeFileSync} from 'node:fs';
|
|
import {createTerrainGeometry,terrainGeometryHeightAt} from '../src/scene/terrainGeometry.ts';
|
|
import {applySummitTerrain} from '../src/scene/summitTerrain.ts';
|
|
import {structurePosition} from '../src/scene/structures.ts';
|
|
import {STRUCTURES} from '../src/constants/structures.ts';
|
|
import {SUMMIT_TERRAIN} from '../src/constants/summitTerrain.ts';
|
|
const meta=JSON.parse(readFileSync('public/terrain/gwanaksan.json','utf8'));
|
|
const bytes=readFileSync('public/terrain/gwanaksan.f32');
|
|
const terrain=createTerrainGeometry(meta,new Float32Array(bytes.buffer,bytes.byteOffset,bytes.byteLength/4),true);
|
|
applySummitTerrain(terrain,meta);
|
|
const radar=structurePosition(STRUCTURES.radar.latitude,STRUCTURES.radar.longitude,meta.origin);
|
|
radar.y=Math.max(...[-4,0,4].flatMap(x=>[-4,0,4].map(z=>terrainGeometryHeightAt(terrain,radar.x+x,radar.z+z))))+.2;
|
|
const eye=structurePosition(SUMMIT_TERRAIN.start.latitude,SUMMIT_TERRAIN.start.longitude,meta.origin);
|
|
eye.y=terrainGeometryHeightAt(terrain,eye.x,eye.z)+1.7;
|
|
const vertices=[];
|
|
for(let north=-20;north<=125;north+=2.5)for(let east=-55;east<=65;east+=2.5)vertices.push([east,north,terrainGeometryHeightAt(terrain,radar.x+east,radar.z-north)-radar.y]);
|
|
writeFileSync('assets/summit/blender-rock-study/context.json',JSON.stringify({radar:radar.toArray(),eye:[eye.x-radar.x,radar.z-eye.z,eye.y-radar.y],columns:49,rows:59,vertices}));
|
|
console.log({radar:radar.toArray(),eye:eye.toArray(),samples:vertices.length});
|
|
terrain.dispose();
|