Rendezvous-Tokyo

Minescriptを使って点群データをマイクラに反映3

前々回
前回より改善

完成物

構築範囲を広げてみた。都会っぽい

河川敷や線路や、川にはボートが通った跡のようなものがある

範囲を広げた影響で解像度は下げているが、この土地を知っている人には認識できるレベルで構築できたと思う。

改善ポイント

  • 複数のlasデータを対象にした
  • las→CSV変換した後にさらにマイクラの座標用に変換する処理の際に以下の対応をして構築速度を改善した
    • x, y, z軸のセットで重複している行の削除
    • スケールサイズ(TARGET_SPAN)の調整。
      • 大きくすればするほど解像度が高くなるが描画時間がかかる。

変換コードはこんな感じ

import pandas as pd

# --- 設定 --------------------------------------------------
CSV_INPUT  = r"las→CSV変換した.csv"
CSV_OUTPUT = r"マイクラ用変換した.csv"

GRID_SIZE   = 1
EPSILON     = 1e-6
TARGET_SPAN = 1500.0
# -----------------------------------------------------------

cols = ["X", "Y", "Z", "R", "G", "B"]
df = pd.read_csv(CSV_INPUT, usecols=cols, dtype=float)
f[["X", "Y", "Z"]] = (
    (df[["X", "Y", "Z"]] / GRID_SIZE + EPSILON)
    .round()
    * GRID_SIZE
)
df = df.groupby(["X", "Y", "Z"]).median().reset_index()
df[["X", "Y", "Z"]] -= df[["X", "Y", "Z"]].min()
scale = TARGET_SPAN / df[["X", "Y", "Z"]].to_numpy().max()
df[["X", "Y", "Z"]] *= scale
df = df.round().astype(int)
df = df.drop_duplicates(subset=["X", "Y", "Z"])
df.to_csv(CSV_OUTPUT, index=False)

今後

  • いったん休みたい

以上。