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