Files
appRobotRender/setup/generateSets/Dockerfile.renderer
2026-06-02 17:16:24 +02:00

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 []