45 lines
2.4 KiB
Docker
45 lines
2.4 KiB
Docker
# ──────────────────────────────────────────────────────────────────
|
|
# Renderer-Container: Blender 4.5 (headless) + cv2/numpy in Blenders Python
|
|
# Erzeugt aus robot.json die synthetischen Szenen (Bilder, npz, Ground-Truth).
|
|
# Schwer (~1-2 GB) und nur für Test-Datengenerierung — getrennt vom Pipeline-Image.
|
|
# ──────────────────────────────────────────────────────────────────
|
|
FROM ubuntu:22.04
|
|
|
|
# Exakte Blender-Patch-Version ggf. anpassen (muss unter download.blender.org existieren).
|
|
ARG BLENDER_SERIES=4.5
|
|
ARG BLENDER_VERSION=4.5.0
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# System-Python (für render_Loop.py) + Laufzeit-Libs für headless Blender/Cycles.
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
python3 wget xz-utils ca-certificates \
|
|
libx11-6 libxi6 libxxf86vm1 libxfixes3 libxrender1 libxkbcommon0 \
|
|
libgl1 libegl1 libsm6 libice6 libxext6 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Blender herunterladen und nach /opt/blender entpacken.
|
|
RUN wget -q "https://download.blender.org/release/Blender${BLENDER_SERIES}/blender-${BLENDER_VERSION}-linux-x64.tar.xz" \
|
|
-O /tmp/blender.tar.xz \
|
|
&& mkdir -p /opt/blender \
|
|
&& tar -xJf /tmp/blender.tar.xz -C /opt/blender --strip-components=1 \
|
|
&& rm /tmp/blender.tar.xz \
|
|
&& ln -s /opt/blender/blender /usr/local/bin/blender
|
|
|
|
# WICHTIG: cv2 in BLENDERS gebündeltes Python installieren (NICHT das System-Python) —
|
|
# render_robot.py erzeugt die ArUco-Marker mit cv2.aruco innerhalb von Blender.
|
|
RUN BPY="$(ls /opt/blender/${BLENDER_SERIES}/python/bin/python3*)" \
|
|
&& "$BPY" -m ensurepip \
|
|
&& "$BPY" -m pip install --no-cache-dir --upgrade pip \
|
|
&& "$BPY" -m pip install --no-cache-dir "opencv-python-headless==4.10.0.84"
|
|
|
|
ENV BLENDER_EXE=/usr/local/bin/blender \
|
|
ROBOT_JSON=/workspace/data/robot/robot.json \
|
|
RENDER_OUTPUT=/workspace/data/simulation/debug/render.png
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Standard: render_Loop.py (Argumente werden angehängt, z.B. --poses 8).
|
|
# CPU-Rendering ist der Default; für GPU den Container mit NVIDIA-Runtime starten.
|
|
ENTRYPOINT ["python3", "setup/generateSets/render_Loop.py"]
|
|
CMD []
|