{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import trimesh\n", "import numpy as np\n", "import trimesh.transformations as tf\n", "\n", "# adjust bright factor to increase or decrease the brightness of the colors\n", "def convert_ply_to_format(ply_file, output_file, bright_factor=1.5):\n", " # Load the PLY file\n", " mesh = trimesh.load(ply_file)\n", "\n", " # Define the rotation matrix to swap y and z axes\n", " angle = -np.pi / 2 # 90 degrees\n", " axis = [1, 0, 0] # Rotate around x-axis\n", " R = tf.rotation_matrix(angle, axis)\n", "\n", " # Apply the rotation to the mesh\n", " mesh.apply_transform(R)\n", " \n", " # Adjust the brightness of vertex colors if they exist\n", " if mesh.visual.kind == 'vertex' and mesh.visual.vertex_colors is not None:\n", " vertex_colors = np.asarray(mesh.visual.vertex_colors)[:, :3] # Ignore alpha channel if present\n", " brightened_colors = np.clip(vertex_colors * bright_factor, 0, 255).astype(np.uint8)\n", " mesh.visual.vertex_colors = brightened_colors\n", "\n", " # Export the mesh to the specified format\n", " mesh.export(output_file)\n", " print(f\"Converted {ply_file} to {output_file}\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Converted /nfs/turbo/coe-chaijy-unreplicated/datasets/ScanNet/raw_uncompressed/scans/scene0643_00/scene0643_00_vh_clean_2_centered.ply to /home/jianingy/research/LLaVA-original/3d_grand_demo/data/scene0643_00/scene0643_00.obj\n" ] } ], "source": [ "ply_file_path = '/nfs/turbo/coe-chaijy-unreplicated/datasets/ScanNet/raw_uncompressed/scans/scene0643_00/scene0643_00_vh_clean_2_centered.ply'\n", "obj_file_path = '/home/jianingy/research/LLaVA-original/3d_grand_demo/data/scene0643_00/scene0643_00.obj'\n", "\n", "convert_ply_to_format(ply_file_path, obj_file_path)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Converted /nfs/turbo/coe-chaijy-unreplicated/datasets/ScanNet/raw_uncompressed/scans/scene0025_00/scene0025_00_vh_clean_2_centered.ply to /home/jianingy/research/LLaVA-original/3d_grand_demo/data/scene0025_00/scene0025_00.obj\n" ] } ], "source": [ "scene_id = 'scene0025_00'\n", "ply_file_path = f'/nfs/turbo/coe-chaijy-unreplicated/datasets/ScanNet/raw_uncompressed/scans/{scene_id}/{scene_id}_vh_clean_2_centered.ply'\n", "obj_file_path = f'/home/jianingy/research/LLaVA-original/3d_grand_demo/data/{scene_id}/{scene_id}.obj'\n", "\n", "convert_ply_to_format(ply_file_path, obj_file_path)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Converted /nfs/turbo/coe-chaijy-unreplicated/datasets/ScanNet/raw_uncompressed/scans/scene0426_00/scene0426_00_vh_clean_2_centered.ply to /home/jianingy/research/LLaVA-original/3d_grand_demo/data/scene0426_00/scene0426_00.obj\n" ] } ], "source": [ "scene_id = 'scene0426_00'\n", "ply_file_path = f'/nfs/turbo/coe-chaijy-unreplicated/datasets/ScanNet/raw_uncompressed/scans/{scene_id}/{scene_id}_vh_clean_2_centered.ply'\n", "obj_file_path = f'/home/jianingy/research/LLaVA-original/3d_grand_demo/data/{scene_id}/{scene_id}.obj'\n", "\n", "convert_ply_to_format(ply_file_path, obj_file_path)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "llava", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 2 }