Repository: vlongle/pixie Branch: main Commit: bfe198a6d602 Files: 2335 Total size: 30.1 MB Directory structure: gitextract_3kysormy/ ├── .gitignore ├── LICENSE ├── README.md ├── config/ │ ├── config.yaml │ ├── data_curation/ │ │ └── default.yaml │ ├── data_rendering/ │ │ └── default.yaml │ ├── mapping/ │ │ └── default.yaml │ ├── obj_ids_metadata.json │ ├── output_rendering/ │ │ └── default.yaml │ ├── paths/ │ │ └── default.yaml │ ├── physics/ │ │ └── default.yaml │ ├── segmentation/ │ │ └── default.yaml │ ├── training/ │ │ └── default.yaml │ ├── training_3d/ │ │ └── default.yaml │ └── voxelization/ │ └── default.yaml ├── data_curation/ │ ├── cat_dict.json │ ├── download_objaverse.py │ ├── manual_data_filtering_correction.py │ ├── manual_sim_validation.py │ ├── objaverse_selection.py │ ├── render_blender.py │ └── render_objaverse_classes.py ├── data_readme.md ├── docs/ │ └── Cochin_Bold/ │ ├── Cochin_Bold.otf │ └── readme.html ├── nbs/ │ ├── pixie.ipynb │ └── real_scene.ipynb ├── normalization_stats/ │ ├── material_statistics.json │ └── normalization_ranges.yaml ├── pipeline.py ├── pixie/ │ ├── __init__.py │ ├── blender/ │ │ ├── __init__.py │ │ ├── apply_feature_colors.py │ │ ├── empty_scene.blend │ │ ├── generate_blendernerf_data.py │ │ ├── render_glb.py │ │ └── render_gs.py │ ├── metrics.py │ ├── training_utils.py │ ├── utils.py │ ├── viz_utils.py │ ├── vlm_labeler/ │ │ ├── __init__.py │ │ ├── vlm_data_filtering.py │ │ ├── vlm_parse_seg_critic.py │ │ ├── vlm_phys_judge.py │ │ ├── vlm_phys_sampler.py │ │ ├── vlm_seg.py │ │ ├── vlm_seg_class_instruction.py │ │ ├── vlm_seg_critic.py │ │ └── vlm_viz_seg_candidates.py │ └── voxel/ │ ├── __init__.py │ ├── map_pred_to_coords.py │ ├── segmentation.py │ ├── viz_segmentation.py │ └── voxelize.py ├── render.py ├── scripts/ │ ├── download_data.py │ ├── download_models.py │ ├── upload_data.py │ └── upload_models.py ├── setup.py └── third_party/ ├── PhysGaussian/ │ ├── .gitignore │ ├── .gitmodules │ ├── config/ │ │ ├── objaverse/ │ │ │ ├── custom_flowers_config.json │ │ │ ├── custom_fruit_config.json │ │ │ ├── custom_grass_config.json │ │ │ ├── custom_jello_block_config.json │ │ │ ├── custom_jelly_block_config.json │ │ │ ├── custom_metal_config.json │ │ │ ├── custom_metal_crates_config.json │ │ │ ├── custom_mud_config.json │ │ │ ├── custom_rocks_config.json │ │ │ ├── custom_rubber_ducks_and_toys_config.json │ │ │ ├── custom_sand_config.json │ │ │ ├── custom_shrubs_config.json │ │ │ ├── custom_snow_and_mud_config.json │ │ │ ├── custom_snow_config.json │ │ │ ├── custom_soda_cans_config.json │ │ │ ├── custom_sport_balls_config.json │ │ │ ├── custom_tree_config.json │ │ │ └── custom_water-like_bodies_config.json │ │ └── real_scene/ │ │ ├── custom_bonsai_config.json │ │ ├── custom_bouquet_config.json │ │ ├── custom_burger_config.json │ │ └── custom_vasedeck_config.json │ ├── gaussian-splatting/ │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── SIBR_viewers/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── cmake/ │ │ │ │ ├── linux/ │ │ │ │ │ ├── MSVCsetUserCommand.cmake │ │ │ │ │ ├── Modules/ │ │ │ │ │ │ ├── FindASSIMP.cmake │ │ │ │ │ │ ├── FindEGL.cmake │ │ │ │ │ │ ├── FindEmbree.cmake │ │ │ │ │ │ ├── FindFFMPEG.cmake │ │ │ │ │ │ └── FindGLFW.cmake │ │ │ │ │ ├── Win3rdParty.cmake │ │ │ │ │ ├── cmake_policies.cmake │ │ │ │ │ ├── dependencies.cmake │ │ │ │ │ ├── downloadAndExtractZipFile.cmake │ │ │ │ │ ├── git_describe.cmake │ │ │ │ │ ├── include_once.cmake │ │ │ │ │ ├── install_runtime.cmake │ │ │ │ │ ├── parse_arguments_multi.cmake │ │ │ │ │ └── sibr_library.cmake │ │ │ │ └── windows/ │ │ │ │ ├── MSVCsetUserCommand.cmake │ │ │ │ ├── Modules/ │ │ │ │ │ ├── FindASSIMP.cmake │ │ │ │ │ ├── FindEmbree.cmake │ │ │ │ │ └── FindFFmpeg.cmake │ │ │ │ ├── Win3rdParty.cmake │ │ │ │ ├── cmake_policies.cmake │ │ │ │ ├── dependencies.cmake │ │ │ │ ├── downloadAndExtractZipFile.cmake │ │ │ │ ├── git_describe.cmake │ │ │ │ ├── include_once.cmake │ │ │ │ ├── install_runtime.cmake │ │ │ │ ├── parse_arguments_multi.cmake │ │ │ │ └── sibr_library.cmake │ │ │ ├── docs/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── doxyfile.in │ │ │ │ ├── doxygen_prebuild.cmake.in │ │ │ │ ├── layout.xml.in │ │ │ │ └── pages/ │ │ │ │ ├── 1_Getting_Started.dox │ │ │ │ ├── 2_Projects.dox │ │ │ │ ├── 2_Projects.dox.in │ │ │ │ ├── 3_Tutorials.dox │ │ │ │ ├── 4_Architecture.dox │ │ │ │ └── Tutorials/ │ │ │ │ ├── How to generate your dataset/ │ │ │ │ │ ├── How_to_create_dataset_from_colmap.dox │ │ │ │ │ └── How_to_create_dataset_from_realitycapture.dox │ │ │ │ ├── How to setup your own project/ │ │ │ │ │ ├── Configuring_your_project.dox │ │ │ │ │ ├── Creating_your_library.dox │ │ │ │ │ ├── Documenting_a_project.dox │ │ │ │ │ └── Project_structure.dox │ │ │ │ ├── How_to_generate_your_dataset.dox │ │ │ │ ├── How_to_setup_your_own_project.dox │ │ │ │ ├── Paths_and_cameras.dox │ │ │ │ └── Useful_sibr_elements.dox │ │ │ └── src/ │ │ │ ├── CMakeLists.txt │ │ │ ├── core/ │ │ │ │ ├── graphics/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Camera.cpp │ │ │ │ │ ├── Camera.hpp │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── Frustum.cpp │ │ │ │ │ ├── Frustum.hpp │ │ │ │ │ ├── GPUQuery.cpp │ │ │ │ │ ├── GPUQuery.hpp │ │ │ │ │ ├── GUI.cpp │ │ │ │ │ ├── GUI.hpp │ │ │ │ │ ├── Image.cpp │ │ │ │ │ ├── Image.hpp │ │ │ │ │ ├── Input.cpp │ │ │ │ │ ├── Input.hpp │ │ │ │ │ ├── MaterialMesh.cpp │ │ │ │ │ ├── MaterialMesh.hpp │ │ │ │ │ ├── Mesh.cpp │ │ │ │ │ ├── Mesh.hpp │ │ │ │ │ ├── MeshBufferGL.cpp │ │ │ │ │ ├── MeshBufferGL.hpp │ │ │ │ │ ├── RenderTarget.cpp │ │ │ │ │ ├── RenderTarget.hpp │ │ │ │ │ ├── RenderUtility.cpp │ │ │ │ │ ├── RenderUtility.hpp │ │ │ │ │ ├── Shader.cpp │ │ │ │ │ ├── Shader.hpp │ │ │ │ │ ├── Shader.inl │ │ │ │ │ ├── Texture.cpp │ │ │ │ │ ├── Texture.hpp │ │ │ │ │ ├── Types.hpp │ │ │ │ │ ├── Utils.cpp │ │ │ │ │ ├── Utils.hpp │ │ │ │ │ ├── Viewport.cpp │ │ │ │ │ ├── Viewport.hpp │ │ │ │ │ ├── Window.cpp │ │ │ │ │ ├── Window.hpp │ │ │ │ │ ├── resources/ │ │ │ │ │ │ └── imgui_default.ini │ │ │ │ │ └── sibr_graphics.dox │ │ │ │ ├── imgproc/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── CropScaleImageUtility.cpp │ │ │ │ │ ├── CropScaleImageUtility.hpp │ │ │ │ │ ├── DistordCropUtility.cpp │ │ │ │ │ ├── DistordCropUtility.hpp │ │ │ │ │ ├── MRFSolver.cpp │ │ │ │ │ ├── MRFSolver.h │ │ │ │ │ ├── MeshTexturing.cpp │ │ │ │ │ ├── MeshTexturing.hpp │ │ │ │ │ ├── PoissonReconstruction.cpp │ │ │ │ │ ├── PoissonReconstruction.hpp │ │ │ │ │ └── sibr_imgproc.dox │ │ │ │ ├── raycaster/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── CameraRaycaster.cpp │ │ │ │ │ ├── CameraRaycaster.hpp │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── Intersector2D.cpp │ │ │ │ │ ├── Intersector2D.h │ │ │ │ │ ├── KdTree.hpp │ │ │ │ │ ├── PlaneEstimator.cpp │ │ │ │ │ ├── PlaneEstimator.hpp │ │ │ │ │ ├── Ray.cpp │ │ │ │ │ ├── Ray.hpp │ │ │ │ │ ├── Raycaster.cpp │ │ │ │ │ ├── Raycaster.hpp │ │ │ │ │ ├── VoxelGrid.cpp │ │ │ │ │ ├── VoxelGrid.hpp │ │ │ │ │ └── sibr_raycaster.dox │ │ │ │ ├── renderer/ │ │ │ │ │ ├── AddShadowRenderer.cpp │ │ │ │ │ ├── AddShadowRenderer.hpp │ │ │ │ │ ├── BinaryMeshRenderer.cpp │ │ │ │ │ ├── BinaryMeshRenderer.hpp │ │ │ │ │ ├── BlurRenderer.cpp │ │ │ │ │ ├── BlurRenderer.hpp │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── ColoredMeshRenderer.cpp │ │ │ │ │ ├── ColoredMeshRenderer.hpp │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── CopyRenderer.cpp │ │ │ │ │ ├── CopyRenderer.hpp │ │ │ │ │ ├── DepthRenderer.cpp │ │ │ │ │ ├── DepthRenderer.hpp │ │ │ │ │ ├── NormalRenderer.cpp │ │ │ │ │ ├── NormalRenderer.hpp │ │ │ │ │ ├── PointBasedRenderer.cpp │ │ │ │ │ ├── PointBasedRenderer.hpp │ │ │ │ │ ├── PoissonRenderer.cpp │ │ │ │ │ ├── PoissonRenderer.hpp │ │ │ │ │ ├── PositionRender.cpp │ │ │ │ │ ├── PositionRender.hpp │ │ │ │ │ ├── RenderMaskHolder.cpp │ │ │ │ │ ├── RenderMaskHolder.hpp │ │ │ │ │ ├── ShadowMapRenderer.cpp │ │ │ │ │ ├── ShadowMapRenderer.hpp │ │ │ │ │ ├── TexturedMeshRenderer.cpp │ │ │ │ │ ├── TexturedMeshRenderer.hpp │ │ │ │ │ ├── shaders/ │ │ │ │ │ │ ├── addshadow.frag │ │ │ │ │ │ ├── blur.frag │ │ │ │ │ │ ├── colored_mesh.frag │ │ │ │ │ │ ├── colored_mesh.vert │ │ │ │ │ │ ├── copy.frag │ │ │ │ │ │ ├── copy_depth.frag │ │ │ │ │ │ ├── depthRenderer.fp │ │ │ │ │ │ ├── depthRenderer.vp │ │ │ │ │ │ ├── emotive_relight.frag │ │ │ │ │ │ ├── emotive_relight.vert │ │ │ │ │ │ ├── hdrEnvMap.frag │ │ │ │ │ │ ├── hdrEnvMap.vert │ │ │ │ │ │ ├── longlat.gp │ │ │ │ │ │ ├── longlat.tcs │ │ │ │ │ │ ├── longlat.tes │ │ │ │ │ │ ├── longlat.vp │ │ │ │ │ │ ├── longlatColor.fp │ │ │ │ │ │ ├── longlatDepth.fp │ │ │ │ │ │ ├── noproj.vert │ │ │ │ │ │ ├── normalRenderer.fp │ │ │ │ │ │ ├── normalRenderer.vp │ │ │ │ │ │ ├── normalRendererGen.gp │ │ │ │ │ │ ├── normalRendererGen.vp │ │ │ │ │ │ ├── poisson_diverg.frag │ │ │ │ │ │ ├── poisson_interp.frag │ │ │ │ │ │ ├── poisson_jacobi.frag │ │ │ │ │ │ ├── poisson_restrict.frag │ │ │ │ │ │ ├── positionReflectedDirRenderer.frag │ │ │ │ │ │ ├── positionReflectedDirRenderer.vert │ │ │ │ │ │ ├── positionRenderer.frag │ │ │ │ │ │ ├── positionRenderer.vert │ │ │ │ │ │ ├── shadowMapRenderer.fp │ │ │ │ │ │ ├── shadowMapRenderer.vp │ │ │ │ │ │ ├── texture-invert.frag │ │ │ │ │ │ ├── texture.frag │ │ │ │ │ │ ├── texture.vert │ │ │ │ │ │ ├── textured_mesh.frag │ │ │ │ │ │ ├── textured_mesh.vert │ │ │ │ │ │ └── textured_mesh_flipY.vert │ │ │ │ │ └── sibr_renderer.dox │ │ │ │ ├── scene/ │ │ │ │ │ ├── BasicIBRScene.cpp │ │ │ │ │ ├── BasicIBRScene.hpp │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── CalibratedCameras.cpp │ │ │ │ │ ├── CalibratedCameras.hpp │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── ICalibratedCameras.hpp │ │ │ │ │ ├── IIBRScene.hpp │ │ │ │ │ ├── IInputImages.hpp │ │ │ │ │ ├── IParseData.hpp │ │ │ │ │ ├── IProxyMesh.hpp │ │ │ │ │ ├── InputImages.cpp │ │ │ │ │ ├── InputImages.hpp │ │ │ │ │ ├── ParseData.cpp │ │ │ │ │ ├── ParseData.hpp │ │ │ │ │ ├── ProxyMesh.cpp │ │ │ │ │ ├── ProxyMesh.hpp │ │ │ │ │ ├── RenderTargetTextures.cpp │ │ │ │ │ ├── RenderTargetTextures.hpp │ │ │ │ │ └── sibr_scene.dox │ │ │ │ ├── system/ │ │ │ │ │ ├── Array2d.hpp │ │ │ │ │ ├── ByteStream.cpp │ │ │ │ │ ├── ByteStream.hpp │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── CommandLineArgs.cpp │ │ │ │ │ ├── CommandLineArgs.hpp │ │ │ │ │ ├── Config.cpp │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── LoadingProgress.cpp │ │ │ │ │ ├── LoadingProgress.hpp │ │ │ │ │ ├── MD5.h │ │ │ │ │ ├── Matrix.cpp │ │ │ │ │ ├── Matrix.hpp │ │ │ │ │ ├── MatrixBasePlugin.hpp │ │ │ │ │ ├── MatrixPlugin.hpp │ │ │ │ │ ├── Quaternion.cpp │ │ │ │ │ ├── Quaternion.hpp │ │ │ │ │ ├── Rect.hpp │ │ │ │ │ ├── SimpleTimer.hpp │ │ │ │ │ ├── String.cpp │ │ │ │ │ ├── String.hpp │ │ │ │ │ ├── ThreadIdWorker.cpp │ │ │ │ │ ├── ThreadIdWorker.hpp │ │ │ │ │ ├── Transform3.hpp │ │ │ │ │ ├── Utils.cpp │ │ │ │ │ ├── Utils.hpp │ │ │ │ │ ├── Vector.cpp │ │ │ │ │ ├── Vector.hpp │ │ │ │ │ ├── VectorUtils.cpp │ │ │ │ │ ├── VectorUtils.hpp │ │ │ │ │ ├── XMLTree.cpp │ │ │ │ │ ├── XMLTree.h │ │ │ │ │ └── sibr_system.dox │ │ │ │ ├── video/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Config.hpp │ │ │ │ │ ├── FFmpegVideoEncoder.cpp │ │ │ │ │ ├── FFmpegVideoEncoder.hpp │ │ │ │ │ ├── MultipleVideoDecoder.hpp │ │ │ │ │ ├── Video.cpp │ │ │ │ │ ├── Video.hpp │ │ │ │ │ ├── VideoUtils.cpp │ │ │ │ │ ├── VideoUtils.hpp │ │ │ │ │ └── sibr_video.dox │ │ │ │ └── view/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Config.hpp │ │ │ │ ├── DatasetView.cpp │ │ │ │ ├── DatasetView.hpp │ │ │ │ ├── FPSCamera.cpp │ │ │ │ ├── FPSCamera.hpp │ │ │ │ ├── FPSCounter.cpp │ │ │ │ ├── FPSCounter.hpp │ │ │ │ ├── IBRBasicUtils.cpp │ │ │ │ ├── IBRBasicUtils.hpp │ │ │ │ ├── ICameraHandler.cpp │ │ │ │ ├── ICameraHandler.hpp │ │ │ │ ├── ImageView.cpp │ │ │ │ ├── ImageView.hpp │ │ │ │ ├── ImagesGrid.cpp │ │ │ │ ├── ImagesGrid.hpp │ │ │ │ ├── InteractiveCameraHandler.cpp │ │ │ │ ├── InteractiveCameraHandler.hpp │ │ │ │ ├── MultiMeshManager.cpp │ │ │ │ ├── MultiMeshManager.hpp │ │ │ │ ├── MultiViewManager.cpp │ │ │ │ ├── MultiViewManager.hpp │ │ │ │ ├── Orbit.cpp │ │ │ │ ├── Orbit.hpp │ │ │ │ ├── RenderingMode.cpp │ │ │ │ ├── RenderingMode.hpp │ │ │ │ ├── SceneDebugView.cpp │ │ │ │ ├── SceneDebugView.hpp │ │ │ │ ├── Skybox.cpp │ │ │ │ ├── Skybox.hpp │ │ │ │ ├── TrackBall.cpp │ │ │ │ ├── TrackBall.h │ │ │ │ ├── UIShortcuts.cpp │ │ │ │ ├── UIShortcuts.hpp │ │ │ │ ├── ViewBase.cpp │ │ │ │ ├── ViewBase.hpp │ │ │ │ ├── interface/ │ │ │ │ │ ├── Interface.cpp │ │ │ │ │ ├── Interface.h │ │ │ │ │ ├── InterfaceUtils.cpp │ │ │ │ │ ├── InterfaceUtils.h │ │ │ │ │ ├── MeshViewer.cpp │ │ │ │ │ └── MeshViewer.h │ │ │ │ ├── shaders/ │ │ │ │ │ ├── alpha_colored_mesh.frag │ │ │ │ │ ├── alpha_colored_mesh.vert │ │ │ │ │ ├── alpha_colored_per_triangle_normals.geom │ │ │ │ │ ├── alpha_colored_per_triangle_normals.vert │ │ │ │ │ ├── alpha_colored_per_vertex_normals.geom │ │ │ │ │ ├── alpha_colored_per_vertex_normals.vert │ │ │ │ │ ├── alpha_points.frag │ │ │ │ │ ├── alpha_points.vert │ │ │ │ │ ├── alpha_uv_tex.frag │ │ │ │ │ ├── alpha_uv_tex_array.frag │ │ │ │ │ ├── alphaimgview.fp │ │ │ │ │ ├── alphaimgview.vp │ │ │ │ │ ├── anaglyph.fp │ │ │ │ │ ├── anaglyph.vp │ │ │ │ │ ├── axisgizmo.fp │ │ │ │ │ ├── axisgizmo.vp │ │ │ │ │ ├── camstub.fp │ │ │ │ │ ├── camstub.vp │ │ │ │ │ ├── depth.fp │ │ │ │ │ ├── depth.vp │ │ │ │ │ ├── depthonly.fp │ │ │ │ │ ├── depthonly.vp │ │ │ │ │ ├── image_viewer.frag │ │ │ │ │ ├── image_viewer.vert │ │ │ │ │ ├── mesh_color.fp │ │ │ │ │ ├── mesh_color.vp │ │ │ │ │ ├── mesh_debugview.fp │ │ │ │ │ ├── mesh_debugview.vp │ │ │ │ │ ├── mesh_normal.fp │ │ │ │ │ ├── mesh_normal.vp │ │ │ │ │ ├── number.fp │ │ │ │ │ ├── number.vp │ │ │ │ │ ├── skybox.fp │ │ │ │ │ ├── skybox.vp │ │ │ │ │ ├── text-imgui.fp │ │ │ │ │ ├── text-imgui.vp │ │ │ │ │ ├── texture.fp │ │ │ │ │ ├── texture.vp │ │ │ │ │ ├── topview.fp │ │ │ │ │ ├── topview.vp │ │ │ │ │ └── uv_mesh.vert │ │ │ │ └── sibr_view.dox │ │ │ └── projects/ │ │ │ ├── dataset_tools/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── documentation/ │ │ │ │ │ ├── dataset_tools.dox │ │ │ │ │ ├── dataset_tools_doc.cmake │ │ │ │ │ └── fullColmapProcess.dox │ │ │ │ ├── preprocess/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── alignMeshes/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── cameraConverter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── clippingPlanes/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── converters/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── bundle.py │ │ │ │ │ │ ├── colmap2sibr.py │ │ │ │ │ │ ├── generate_list_images.py │ │ │ │ │ │ ├── get_image_size.py │ │ │ │ │ │ ├── ibr_convert_old_to_new.py │ │ │ │ │ │ ├── ibr_preprocess_rc_to_sibr.py │ │ │ │ │ │ ├── meshlab/ │ │ │ │ │ │ │ ├── simplify.mlx │ │ │ │ │ │ │ ├── simplify200.mlx │ │ │ │ │ │ │ ├── simplify250.mlx │ │ │ │ │ │ │ ├── simplify300.mlx │ │ │ │ │ │ │ ├── simplify350.mlx │ │ │ │ │ │ │ └── wedge_to_vertex_uvs.mlx │ │ │ │ │ │ ├── simplify_mesh.py │ │ │ │ │ │ └── wedge_to_vertex_uvs.py │ │ │ │ │ ├── cropFromCenter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── distordCrop/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── fullColmapProcess/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── ColmapProcessSteps.json │ │ │ │ │ │ ├── ColmapQualityParameters.json │ │ │ │ │ │ ├── SelectiveColmapProcessSteps.json │ │ │ │ │ │ ├── colmap2nerf.py │ │ │ │ │ │ ├── fullColmapProcess.py │ │ │ │ │ │ ├── read_write_model.py │ │ │ │ │ │ ├── selectiveColmapProcess.py │ │ │ │ │ │ ├── selective_colmap_process.py │ │ │ │ │ │ └── textureOnly.py │ │ │ │ │ ├── meshroomPythonScripts/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── ULR.py │ │ │ │ │ ├── nvmToSIBR/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── prepareColmap4Sibr/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── realityCaptureTools/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── SetVariables.bat │ │ │ │ │ │ ├── exportModel.xml │ │ │ │ │ │ ├── fixup.bat │ │ │ │ │ │ ├── processRCSteps.json │ │ │ │ │ │ ├── rc_tools.py │ │ │ │ │ │ ├── registrationConfig.xml │ │ │ │ │ │ └── runRC.bat │ │ │ │ │ ├── textureMesh/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── tonemapper/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ ├── unwrapMesh/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── main.cpp │ │ │ │ │ └── utils/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── TaskPipeline.py │ │ │ │ │ ├── color.py │ │ │ │ │ ├── commands.py │ │ │ │ │ ├── convert.py │ │ │ │ │ ├── datasets.py │ │ │ │ │ └── paths.py │ │ │ │ └── scripts/ │ │ │ │ └── processRC.py │ │ │ └── ulr/ │ │ │ ├── CMakeLists.txt │ │ │ ├── apps/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── ulr/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── main.cpp │ │ │ │ │ └── resources/ │ │ │ │ │ └── sibr_ulr_app.ini │ │ │ │ └── ulrv2/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── main.cpp │ │ │ │ └── resources/ │ │ │ │ └── sibr_ulrv2_app.ini │ │ │ ├── documentation/ │ │ │ │ ├── IBR_ULR.dox │ │ │ │ └── ulr_doc.cmake │ │ │ └── renderer/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Config.hpp │ │ │ ├── ULRRenderer.cpp │ │ │ ├── ULRRenderer.hpp │ │ │ ├── ULRV2Renderer.cpp │ │ │ ├── ULRV2Renderer.hpp │ │ │ ├── ULRV2View.cpp │ │ │ ├── ULRV2View.hpp │ │ │ ├── ULRV3Renderer.cpp │ │ │ ├── ULRV3Renderer.hpp │ │ │ ├── ULRV3View.cpp │ │ │ ├── ULRV3View.hpp │ │ │ ├── ULRView.cpp │ │ │ ├── ULRView.hpp │ │ │ └── shaders/ │ │ │ ├── ulr.vert │ │ │ ├── ulr1.frag │ │ │ ├── ulr2.frag │ │ │ ├── ulr_intersect.frag │ │ │ ├── ulr_intersect.vert │ │ │ ├── ulr_v2.frag │ │ │ ├── ulr_v2.vert │ │ │ ├── ulr_v2_alt.frag │ │ │ ├── ulr_v3.frag │ │ │ ├── ulr_v3.vert │ │ │ ├── ulr_v3_alt.frag │ │ │ └── ulr_v3_fast.frag │ │ ├── arguments/ │ │ │ └── __init__.py │ │ ├── convert.py │ │ ├── environment.yml │ │ ├── full_eval.py │ │ ├── gaussian_renderer/ │ │ │ ├── __init__.py │ │ │ └── network_gui.py │ │ ├── lpipsPyTorch/ │ │ │ ├── __init__.py │ │ │ └── modules/ │ │ │ ├── lpips.py │ │ │ ├── networks.py │ │ │ └── utils.py │ │ ├── metrics.py │ │ ├── render.py │ │ ├── scene/ │ │ │ ├── __init__.py │ │ │ ├── cameras.py │ │ │ ├── colmap_loader.py │ │ │ ├── dataset_readers.py │ │ │ └── gaussian_model.py │ │ ├── submodules/ │ │ │ ├── diff-gaussian-rasterization/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .gitmodules │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── LICENSE.md │ │ │ │ ├── README.md │ │ │ │ ├── cuda_rasterizer/ │ │ │ │ │ ├── auxiliary.h │ │ │ │ │ ├── backward.cu │ │ │ │ │ ├── backward.h │ │ │ │ │ ├── config.h │ │ │ │ │ ├── forward.cu │ │ │ │ │ ├── forward.h │ │ │ │ │ ├── rasterizer.h │ │ │ │ │ ├── rasterizer_impl.cu │ │ │ │ │ └── rasterizer_impl.h │ │ │ │ ├── diff_gaussian_rasterization/ │ │ │ │ │ └── __init__.py │ │ │ │ ├── ext.cpp │ │ │ │ ├── rasterize_points.cu │ │ │ │ ├── rasterize_points.h │ │ │ │ ├── setup.py │ │ │ │ └── third_party/ │ │ │ │ ├── glm/ │ │ │ │ │ ├── .appveyor.yml │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .travis.yml │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── cmake/ │ │ │ │ │ │ └── cmake_uninstall.cmake.in │ │ │ │ │ ├── copying.txt │ │ │ │ │ ├── doc/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── a00001_source.html │ │ │ │ │ │ │ ├── a00002_source.html │ │ │ │ │ │ │ ├── a00003_source.html │ │ │ │ │ │ │ ├── a00004_source.html │ │ │ │ │ │ │ ├── a00005_source.html │ │ │ │ │ │ │ ├── a00006_source.html │ │ │ │ │ │ │ ├── a00007.html │ │ │ │ │ │ │ ├── a00007_source.html │ │ │ │ │ │ │ ├── a00008.html │ │ │ │ │ │ │ ├── a00008_source.html │ │ │ │ │ │ │ ├── a00009.html │ │ │ │ │ │ │ ├── a00009_source.html │ │ │ │ │ │ │ ├── a00010.html │ │ │ │ │ │ │ ├── a00010_source.html │ │ │ │ │ │ │ ├── a00011.html │ │ │ │ │ │ │ ├── a00011_source.html │ │ │ │ │ │ │ ├── a00012.html │ │ │ │ │ │ │ ├── a00012_source.html │ │ │ │ │ │ │ ├── a00013.html │ │ │ │ │ │ │ ├── a00013_source.html │ │ │ │ │ │ │ ├── a00014.html │ │ │ │ │ │ │ ├── a00014_source.html │ │ │ │ │ │ │ ├── a00015.html │ │ │ │ │ │ │ ├── a00015_source.html │ │ │ │ │ │ │ ├── a00016.html │ │ │ │ │ │ │ ├── a00016_source.html │ │ │ │ │ │ │ ├── a00017.html │ │ │ │ │ │ │ ├── a00017_source.html │ │ │ │ │ │ │ ├── a00018.html │ │ │ │ │ │ │ ├── a00018_source.html │ │ │ │ │ │ │ ├── a00019_source.html │ │ │ │ │ │ │ ├── a00020_source.html │ │ │ │ │ │ │ ├── a00021.html │ │ │ │ │ │ │ ├── a00021_source.html │ │ │ │ │ │ │ ├── a00022.html │ │ │ │ │ │ │ ├── a00022_source.html │ │ │ │ │ │ │ ├── a00023.html │ │ │ │ │ │ │ ├── a00023_source.html │ │ │ │ │ │ │ ├── a00024.html │ │ │ │ │ │ │ ├── a00024_source.html │ │ │ │ │ │ │ ├── a00025.html │ │ │ │ │ │ │ ├── a00025_source.html │ │ │ │ │ │ │ ├── a00026.html │ │ │ │ │ │ │ ├── a00026_source.html │ │ │ │ │ │ │ ├── a00027.html │ │ │ │ │ │ │ ├── a00027_source.html │ │ │ │ │ │ │ ├── a00028.html │ │ │ │ │ │ │ ├── a00028_source.html │ │ │ │ │ │ │ ├── a00029.html │ │ │ │ │ │ │ ├── a00029_source.html │ │ │ │ │ │ │ ├── a00030.html │ │ │ │ │ │ │ ├── a00030_source.html │ │ │ │ │ │ │ ├── a00031.html │ │ │ │ │ │ │ ├── a00031_source.html │ │ │ │ │ │ │ ├── a00032.html │ │ │ │ │ │ │ ├── a00032_source.html │ │ │ │ │ │ │ ├── a00033.html │ │ │ │ │ │ │ ├── a00033_source.html │ │ │ │ │ │ │ ├── a00034.html │ │ │ │ │ │ │ ├── a00034_source.html │ │ │ │ │ │ │ ├── a00035_source.html │ │ │ │ │ │ │ ├── a00036.html │ │ │ │ │ │ │ ├── a00036_source.html │ │ │ │ │ │ │ ├── a00037.html │ │ │ │ │ │ │ ├── a00037_source.html │ │ │ │ │ │ │ ├── a00038.html │ │ │ │ │ │ │ ├── a00038_source.html │ │ │ │ │ │ │ ├── a00039.html │ │ │ │ │ │ │ ├── a00039_source.html │ │ │ │ │ │ │ ├── a00040.html │ │ │ │ │ │ │ ├── a00040_source.html │ │ │ │ │ │ │ ├── a00041.html │ │ │ │ │ │ │ ├── a00041_source.html │ │ │ │ │ │ │ ├── a00042.html │ │ │ │ │ │ │ ├── a00042_source.html │ │ │ │ │ │ │ ├── a00043.html │ │ │ │ │ │ │ ├── a00043_source.html │ │ │ │ │ │ │ ├── a00044.html │ │ │ │ │ │ │ ├── a00044_source.html │ │ │ │ │ │ │ ├── a00045.html │ │ │ │ │ │ │ ├── a00045_source.html │ │ │ │ │ │ │ ├── a00046.html │ │ │ │ │ │ │ ├── a00046_source.html │ │ │ │ │ │ │ ├── a00047_source.html │ │ │ │ │ │ │ ├── a00048.html │ │ │ │ │ │ │ ├── a00048_source.html │ │ │ │ │ │ │ ├── a00049.html │ │ │ │ │ │ │ ├── a00049_source.html │ │ │ │ │ │ │ ├── a00050.html │ │ │ │ │ │ │ ├── a00050_source.html │ │ │ │ │ │ │ ├── a00051.html │ │ │ │ │ │ │ ├── a00051_source.html │ │ │ │ │ │ │ ├── a00052.html │ │ │ │ │ │ │ ├── a00052_source.html │ │ │ │ │ │ │ ├── a00053.html │ │ │ │ │ │ │ ├── a00053_source.html │ │ │ │ │ │ │ ├── a00054.html │ │ │ │ │ │ │ ├── a00054_source.html │ │ │ │ │ │ │ ├── a00055.html │ │ │ │ │ │ │ ├── a00055_source.html │ │ │ │ │ │ │ ├── a00056.html │ │ │ │ │ │ │ ├── a00056_source.html │ │ │ │ │ │ │ ├── a00057.html │ │ │ │ │ │ │ ├── a00057_source.html │ │ │ │ │ │ │ ├── a00058.html │ │ │ │ │ │ │ ├── a00058_source.html │ │ │ │ │ │ │ ├── a00059.html │ │ │ │ │ │ │ ├── a00059_source.html │ │ │ │ │ │ │ ├── a00060.html │ │ │ │ │ │ │ ├── a00060_source.html │ │ │ │ │ │ │ ├── a00061.html │ │ │ │ │ │ │ ├── a00061_source.html │ │ │ │ │ │ │ ├── a00062.html │ │ │ │ │ │ │ ├── a00062_source.html │ │ │ │ │ │ │ ├── a00063.html │ │ │ │ │ │ │ ├── a00063_source.html │ │ │ │ │ │ │ ├── a00064.html │ │ │ │ │ │ │ ├── a00064_source.html │ │ │ │ │ │ │ ├── a00065.html │ │ │ │ │ │ │ ├── a00065_source.html │ │ │ │ │ │ │ ├── a00066.html │ │ │ │ │ │ │ ├── a00066_source.html │ │ │ │ │ │ │ ├── a00067.html │ │ │ │ │ │ │ ├── a00067_source.html │ │ │ │ │ │ │ ├── a00068.html │ │ │ │ │ │ │ ├── a00068_source.html │ │ │ │ │ │ │ ├── a00069.html │ │ │ │ │ │ │ ├── a00069_source.html │ │ │ │ │ │ │ ├── a00070.html │ │ │ │ │ │ │ ├── a00070_source.html │ │ │ │ │ │ │ ├── a00071.html │ │ │ │ │ │ │ ├── a00071_source.html │ │ │ │ │ │ │ ├── a00072.html │ │ │ │ │ │ │ ├── a00072_source.html │ │ │ │ │ │ │ ├── a00073.html │ │ │ │ │ │ │ ├── a00073_source.html │ │ │ │ │ │ │ ├── a00074.html │ │ │ │ │ │ │ ├── a00074_source.html │ │ │ │ │ │ │ ├── a00075.html │ │ │ │ │ │ │ ├── a00075_source.html │ │ │ │ │ │ │ ├── a00076.html │ │ │ │ │ │ │ ├── a00076_source.html │ │ │ │ │ │ │ ├── a00077.html │ │ │ │ │ │ │ ├── a00077_source.html │ │ │ │ │ │ │ ├── a00078.html │ │ │ │ │ │ │ ├── a00078_source.html │ │ │ │ │ │ │ ├── a00079.html │ │ │ │ │ │ │ ├── a00079_source.html │ │ │ │ │ │ │ ├── a00080.html │ │ │ │ │ │ │ ├── a00080_source.html │ │ │ │ │ │ │ ├── a00081.html │ │ │ │ │ │ │ ├── a00081_source.html │ │ │ │ │ │ │ ├── a00082.html │ │ │ │ │ │ │ ├── a00082_source.html │ │ │ │ │ │ │ ├── a00083.html │ │ │ │ │ │ │ ├── a00083_source.html │ │ │ │ │ │ │ ├── a00084.html │ │ │ │ │ │ │ ├── a00084_source.html │ │ │ │ │ │ │ ├── a00085.html │ │ │ │ │ │ │ ├── a00085_source.html │ │ │ │ │ │ │ ├── a00086.html │ │ │ │ │ │ │ ├── a00086_source.html │ │ │ │ │ │ │ ├── a00087.html │ │ │ │ │ │ │ ├── a00087_source.html │ │ │ │ │ │ │ ├── a00088.html │ │ │ │ │ │ │ ├── a00088_source.html │ │ │ │ │ │ │ ├── a00089.html │ │ │ │ │ │ │ ├── a00089_source.html │ │ │ │ │ │ │ ├── a00090.html │ │ │ │ │ │ │ ├── a00090_source.html │ │ │ │ │ │ │ ├── a00091.html │ │ │ │ │ │ │ ├── a00091_source.html │ │ │ │ │ │ │ ├── a00092.html │ │ │ │ │ │ │ ├── a00092_source.html │ │ │ │ │ │ │ ├── a00093.html │ │ │ │ │ │ │ ├── a00093_source.html │ │ │ │ │ │ │ ├── a00094.html │ │ │ │ │ │ │ ├── a00094_source.html │ │ │ │ │ │ │ ├── a00095_source.html │ │ │ │ │ │ │ ├── a00096.html │ │ │ │ │ │ │ ├── a00096_source.html │ │ │ │ │ │ │ ├── a00097.html │ │ │ │ │ │ │ ├── a00097_source.html │ │ │ │ │ │ │ ├── a00098.html │ │ │ │ │ │ │ ├── a00098_source.html │ │ │ │ │ │ │ ├── a00099.html │ │ │ │ │ │ │ ├── a00099_source.html │ │ │ │ │ │ │ ├── a00100.html │ │ │ │ │ │ │ ├── a00100_source.html │ │ │ │ │ │ │ ├── a00101.html │ │ │ │ │ │ │ ├── a00101_source.html │ │ │ │ │ │ │ ├── a00102.html │ │ │ │ │ │ │ ├── a00102_source.html │ │ │ │ │ │ │ ├── a00103.html │ │ │ │ │ │ │ ├── a00103_source.html │ │ │ │ │ │ │ ├── a00104.html │ │ │ │ │ │ │ ├── a00104_source.html │ │ │ │ │ │ │ ├── a00105.html │ │ │ │ │ │ │ ├── a00105_source.html │ │ │ │ │ │ │ ├── a00106.html │ │ │ │ │ │ │ ├── a00106_source.html │ │ │ │ │ │ │ ├── a00107.html │ │ │ │ │ │ │ ├── a00107_source.html │ │ │ │ │ │ │ ├── a00108.html │ │ │ │ │ │ │ ├── a00108_source.html │ │ │ │ │ │ │ ├── a00109.html │ │ │ │ │ │ │ ├── a00109_source.html │ │ │ │ │ │ │ ├── a00110.html │ │ │ │ │ │ │ ├── a00110_source.html │ │ │ │ │ │ │ ├── a00111.html │ │ │ │ │ │ │ ├── a00111_source.html │ │ │ │ │ │ │ ├── a00112.html │ │ │ │ │ │ │ ├── a00112_source.html │ │ │ │ │ │ │ ├── a00113.html │ │ │ │ │ │ │ ├── a00113_source.html │ │ │ │ │ │ │ ├── a00114.html │ │ │ │ │ │ │ ├── a00114_source.html │ │ │ │ │ │ │ ├── a00115.html │ │ │ │ │ │ │ ├── a00115_source.html │ │ │ │ │ │ │ ├── a00116.html │ │ │ │ │ │ │ ├── a00116_source.html │ │ │ │ │ │ │ ├── a00117.html │ │ │ │ │ │ │ ├── a00117_source.html │ │ │ │ │ │ │ ├── a00118.html │ │ │ │ │ │ │ ├── a00118_source.html │ │ │ │ │ │ │ ├── a00119.html │ │ │ │ │ │ │ ├── a00119_source.html │ │ │ │ │ │ │ ├── a00120.html │ │ │ │ │ │ │ ├── a00120_source.html │ │ │ │ │ │ │ ├── a00121.html │ │ │ │ │ │ │ ├── a00121_source.html │ │ │ │ │ │ │ ├── a00122.html │ │ │ │ │ │ │ ├── a00122_source.html │ │ │ │ │ │ │ ├── a00123.html │ │ │ │ │ │ │ ├── a00123_source.html │ │ │ │ │ │ │ ├── a00124_source.html │ │ │ │ │ │ │ ├── a00125.html │ │ │ │ │ │ │ ├── a00125_source.html │ │ │ │ │ │ │ ├── a00126.html │ │ │ │ │ │ │ ├── a00126_source.html │ │ │ │ │ │ │ ├── a00127.html │ │ │ │ │ │ │ ├── a00127_source.html │ │ │ │ │ │ │ ├── a00128.html │ │ │ │ │ │ │ ├── a00128_source.html │ │ │ │ │ │ │ ├── a00129.html │ │ │ │ │ │ │ ├── a00129_source.html │ │ │ │ │ │ │ ├── a00130.html │ │ │ │ │ │ │ ├── a00130_source.html │ │ │ │ │ │ │ ├── a00131.html │ │ │ │ │ │ │ ├── a00131_source.html │ │ │ │ │ │ │ ├── a00132.html │ │ │ │ │ │ │ ├── a00132_source.html │ │ │ │ │ │ │ ├── a00133.html │ │ │ │ │ │ │ ├── a00133_source.html │ │ │ │ │ │ │ ├── a00134.html │ │ │ │ │ │ │ ├── a00134_source.html │ │ │ │ │ │ │ ├── a00135.html │ │ │ │ │ │ │ ├── a00135_source.html │ │ │ │ │ │ │ ├── a00136.html │ │ │ │ │ │ │ ├── a00136_source.html │ │ │ │ │ │ │ ├── a00137.html │ │ │ │ │ │ │ ├── a00137_source.html │ │ │ │ │ │ │ ├── a00138.html │ │ │ │ │ │ │ ├── a00138_source.html │ │ │ │ │ │ │ ├── a00139.html │ │ │ │ │ │ │ ├── a00139_source.html │ │ │ │ │ │ │ ├── a00140.html │ │ │ │ │ │ │ ├── a00140_source.html │ │ │ │ │ │ │ ├── a00141.html │ │ │ │ │ │ │ ├── a00141_source.html │ │ │ │ │ │ │ ├── a00142.html │ │ │ │ │ │ │ ├── a00142_source.html │ │ │ │ │ │ │ ├── a00143.html │ │ │ │ │ │ │ ├── a00143_source.html │ │ │ │ │ │ │ ├── a00144.html │ │ │ │ │ │ │ ├── a00144_source.html │ │ │ │ │ │ │ ├── a00145.html │ │ │ │ │ │ │ ├── a00145_source.html │ │ │ │ │ │ │ ├── a00146.html │ │ │ │ │ │ │ ├── a00146_source.html │ │ │ │ │ │ │ ├── a00147.html │ │ │ │ │ │ │ ├── a00147_source.html │ │ │ │ │ │ │ ├── a00148.html │ │ │ │ │ │ │ ├── a00148_source.html │ │ │ │ │ │ │ ├── a00149.html │ │ │ │ │ │ │ ├── a00149_source.html │ │ │ │ │ │ │ ├── a00150.html │ │ │ │ │ │ │ ├── a00150_source.html │ │ │ │ │ │ │ ├── a00151.html │ │ │ │ │ │ │ ├── a00151_source.html │ │ │ │ │ │ │ ├── a00152.html │ │ │ │ │ │ │ ├── a00152_source.html │ │ │ │ │ │ │ ├── a00153_source.html │ │ │ │ │ │ │ ├── a00154.html │ │ │ │ │ │ │ ├── a00154_source.html │ │ │ │ │ │ │ ├── a00155.html │ │ │ │ │ │ │ ├── a00155_source.html │ │ │ │ │ │ │ ├── a00156.html │ │ │ │ │ │ │ ├── a00156_source.html │ │ │ │ │ │ │ ├── a00157.html │ │ │ │ │ │ │ ├── a00157_source.html │ │ │ │ │ │ │ ├── a00158.html │ │ │ │ │ │ │ ├── a00158_source.html │ │ │ │ │ │ │ ├── a00159.html │ │ │ │ │ │ │ ├── a00159_source.html │ │ │ │ │ │ │ ├── a00160.html │ │ │ │ │ │ │ ├── a00160_source.html │ │ │ │ │ │ │ ├── a00161.html │ │ │ │ │ │ │ ├── a00161_source.html │ │ │ │ │ │ │ ├── a00162.html │ │ │ │ │ │ │ ├── a00162_source.html │ │ │ │ │ │ │ ├── a00163_source.html │ │ │ │ │ │ │ ├── a00164_source.html │ │ │ │ │ │ │ ├── a00165.html │ │ │ │ │ │ │ ├── a00165_source.html │ │ │ │ │ │ │ ├── a00166.html │ │ │ │ │ │ │ ├── a00166_source.html │ │ │ │ │ │ │ ├── a00167.html │ │ │ │ │ │ │ ├── a00167_source.html │ │ │ │ │ │ │ ├── a00168.html │ │ │ │ │ │ │ ├── a00168_source.html │ │ │ │ │ │ │ ├── a00169.html │ │ │ │ │ │ │ ├── a00169_source.html │ │ │ │ │ │ │ ├── a00170.html │ │ │ │ │ │ │ ├── a00170_source.html │ │ │ │ │ │ │ ├── a00171.html │ │ │ │ │ │ │ ├── a00171_source.html │ │ │ │ │ │ │ ├── a00172.html │ │ │ │ │ │ │ ├── a00172_source.html │ │ │ │ │ │ │ ├── a00173.html │ │ │ │ │ │ │ ├── a00173_source.html │ │ │ │ │ │ │ ├── a00174.html │ │ │ │ │ │ │ ├── a00174_source.html │ │ │ │ │ │ │ ├── a00175.html │ │ │ │ │ │ │ ├── a00175_source.html │ │ │ │ │ │ │ ├── a00176.html │ │ │ │ │ │ │ ├── a00176_source.html │ │ │ │ │ │ │ ├── a00177.html │ │ │ │ │ │ │ ├── a00177_source.html │ │ │ │ │ │ │ ├── a00178.html │ │ │ │ │ │ │ ├── a00178_source.html │ │ │ │ │ │ │ ├── a00179.html │ │ │ │ │ │ │ ├── a00179_source.html │ │ │ │ │ │ │ ├── a00180.html │ │ │ │ │ │ │ ├── a00180_source.html │ │ │ │ │ │ │ ├── a00181.html │ │ │ │ │ │ │ ├── a00181_source.html │ │ │ │ │ │ │ ├── a00182.html │ │ │ │ │ │ │ ├── a00182_source.html │ │ │ │ │ │ │ ├── a00183.html │ │ │ │ │ │ │ ├── a00183_source.html │ │ │ │ │ │ │ ├── a00184.html │ │ │ │ │ │ │ ├── a00184_source.html │ │ │ │ │ │ │ ├── a00185.html │ │ │ │ │ │ │ ├── a00185_source.html │ │ │ │ │ │ │ ├── a00186.html │ │ │ │ │ │ │ ├── a00186_source.html │ │ │ │ │ │ │ ├── a00187.html │ │ │ │ │ │ │ ├── a00187_source.html │ │ │ │ │ │ │ ├── a00188.html │ │ │ │ │ │ │ ├── a00188_source.html │ │ │ │ │ │ │ ├── a00189.html │ │ │ │ │ │ │ ├── a00189_source.html │ │ │ │ │ │ │ ├── a00190.html │ │ │ │ │ │ │ ├── a00190_source.html │ │ │ │ │ │ │ ├── a00191.html │ │ │ │ │ │ │ ├── a00191_source.html │ │ │ │ │ │ │ ├── a00192.html │ │ │ │ │ │ │ ├── a00192_source.html │ │ │ │ │ │ │ ├── a00193.html │ │ │ │ │ │ │ ├── a00193_source.html │ │ │ │ │ │ │ ├── a00194.html │ │ │ │ │ │ │ ├── a00194_source.html │ │ │ │ │ │ │ ├── a00195.html │ │ │ │ │ │ │ ├── a00195_source.html │ │ │ │ │ │ │ ├── a00196.html │ │ │ │ │ │ │ ├── a00196_source.html │ │ │ │ │ │ │ ├── a00197.html │ │ │ │ │ │ │ ├── a00197_source.html │ │ │ │ │ │ │ ├── a00198.html │ │ │ │ │ │ │ ├── a00198_source.html │ │ │ │ │ │ │ ├── a00199.html │ │ │ │ │ │ │ ├── a00199_source.html │ │ │ │ │ │ │ ├── a00200.html │ │ │ │ │ │ │ ├── a00200_source.html │ │ │ │ │ │ │ ├── a00201.html │ │ │ │ │ │ │ ├── a00201_source.html │ │ │ │ │ │ │ ├── a00202.html │ │ │ │ │ │ │ ├── a00202_source.html │ │ │ │ │ │ │ ├── a00203.html │ │ │ │ │ │ │ ├── a00203_source.html │ │ │ │ │ │ │ ├── a00204.html │ │ │ │ │ │ │ ├── a00204_source.html │ │ │ │ │ │ │ ├── a00205.html │ │ │ │ │ │ │ ├── a00205_source.html │ │ │ │ │ │ │ ├── a00206.html │ │ │ │ │ │ │ ├── a00206_source.html │ │ │ │ │ │ │ ├── a00207.html │ │ │ │ │ │ │ ├── a00207_source.html │ │ │ │ │ │ │ ├── a00208.html │ │ │ │ │ │ │ ├── a00208_source.html │ │ │ │ │ │ │ ├── a00209.html │ │ │ │ │ │ │ ├── a00209_source.html │ │ │ │ │ │ │ ├── a00210.html │ │ │ │ │ │ │ ├── a00210_source.html │ │ │ │ │ │ │ ├── a00211.html │ │ │ │ │ │ │ ├── a00211_source.html │ │ │ │ │ │ │ ├── a00212.html │ │ │ │ │ │ │ ├── a00212_source.html │ │ │ │ │ │ │ ├── a00213.html │ │ │ │ │ │ │ ├── a00213_source.html │ │ │ │ │ │ │ ├── a00214.html │ │ │ │ │ │ │ ├── a00214_source.html │ │ │ │ │ │ │ ├── a00215.html │ │ │ │ │ │ │ ├── a00215_source.html │ │ │ │ │ │ │ ├── a00216.html │ │ │ │ │ │ │ ├── a00216_source.html │ │ │ │ │ │ │ ├── a00217.html │ │ │ │ │ │ │ ├── a00217_source.html │ │ │ │ │ │ │ ├── a00218.html │ │ │ │ │ │ │ ├── a00218_source.html │ │ │ │ │ │ │ ├── a00219.html │ │ │ │ │ │ │ ├── a00219_source.html │ │ │ │ │ │ │ ├── a00220.html │ │ │ │ │ │ │ ├── a00220_source.html │ │ │ │ │ │ │ ├── a00221.html │ │ │ │ │ │ │ ├── a00221_source.html │ │ │ │ │ │ │ ├── a00222.html │ │ │ │ │ │ │ ├── a00222_source.html │ │ │ │ │ │ │ ├── a00223.html │ │ │ │ │ │ │ ├── a00223_source.html │ │ │ │ │ │ │ ├── a00224.html │ │ │ │ │ │ │ ├── a00224_source.html │ │ │ │ │ │ │ ├── a00225.html │ │ │ │ │ │ │ ├── a00225_source.html │ │ │ │ │ │ │ ├── a00226.html │ │ │ │ │ │ │ ├── a00226_source.html │ │ │ │ │ │ │ ├── a00227.html │ │ │ │ │ │ │ ├── a00227_source.html │ │ │ │ │ │ │ ├── a00228.html │ │ │ │ │ │ │ ├── a00228_source.html │ │ │ │ │ │ │ ├── a00229.html │ │ │ │ │ │ │ ├── a00229_source.html │ │ │ │ │ │ │ ├── a00230.html │ │ │ │ │ │ │ ├── a00230_source.html │ │ │ │ │ │ │ ├── a00231.html │ │ │ │ │ │ │ ├── a00231_source.html │ │ │ │ │ │ │ ├── a00232.html │ │ │ │ │ │ │ ├── a00232_source.html │ │ │ │ │ │ │ ├── a00233.html │ │ │ │ │ │ │ ├── a00233_source.html │ │ │ │ │ │ │ ├── a00234.html │ │ │ │ │ │ │ ├── a00234_source.html │ │ │ │ │ │ │ ├── a00235.html │ │ │ │ │ │ │ ├── a00235_source.html │ │ │ │ │ │ │ ├── a00241.html │ │ │ │ │ │ │ ├── a00242.html │ │ │ │ │ │ │ ├── a00243.html │ │ │ │ │ │ │ ├── a00244.html │ │ │ │ │ │ │ ├── a00245.html │ │ │ │ │ │ │ ├── a00246.html │ │ │ │ │ │ │ ├── a00247.html │ │ │ │ │ │ │ ├── a00248.html │ │ │ │ │ │ │ ├── a00249.html │ │ │ │ │ │ │ ├── a00250.html │ │ │ │ │ │ │ ├── a00251.html │ │ │ │ │ │ │ ├── a00252.html │ │ │ │ │ │ │ ├── a00253.html │ │ │ │ │ │ │ ├── a00254.html │ │ │ │ │ │ │ ├── a00255.html │ │ │ │ │ │ │ ├── a00256.html │ │ │ │ │ │ │ ├── a00257.html │ │ │ │ │ │ │ ├── a00258.html │ │ │ │ │ │ │ ├── a00259.html │ │ │ │ │ │ │ ├── a00260.html │ │ │ │ │ │ │ ├── a00261.html │ │ │ │ │ │ │ ├── a00262.html │ │ │ │ │ │ │ ├── a00263.html │ │ │ │ │ │ │ ├── a00264.html │ │ │ │ │ │ │ ├── a00265.html │ │ │ │ │ │ │ ├── a00266.html │ │ │ │ │ │ │ ├── a00267.html │ │ │ │ │ │ │ ├── a00268.html │ │ │ │ │ │ │ ├── a00269.html │ │ │ │ │ │ │ ├── a00270.html │ │ │ │ │ │ │ ├── a00271.html │ │ │ │ │ │ │ ├── a00272.html │ │ │ │ │ │ │ ├── a00273.html │ │ │ │ │ │ │ ├── a00274.html │ │ │ │ │ │ │ ├── a00275.html │ │ │ │ │ │ │ ├── a00276.html │ │ │ │ │ │ │ ├── a00277.html │ │ │ │ │ │ │ ├── a00278.html │ │ │ │ │ │ │ ├── a00279.html │ │ │ │ │ │ │ ├── a00280.html │ │ │ │ │ │ │ ├── a00281.html │ │ │ │ │ │ │ ├── a00282.html │ │ │ │ │ │ │ ├── a00283.html │ │ │ │ │ │ │ ├── a00284.html │ │ │ │ │ │ │ ├── a00285.html │ │ │ │ │ │ │ ├── a00286.html │ │ │ │ │ │ │ ├── a00287.html │ │ │ │ │ │ │ ├── a00288.html │ │ │ │ │ │ │ ├── a00289.html │ │ │ │ │ │ │ ├── a00290.html │ │ │ │ │ │ │ ├── a00291.html │ │ │ │ │ │ │ ├── a00292.html │ │ │ │ │ │ │ ├── a00293.html │ │ │ │ │ │ │ ├── a00294.html │ │ │ │ │ │ │ ├── a00295.html │ │ │ │ │ │ │ ├── a00296.html │ │ │ │ │ │ │ ├── a00297.html │ │ │ │ │ │ │ ├── a00298.html │ │ │ │ │ │ │ ├── a00299.html │ │ │ │ │ │ │ ├── a00300.html │ │ │ │ │ │ │ ├── a00301.html │ │ │ │ │ │ │ ├── a00302.html │ │ │ │ │ │ │ ├── a00303.html │ │ │ │ │ │ │ ├── a00304.html │ │ │ │ │ │ │ ├── a00305.html │ │ │ │ │ │ │ ├── a00306.html │ │ │ │ │ │ │ ├── a00307.html │ │ │ │ │ │ │ ├── a00308.html │ │ │ │ │ │ │ ├── a00309.html │ │ │ │ │ │ │ ├── a00310.html │ │ │ │ │ │ │ ├── a00311.html │ │ │ │ │ │ │ ├── a00312.html │ │ │ │ │ │ │ ├── a00313.html │ │ │ │ │ │ │ ├── a00314.html │ │ │ │ │ │ │ ├── a00315.html │ │ │ │ │ │ │ ├── a00316.html │ │ │ │ │ │ │ ├── a00317.html │ │ │ │ │ │ │ ├── a00318.html │ │ │ │ │ │ │ ├── a00319.html │ │ │ │ │ │ │ ├── a00320.html │ │ │ │ │ │ │ ├── a00321.html │ │ │ │ │ │ │ ├── a00322.html │ │ │ │ │ │ │ ├── a00323.html │ │ │ │ │ │ │ ├── a00324.html │ │ │ │ │ │ │ ├── a00325.html │ │ │ │ │ │ │ ├── a00326.html │ │ │ │ │ │ │ ├── a00327.html │ │ │ │ │ │ │ ├── a00328.html │ │ │ │ │ │ │ ├── a00329.html │ │ │ │ │ │ │ ├── a00330.html │ │ │ │ │ │ │ ├── a00331.html │ │ │ │ │ │ │ ├── a00332.html │ │ │ │ │ │ │ ├── a00333.html │ │ │ │ │ │ │ ├── a00334.html │ │ │ │ │ │ │ ├── a00335.html │ │ │ │ │ │ │ ├── a00336.html │ │ │ │ │ │ │ ├── a00337.html │ │ │ │ │ │ │ ├── a00338.html │ │ │ │ │ │ │ ├── a00339.html │ │ │ │ │ │ │ ├── a00340.html │ │ │ │ │ │ │ ├── a00341.html │ │ │ │ │ │ │ ├── a00342.html │ │ │ │ │ │ │ ├── a00343.html │ │ │ │ │ │ │ ├── a00344.html │ │ │ │ │ │ │ ├── a00345.html │ │ │ │ │ │ │ ├── a00346.html │ │ │ │ │ │ │ ├── a00347.html │ │ │ │ │ │ │ ├── a00348.html │ │ │ │ │ │ │ ├── a00349.html │ │ │ │ │ │ │ ├── a00350.html │ │ │ │ │ │ │ ├── a00351.html │ │ │ │ │ │ │ ├── a00352.html │ │ │ │ │ │ │ ├── a00353.html │ │ │ │ │ │ │ ├── a00354.html │ │ │ │ │ │ │ ├── a00355.html │ │ │ │ │ │ │ ├── a00356.html │ │ │ │ │ │ │ ├── a00357.html │ │ │ │ │ │ │ ├── a00358.html │ │ │ │ │ │ │ ├── a00359.html │ │ │ │ │ │ │ ├── a00360.html │ │ │ │ │ │ │ ├── a00361.html │ │ │ │ │ │ │ ├── a00362.html │ │ │ │ │ │ │ ├── a00363.html │ │ │ │ │ │ │ ├── a00364.html │ │ │ │ │ │ │ ├── a00365.html │ │ │ │ │ │ │ ├── a00366.html │ │ │ │ │ │ │ ├── a00367.html │ │ │ │ │ │ │ ├── a00368.html │ │ │ │ │ │ │ ├── a00369.html │ │ │ │ │ │ │ ├── a00370.html │ │ │ │ │ │ │ ├── a00371.html │ │ │ │ │ │ │ ├── a00372.html │ │ │ │ │ │ │ ├── a00373.html │ │ │ │ │ │ │ ├── a00374.html │ │ │ │ │ │ │ ├── dir_033f5edb0915b828d2c46ed4804e5503.html │ │ │ │ │ │ │ ├── dir_3a581ba30d25676e4b797b1f96d53b45.html │ │ │ │ │ │ │ ├── dir_44e5e654415abd9ca6fdeaddaff8565e.html │ │ │ │ │ │ │ ├── dir_4c6bd29c73fa4e5a2509e1c15f846751.html │ │ │ │ │ │ │ ├── dir_5189610d3ba09ec39b766fb99b34cd93.html │ │ │ │ │ │ │ ├── dir_6b66465792d005310484819a0eb0b0d3.html │ │ │ │ │ │ │ ├── dir_9e5fe034a00e89334fd5186c3e7db156.html │ │ │ │ │ │ │ ├── dir_a8bee7be44182a33f3820393ae0b105d.html │ │ │ │ │ │ │ ├── dir_cef2d71d502cb69a9252bca2297d9549.html │ │ │ │ │ │ │ ├── dir_d9496f0844b48bc7e53b5af8c99b9ab2.html │ │ │ │ │ │ │ ├── dir_f35778ec600a1b9bbc4524e62e226aa2.html │ │ │ │ │ │ │ ├── doxygen.css │ │ │ │ │ │ │ ├── dynsections.js │ │ │ │ │ │ │ ├── files.html │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── jquery.js │ │ │ │ │ │ │ ├── modules.html │ │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ │ ├── all_0.html │ │ │ │ │ │ │ │ ├── all_0.js │ │ │ │ │ │ │ │ ├── all_1.html │ │ │ │ │ │ │ │ ├── all_1.js │ │ │ │ │ │ │ │ ├── all_10.html │ │ │ │ │ │ │ │ ├── all_10.js │ │ │ │ │ │ │ │ ├── all_11.html │ │ │ │ │ │ │ │ ├── all_11.js │ │ │ │ │ │ │ │ ├── all_12.html │ │ │ │ │ │ │ │ ├── all_12.js │ │ │ │ │ │ │ │ ├── all_13.html │ │ │ │ │ │ │ │ ├── all_13.js │ │ │ │ │ │ │ │ ├── all_14.html │ │ │ │ │ │ │ │ ├── all_14.js │ │ │ │ │ │ │ │ ├── all_15.html │ │ │ │ │ │ │ │ ├── all_15.js │ │ │ │ │ │ │ │ ├── all_16.html │ │ │ │ │ │ │ │ ├── all_16.js │ │ │ │ │ │ │ │ ├── all_2.html │ │ │ │ │ │ │ │ ├── all_2.js │ │ │ │ │ │ │ │ ├── all_3.html │ │ │ │ │ │ │ │ ├── all_3.js │ │ │ │ │ │ │ │ ├── all_4.html │ │ │ │ │ │ │ │ ├── all_4.js │ │ │ │ │ │ │ │ ├── all_5.html │ │ │ │ │ │ │ │ ├── all_5.js │ │ │ │ │ │ │ │ ├── all_6.html │ │ │ │ │ │ │ │ ├── all_6.js │ │ │ │ │ │ │ │ ├── all_7.html │ │ │ │ │ │ │ │ ├── all_7.js │ │ │ │ │ │ │ │ ├── all_8.html │ │ │ │ │ │ │ │ ├── all_8.js │ │ │ │ │ │ │ │ ├── all_9.html │ │ │ │ │ │ │ │ ├── all_9.js │ │ │ │ │ │ │ │ ├── all_a.html │ │ │ │ │ │ │ │ ├── all_a.js │ │ │ │ │ │ │ │ ├── all_b.html │ │ │ │ │ │ │ │ ├── all_b.js │ │ │ │ │ │ │ │ ├── all_c.html │ │ │ │ │ │ │ │ ├── all_c.js │ │ │ │ │ │ │ │ ├── all_d.html │ │ │ │ │ │ │ │ ├── all_d.js │ │ │ │ │ │ │ │ ├── all_e.html │ │ │ │ │ │ │ │ ├── all_e.js │ │ │ │ │ │ │ │ ├── all_f.html │ │ │ │ │ │ │ │ ├── all_f.js │ │ │ │ │ │ │ │ ├── files_0.html │ │ │ │ │ │ │ │ ├── files_0.js │ │ │ │ │ │ │ │ ├── files_1.html │ │ │ │ │ │ │ │ ├── files_1.js │ │ │ │ │ │ │ │ ├── files_10.html │ │ │ │ │ │ │ │ ├── files_10.js │ │ │ │ │ │ │ │ ├── files_11.html │ │ │ │ │ │ │ │ ├── files_11.js │ │ │ │ │ │ │ │ ├── files_12.html │ │ │ │ │ │ │ │ ├── files_12.js │ │ │ │ │ │ │ │ ├── files_13.html │ │ │ │ │ │ │ │ ├── files_13.js │ │ │ │ │ │ │ │ ├── files_14.html │ │ │ │ │ │ │ │ ├── files_14.js │ │ │ │ │ │ │ │ ├── files_2.html │ │ │ │ │ │ │ │ ├── files_2.js │ │ │ │ │ │ │ │ ├── files_3.html │ │ │ │ │ │ │ │ ├── files_3.js │ │ │ │ │ │ │ │ ├── files_4.html │ │ │ │ │ │ │ │ ├── files_4.js │ │ │ │ │ │ │ │ ├── files_5.html │ │ │ │ │ │ │ │ ├── files_5.js │ │ │ │ │ │ │ │ ├── files_6.html │ │ │ │ │ │ │ │ ├── files_6.js │ │ │ │ │ │ │ │ ├── files_7.html │ │ │ │ │ │ │ │ ├── files_7.js │ │ │ │ │ │ │ │ ├── files_8.html │ │ │ │ │ │ │ │ ├── files_8.js │ │ │ │ │ │ │ │ ├── files_9.html │ │ │ │ │ │ │ │ ├── files_9.js │ │ │ │ │ │ │ │ ├── files_a.html │ │ │ │ │ │ │ │ ├── files_a.js │ │ │ │ │ │ │ │ ├── files_b.html │ │ │ │ │ │ │ │ ├── files_b.js │ │ │ │ │ │ │ │ ├── files_c.html │ │ │ │ │ │ │ │ ├── files_c.js │ │ │ │ │ │ │ │ ├── files_d.html │ │ │ │ │ │ │ │ ├── files_d.js │ │ │ │ │ │ │ │ ├── files_e.html │ │ │ │ │ │ │ │ ├── files_e.js │ │ │ │ │ │ │ │ ├── files_f.html │ │ │ │ │ │ │ │ ├── files_f.js │ │ │ │ │ │ │ │ ├── functions_0.html │ │ │ │ │ │ │ │ ├── functions_0.js │ │ │ │ │ │ │ │ ├── functions_1.html │ │ │ │ │ │ │ │ ├── functions_1.js │ │ │ │ │ │ │ │ ├── functions_10.html │ │ │ │ │ │ │ │ ├── functions_10.js │ │ │ │ │ │ │ │ ├── functions_11.html │ │ │ │ │ │ │ │ ├── functions_11.js │ │ │ │ │ │ │ │ ├── functions_12.html │ │ │ │ │ │ │ │ ├── functions_12.js │ │ │ │ │ │ │ │ ├── functions_13.html │ │ │ │ │ │ │ │ ├── functions_13.js │ │ │ │ │ │ │ │ ├── functions_14.html │ │ │ │ │ │ │ │ ├── functions_14.js │ │ │ │ │ │ │ │ ├── functions_15.html │ │ │ │ │ │ │ │ ├── functions_15.js │ │ │ │ │ │ │ │ ├── functions_16.html │ │ │ │ │ │ │ │ ├── functions_16.js │ │ │ │ │ │ │ │ ├── functions_2.html │ │ │ │ │ │ │ │ ├── functions_2.js │ │ │ │ │ │ │ │ ├── functions_3.html │ │ │ │ │ │ │ │ ├── functions_3.js │ │ │ │ │ │ │ │ ├── functions_4.html │ │ │ │ │ │ │ │ ├── functions_4.js │ │ │ │ │ │ │ │ ├── functions_5.html │ │ │ │ │ │ │ │ ├── functions_5.js │ │ │ │ │ │ │ │ ├── functions_6.html │ │ │ │ │ │ │ │ ├── functions_6.js │ │ │ │ │ │ │ │ ├── functions_7.html │ │ │ │ │ │ │ │ ├── functions_7.js │ │ │ │ │ │ │ │ ├── functions_8.html │ │ │ │ │ │ │ │ ├── functions_8.js │ │ │ │ │ │ │ │ ├── functions_9.html │ │ │ │ │ │ │ │ ├── functions_9.js │ │ │ │ │ │ │ │ ├── functions_a.html │ │ │ │ │ │ │ │ ├── functions_a.js │ │ │ │ │ │ │ │ ├── functions_b.html │ │ │ │ │ │ │ │ ├── functions_b.js │ │ │ │ │ │ │ │ ├── functions_c.html │ │ │ │ │ │ │ │ ├── functions_c.js │ │ │ │ │ │ │ │ ├── functions_d.html │ │ │ │ │ │ │ │ ├── functions_d.js │ │ │ │ │ │ │ │ ├── functions_e.html │ │ │ │ │ │ │ │ ├── functions_e.js │ │ │ │ │ │ │ │ ├── functions_f.html │ │ │ │ │ │ │ │ ├── functions_f.js │ │ │ │ │ │ │ │ ├── groups_0.html │ │ │ │ │ │ │ │ ├── groups_0.js │ │ │ │ │ │ │ │ ├── groups_1.html │ │ │ │ │ │ │ │ ├── groups_1.js │ │ │ │ │ │ │ │ ├── groups_2.html │ │ │ │ │ │ │ │ ├── groups_2.js │ │ │ │ │ │ │ │ ├── groups_3.html │ │ │ │ │ │ │ │ ├── groups_3.js │ │ │ │ │ │ │ │ ├── groups_4.html │ │ │ │ │ │ │ │ ├── groups_4.js │ │ │ │ │ │ │ │ ├── groups_5.html │ │ │ │ │ │ │ │ ├── groups_5.js │ │ │ │ │ │ │ │ ├── groups_6.html │ │ │ │ │ │ │ │ ├── groups_6.js │ │ │ │ │ │ │ │ ├── groups_7.html │ │ │ │ │ │ │ │ ├── groups_7.js │ │ │ │ │ │ │ │ ├── groups_8.html │ │ │ │ │ │ │ │ ├── groups_8.js │ │ │ │ │ │ │ │ ├── groups_9.html │ │ │ │ │ │ │ │ ├── groups_9.js │ │ │ │ │ │ │ │ ├── nomatches.html │ │ │ │ │ │ │ │ ├── pages_0.html │ │ │ │ │ │ │ │ ├── pages_0.js │ │ │ │ │ │ │ │ ├── search.css │ │ │ │ │ │ │ │ ├── search.js │ │ │ │ │ │ │ │ ├── searchdata.js │ │ │ │ │ │ │ │ ├── typedefs_0.html │ │ │ │ │ │ │ │ ├── typedefs_0.js │ │ │ │ │ │ │ │ ├── typedefs_1.html │ │ │ │ │ │ │ │ ├── typedefs_1.js │ │ │ │ │ │ │ │ ├── typedefs_2.html │ │ │ │ │ │ │ │ ├── typedefs_2.js │ │ │ │ │ │ │ │ ├── typedefs_3.html │ │ │ │ │ │ │ │ ├── typedefs_3.js │ │ │ │ │ │ │ │ ├── typedefs_4.html │ │ │ │ │ │ │ │ ├── typedefs_4.js │ │ │ │ │ │ │ │ ├── typedefs_5.html │ │ │ │ │ │ │ │ ├── typedefs_5.js │ │ │ │ │ │ │ │ ├── typedefs_6.html │ │ │ │ │ │ │ │ ├── typedefs_6.js │ │ │ │ │ │ │ │ ├── typedefs_7.html │ │ │ │ │ │ │ │ ├── typedefs_7.js │ │ │ │ │ │ │ │ ├── typedefs_8.html │ │ │ │ │ │ │ │ ├── typedefs_8.js │ │ │ │ │ │ │ │ ├── typedefs_9.html │ │ │ │ │ │ │ │ ├── typedefs_9.js │ │ │ │ │ │ │ │ ├── typedefs_a.html │ │ │ │ │ │ │ │ ├── typedefs_a.js │ │ │ │ │ │ │ │ ├── typedefs_b.html │ │ │ │ │ │ │ │ ├── typedefs_b.js │ │ │ │ │ │ │ │ ├── typedefs_c.html │ │ │ │ │ │ │ │ ├── typedefs_c.js │ │ │ │ │ │ │ │ ├── typedefs_d.html │ │ │ │ │ │ │ │ └── typedefs_d.js │ │ │ │ │ │ │ └── tabs.css │ │ │ │ │ │ ├── man.doxy │ │ │ │ │ │ └── theme/ │ │ │ │ │ │ └── doxygen.css │ │ │ │ │ ├── glm/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── common.hpp │ │ │ │ │ │ ├── detail/ │ │ │ │ │ │ │ ├── _features.hpp │ │ │ │ │ │ │ ├── _fixes.hpp │ │ │ │ │ │ │ ├── _noise.hpp │ │ │ │ │ │ │ ├── _swizzle.hpp │ │ │ │ │ │ │ ├── _swizzle_func.hpp │ │ │ │ │ │ │ ├── _vectorize.hpp │ │ │ │ │ │ │ ├── compute_common.hpp │ │ │ │ │ │ │ ├── compute_vector_relational.hpp │ │ │ │ │ │ │ ├── func_common.inl │ │ │ │ │ │ │ ├── func_common_simd.inl │ │ │ │ │ │ │ ├── func_exponential.inl │ │ │ │ │ │ │ ├── func_exponential_simd.inl │ │ │ │ │ │ │ ├── func_geometric.inl │ │ │ │ │ │ │ ├── func_geometric_simd.inl │ │ │ │ │ │ │ ├── func_integer.inl │ │ │ │ │ │ │ ├── func_integer_simd.inl │ │ │ │ │ │ │ ├── func_matrix.inl │ │ │ │ │ │ │ ├── func_matrix_simd.inl │ │ │ │ │ │ │ ├── func_packing.inl │ │ │ │ │ │ │ ├── func_packing_simd.inl │ │ │ │ │ │ │ ├── func_trigonometric.inl │ │ │ │ │ │ │ ├── func_trigonometric_simd.inl │ │ │ │ │ │ │ ├── func_vector_relational.inl │ │ │ │ │ │ │ ├── func_vector_relational_simd.inl │ │ │ │ │ │ │ ├── glm.cpp │ │ │ │ │ │ │ ├── qualifier.hpp │ │ │ │ │ │ │ ├── setup.hpp │ │ │ │ │ │ │ ├── type_float.hpp │ │ │ │ │ │ │ ├── type_half.hpp │ │ │ │ │ │ │ ├── type_half.inl │ │ │ │ │ │ │ ├── type_mat2x2.hpp │ │ │ │ │ │ │ ├── type_mat2x2.inl │ │ │ │ │ │ │ ├── type_mat2x3.hpp │ │ │ │ │ │ │ ├── type_mat2x3.inl │ │ │ │ │ │ │ ├── type_mat2x4.hpp │ │ │ │ │ │ │ ├── type_mat2x4.inl │ │ │ │ │ │ │ ├── type_mat3x2.hpp │ │ │ │ │ │ │ ├── type_mat3x2.inl │ │ │ │ │ │ │ ├── type_mat3x3.hpp │ │ │ │ │ │ │ ├── type_mat3x3.inl │ │ │ │ │ │ │ ├── type_mat3x4.hpp │ │ │ │ │ │ │ ├── type_mat3x4.inl │ │ │ │ │ │ │ ├── type_mat4x2.hpp │ │ │ │ │ │ │ ├── type_mat4x2.inl │ │ │ │ │ │ │ ├── type_mat4x3.hpp │ │ │ │ │ │ │ ├── type_mat4x3.inl │ │ │ │ │ │ │ ├── type_mat4x4.hpp │ │ │ │ │ │ │ ├── type_mat4x4.inl │ │ │ │ │ │ │ ├── type_mat4x4_simd.inl │ │ │ │ │ │ │ ├── type_quat.hpp │ │ │ │ │ │ │ ├── type_quat.inl │ │ │ │ │ │ │ ├── type_quat_simd.inl │ │ │ │ │ │ │ ├── type_vec1.hpp │ │ │ │ │ │ │ ├── type_vec1.inl │ │ │ │ │ │ │ ├── type_vec2.hpp │ │ │ │ │ │ │ ├── type_vec2.inl │ │ │ │ │ │ │ ├── type_vec3.hpp │ │ │ │ │ │ │ ├── type_vec3.inl │ │ │ │ │ │ │ ├── type_vec4.hpp │ │ │ │ │ │ │ ├── type_vec4.inl │ │ │ │ │ │ │ └── type_vec4_simd.inl │ │ │ │ │ │ ├── exponential.hpp │ │ │ │ │ │ ├── ext/ │ │ │ │ │ │ │ ├── _matrix_vectorize.hpp │ │ │ │ │ │ │ ├── matrix_clip_space.hpp │ │ │ │ │ │ │ ├── matrix_clip_space.inl │ │ │ │ │ │ │ ├── matrix_common.hpp │ │ │ │ │ │ │ ├── matrix_common.inl │ │ │ │ │ │ │ ├── matrix_double2x2.hpp │ │ │ │ │ │ │ ├── matrix_double2x2_precision.hpp │ │ │ │ │ │ │ ├── matrix_double2x3.hpp │ │ │ │ │ │ │ ├── matrix_double2x3_precision.hpp │ │ │ │ │ │ │ ├── matrix_double2x4.hpp │ │ │ │ │ │ │ ├── matrix_double2x4_precision.hpp │ │ │ │ │ │ │ ├── matrix_double3x2.hpp │ │ │ │ │ │ │ ├── matrix_double3x2_precision.hpp │ │ │ │ │ │ │ ├── matrix_double3x3.hpp │ │ │ │ │ │ │ ├── matrix_double3x3_precision.hpp │ │ │ │ │ │ │ ├── matrix_double3x4.hpp │ │ │ │ │ │ │ ├── matrix_double3x4_precision.hpp │ │ │ │ │ │ │ ├── matrix_double4x2.hpp │ │ │ │ │ │ │ ├── matrix_double4x2_precision.hpp │ │ │ │ │ │ │ ├── matrix_double4x3.hpp │ │ │ │ │ │ │ ├── matrix_double4x3_precision.hpp │ │ │ │ │ │ │ ├── matrix_double4x4.hpp │ │ │ │ │ │ │ ├── matrix_double4x4_precision.hpp │ │ │ │ │ │ │ ├── matrix_float2x2.hpp │ │ │ │ │ │ │ ├── matrix_float2x2_precision.hpp │ │ │ │ │ │ │ ├── matrix_float2x3.hpp │ │ │ │ │ │ │ ├── matrix_float2x3_precision.hpp │ │ │ │ │ │ │ ├── matrix_float2x4.hpp │ │ │ │ │ │ │ ├── matrix_float2x4_precision.hpp │ │ │ │ │ │ │ ├── matrix_float3x2.hpp │ │ │ │ │ │ │ ├── matrix_float3x2_precision.hpp │ │ │ │ │ │ │ ├── matrix_float3x3.hpp │ │ │ │ │ │ │ ├── matrix_float3x3_precision.hpp │ │ │ │ │ │ │ ├── matrix_float3x4.hpp │ │ │ │ │ │ │ ├── matrix_float3x4_precision.hpp │ │ │ │ │ │ │ ├── matrix_float4x2.hpp │ │ │ │ │ │ │ ├── matrix_float4x2_precision.hpp │ │ │ │ │ │ │ ├── matrix_float4x3.hpp │ │ │ │ │ │ │ ├── matrix_float4x3_precision.hpp │ │ │ │ │ │ │ ├── matrix_float4x4.hpp │ │ │ │ │ │ │ ├── matrix_float4x4_precision.hpp │ │ │ │ │ │ │ ├── matrix_int2x2.hpp │ │ │ │ │ │ │ ├── matrix_int2x2_sized.hpp │ │ │ │ │ │ │ ├── matrix_int2x3.hpp │ │ │ │ │ │ │ ├── matrix_int2x3_sized.hpp │ │ │ │ │ │ │ ├── matrix_int2x4.hpp │ │ │ │ │ │ │ ├── matrix_int2x4_sized.hpp │ │ │ │ │ │ │ ├── matrix_int3x2.hpp │ │ │ │ │ │ │ ├── matrix_int3x2_sized.hpp │ │ │ │ │ │ │ ├── matrix_int3x3.hpp │ │ │ │ │ │ │ ├── matrix_int3x3_sized.hpp │ │ │ │ │ │ │ ├── matrix_int3x4.hpp │ │ │ │ │ │ │ ├── matrix_int3x4_sized.hpp │ │ │ │ │ │ │ ├── matrix_int4x2.hpp │ │ │ │ │ │ │ ├── matrix_int4x2_sized.hpp │ │ │ │ │ │ │ ├── matrix_int4x3.hpp │ │ │ │ │ │ │ ├── matrix_int4x3_sized.hpp │ │ │ │ │ │ │ ├── matrix_int4x4.hpp │ │ │ │ │ │ │ ├── matrix_int4x4_sized.hpp │ │ │ │ │ │ │ ├── matrix_integer.hpp │ │ │ │ │ │ │ ├── matrix_integer.inl │ │ │ │ │ │ │ ├── matrix_projection.hpp │ │ │ │ │ │ │ ├── matrix_projection.inl │ │ │ │ │ │ │ ├── matrix_relational.hpp │ │ │ │ │ │ │ ├── matrix_relational.inl │ │ │ │ │ │ │ ├── matrix_transform.hpp │ │ │ │ │ │ │ ├── matrix_transform.inl │ │ │ │ │ │ │ ├── matrix_uint2x2.hpp │ │ │ │ │ │ │ ├── matrix_uint2x2_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint2x3.hpp │ │ │ │ │ │ │ ├── matrix_uint2x3_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint2x4.hpp │ │ │ │ │ │ │ ├── matrix_uint2x4_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint3x2.hpp │ │ │ │ │ │ │ ├── matrix_uint3x2_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint3x3.hpp │ │ │ │ │ │ │ ├── matrix_uint3x3_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint3x4.hpp │ │ │ │ │ │ │ ├── matrix_uint3x4_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint4x2.hpp │ │ │ │ │ │ │ ├── matrix_uint4x2_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint4x3.hpp │ │ │ │ │ │ │ ├── matrix_uint4x3_sized.hpp │ │ │ │ │ │ │ ├── matrix_uint4x4.hpp │ │ │ │ │ │ │ ├── matrix_uint4x4_sized.hpp │ │ │ │ │ │ │ ├── quaternion_common.hpp │ │ │ │ │ │ │ ├── quaternion_common.inl │ │ │ │ │ │ │ ├── quaternion_common_simd.inl │ │ │ │ │ │ │ ├── quaternion_double.hpp │ │ │ │ │ │ │ ├── quaternion_double_precision.hpp │ │ │ │ │ │ │ ├── quaternion_exponential.hpp │ │ │ │ │ │ │ ├── quaternion_exponential.inl │ │ │ │ │ │ │ ├── quaternion_float.hpp │ │ │ │ │ │ │ ├── quaternion_float_precision.hpp │ │ │ │ │ │ │ ├── quaternion_geometric.hpp │ │ │ │ │ │ │ ├── quaternion_geometric.inl │ │ │ │ │ │ │ ├── quaternion_relational.hpp │ │ │ │ │ │ │ ├── quaternion_relational.inl │ │ │ │ │ │ │ ├── quaternion_transform.hpp │ │ │ │ │ │ │ ├── quaternion_transform.inl │ │ │ │ │ │ │ ├── quaternion_trigonometric.hpp │ │ │ │ │ │ │ ├── quaternion_trigonometric.inl │ │ │ │ │ │ │ ├── scalar_common.hpp │ │ │ │ │ │ │ ├── scalar_common.inl │ │ │ │ │ │ │ ├── scalar_constants.hpp │ │ │ │ │ │ │ ├── scalar_constants.inl │ │ │ │ │ │ │ ├── scalar_int_sized.hpp │ │ │ │ │ │ │ ├── scalar_integer.hpp │ │ │ │ │ │ │ ├── scalar_integer.inl │ │ │ │ │ │ │ ├── scalar_packing.hpp │ │ │ │ │ │ │ ├── scalar_packing.inl │ │ │ │ │ │ │ ├── scalar_reciprocal.hpp │ │ │ │ │ │ │ ├── scalar_reciprocal.inl │ │ │ │ │ │ │ ├── scalar_relational.hpp │ │ │ │ │ │ │ ├── scalar_relational.inl │ │ │ │ │ │ │ ├── scalar_uint_sized.hpp │ │ │ │ │ │ │ ├── scalar_ulp.hpp │ │ │ │ │ │ │ ├── scalar_ulp.inl │ │ │ │ │ │ │ ├── vector_bool1.hpp │ │ │ │ │ │ │ ├── vector_bool1_precision.hpp │ │ │ │ │ │ │ ├── vector_bool2.hpp │ │ │ │ │ │ │ ├── vector_bool2_precision.hpp │ │ │ │ │ │ │ ├── vector_bool3.hpp │ │ │ │ │ │ │ ├── vector_bool3_precision.hpp │ │ │ │ │ │ │ ├── vector_bool4.hpp │ │ │ │ │ │ │ ├── vector_bool4_precision.hpp │ │ │ │ │ │ │ ├── vector_common.hpp │ │ │ │ │ │ │ ├── vector_common.inl │ │ │ │ │ │ │ ├── vector_double1.hpp │ │ │ │ │ │ │ ├── vector_double1_precision.hpp │ │ │ │ │ │ │ ├── vector_double2.hpp │ │ │ │ │ │ │ ├── vector_double2_precision.hpp │ │ │ │ │ │ │ ├── vector_double3.hpp │ │ │ │ │ │ │ ├── vector_double3_precision.hpp │ │ │ │ │ │ │ ├── vector_double4.hpp │ │ │ │ │ │ │ ├── vector_double4_precision.hpp │ │ │ │ │ │ │ ├── vector_float1.hpp │ │ │ │ │ │ │ ├── vector_float1_precision.hpp │ │ │ │ │ │ │ ├── vector_float2.hpp │ │ │ │ │ │ │ ├── vector_float2_precision.hpp │ │ │ │ │ │ │ ├── vector_float3.hpp │ │ │ │ │ │ │ ├── vector_float3_precision.hpp │ │ │ │ │ │ │ ├── vector_float4.hpp │ │ │ │ │ │ │ ├── vector_float4_precision.hpp │ │ │ │ │ │ │ ├── vector_int1.hpp │ │ │ │ │ │ │ ├── vector_int1_sized.hpp │ │ │ │ │ │ │ ├── vector_int2.hpp │ │ │ │ │ │ │ ├── vector_int2_sized.hpp │ │ │ │ │ │ │ ├── vector_int3.hpp │ │ │ │ │ │ │ ├── vector_int3_sized.hpp │ │ │ │ │ │ │ ├── vector_int4.hpp │ │ │ │ │ │ │ ├── vector_int4_sized.hpp │ │ │ │ │ │ │ ├── vector_integer.hpp │ │ │ │ │ │ │ ├── vector_integer.inl │ │ │ │ │ │ │ ├── vector_packing.hpp │ │ │ │ │ │ │ ├── vector_packing.inl │ │ │ │ │ │ │ ├── vector_reciprocal.hpp │ │ │ │ │ │ │ ├── vector_reciprocal.inl │ │ │ │ │ │ │ ├── vector_relational.hpp │ │ │ │ │ │ │ ├── vector_relational.inl │ │ │ │ │ │ │ ├── vector_uint1.hpp │ │ │ │ │ │ │ ├── vector_uint1_sized.hpp │ │ │ │ │ │ │ ├── vector_uint2.hpp │ │ │ │ │ │ │ ├── vector_uint2_sized.hpp │ │ │ │ │ │ │ ├── vector_uint3.hpp │ │ │ │ │ │ │ ├── vector_uint3_sized.hpp │ │ │ │ │ │ │ ├── vector_uint4.hpp │ │ │ │ │ │ │ ├── vector_uint4_sized.hpp │ │ │ │ │ │ │ ├── vector_ulp.hpp │ │ │ │ │ │ │ └── vector_ulp.inl │ │ │ │ │ │ ├── ext.hpp │ │ │ │ │ │ ├── fwd.hpp │ │ │ │ │ │ ├── geometric.hpp │ │ │ │ │ │ ├── glm.hpp │ │ │ │ │ │ ├── gtc/ │ │ │ │ │ │ │ ├── bitfield.hpp │ │ │ │ │ │ │ ├── bitfield.inl │ │ │ │ │ │ │ ├── color_space.hpp │ │ │ │ │ │ │ ├── color_space.inl │ │ │ │ │ │ │ ├── constants.hpp │ │ │ │ │ │ │ ├── constants.inl │ │ │ │ │ │ │ ├── epsilon.hpp │ │ │ │ │ │ │ ├── epsilon.inl │ │ │ │ │ │ │ ├── integer.hpp │ │ │ │ │ │ │ ├── integer.inl │ │ │ │ │ │ │ ├── matrix_access.hpp │ │ │ │ │ │ │ ├── matrix_access.inl │ │ │ │ │ │ │ ├── matrix_integer.hpp │ │ │ │ │ │ │ ├── matrix_inverse.hpp │ │ │ │ │ │ │ ├── matrix_inverse.inl │ │ │ │ │ │ │ ├── matrix_transform.hpp │ │ │ │ │ │ │ ├── matrix_transform.inl │ │ │ │ │ │ │ ├── noise.hpp │ │ │ │ │ │ │ ├── noise.inl │ │ │ │ │ │ │ ├── packing.hpp │ │ │ │ │ │ │ ├── packing.inl │ │ │ │ │ │ │ ├── quaternion.hpp │ │ │ │ │ │ │ ├── quaternion.inl │ │ │ │ │ │ │ ├── quaternion_simd.inl │ │ │ │ │ │ │ ├── random.hpp │ │ │ │ │ │ │ ├── random.inl │ │ │ │ │ │ │ ├── reciprocal.hpp │ │ │ │ │ │ │ ├── round.hpp │ │ │ │ │ │ │ ├── round.inl │ │ │ │ │ │ │ ├── type_aligned.hpp │ │ │ │ │ │ │ ├── type_precision.hpp │ │ │ │ │ │ │ ├── type_precision.inl │ │ │ │ │ │ │ ├── type_ptr.hpp │ │ │ │ │ │ │ ├── type_ptr.inl │ │ │ │ │ │ │ ├── ulp.hpp │ │ │ │ │ │ │ ├── ulp.inl │ │ │ │ │ │ │ └── vec1.hpp │ │ │ │ │ │ ├── gtx/ │ │ │ │ │ │ │ ├── associated_min_max.hpp │ │ │ │ │ │ │ ├── associated_min_max.inl │ │ │ │ │ │ │ ├── bit.hpp │ │ │ │ │ │ │ ├── bit.inl │ │ │ │ │ │ │ ├── closest_point.hpp │ │ │ │ │ │ │ ├── closest_point.inl │ │ │ │ │ │ │ ├── color_encoding.hpp │ │ │ │ │ │ │ ├── color_encoding.inl │ │ │ │ │ │ │ ├── color_space.hpp │ │ │ │ │ │ │ ├── color_space.inl │ │ │ │ │ │ │ ├── color_space_YCoCg.hpp │ │ │ │ │ │ │ ├── color_space_YCoCg.inl │ │ │ │ │ │ │ ├── common.hpp │ │ │ │ │ │ │ ├── common.inl │ │ │ │ │ │ │ ├── compatibility.hpp │ │ │ │ │ │ │ ├── compatibility.inl │ │ │ │ │ │ │ ├── component_wise.hpp │ │ │ │ │ │ │ ├── component_wise.inl │ │ │ │ │ │ │ ├── dual_quaternion.hpp │ │ │ │ │ │ │ ├── dual_quaternion.inl │ │ │ │ │ │ │ ├── easing.hpp │ │ │ │ │ │ │ ├── easing.inl │ │ │ │ │ │ │ ├── euler_angles.hpp │ │ │ │ │ │ │ ├── euler_angles.inl │ │ │ │ │ │ │ ├── extend.hpp │ │ │ │ │ │ │ ├── extend.inl │ │ │ │ │ │ │ ├── extended_min_max.hpp │ │ │ │ │ │ │ ├── extended_min_max.inl │ │ │ │ │ │ │ ├── exterior_product.hpp │ │ │ │ │ │ │ ├── exterior_product.inl │ │ │ │ │ │ │ ├── fast_exponential.hpp │ │ │ │ │ │ │ ├── fast_exponential.inl │ │ │ │ │ │ │ ├── fast_square_root.hpp │ │ │ │ │ │ │ ├── fast_square_root.inl │ │ │ │ │ │ │ ├── fast_trigonometry.hpp │ │ │ │ │ │ │ ├── fast_trigonometry.inl │ │ │ │ │ │ │ ├── float_notmalize.inl │ │ │ │ │ │ │ ├── functions.hpp │ │ │ │ │ │ │ ├── functions.inl │ │ │ │ │ │ │ ├── gradient_paint.hpp │ │ │ │ │ │ │ ├── gradient_paint.inl │ │ │ │ │ │ │ ├── handed_coordinate_space.hpp │ │ │ │ │ │ │ ├── handed_coordinate_space.inl │ │ │ │ │ │ │ ├── hash.hpp │ │ │ │ │ │ │ ├── hash.inl │ │ │ │ │ │ │ ├── integer.hpp │ │ │ │ │ │ │ ├── integer.inl │ │ │ │ │ │ │ ├── intersect.hpp │ │ │ │ │ │ │ ├── intersect.inl │ │ │ │ │ │ │ ├── io.hpp │ │ │ │ │ │ │ ├── io.inl │ │ │ │ │ │ │ ├── log_base.hpp │ │ │ │ │ │ │ ├── log_base.inl │ │ │ │ │ │ │ ├── matrix_cross_product.hpp │ │ │ │ │ │ │ ├── matrix_cross_product.inl │ │ │ │ │ │ │ ├── matrix_decompose.hpp │ │ │ │ │ │ │ ├── matrix_decompose.inl │ │ │ │ │ │ │ ├── matrix_factorisation.hpp │ │ │ │ │ │ │ ├── matrix_factorisation.inl │ │ │ │ │ │ │ ├── matrix_interpolation.hpp │ │ │ │ │ │ │ ├── matrix_interpolation.inl │ │ │ │ │ │ │ ├── matrix_major_storage.hpp │ │ │ │ │ │ │ ├── matrix_major_storage.inl │ │ │ │ │ │ │ ├── matrix_operation.hpp │ │ │ │ │ │ │ ├── matrix_operation.inl │ │ │ │ │ │ │ ├── matrix_query.hpp │ │ │ │ │ │ │ ├── matrix_query.inl │ │ │ │ │ │ │ ├── matrix_transform_2d.hpp │ │ │ │ │ │ │ ├── matrix_transform_2d.inl │ │ │ │ │ │ │ ├── mixed_product.hpp │ │ │ │ │ │ │ ├── mixed_product.inl │ │ │ │ │ │ │ ├── norm.hpp │ │ │ │ │ │ │ ├── norm.inl │ │ │ │ │ │ │ ├── normal.hpp │ │ │ │ │ │ │ ├── normal.inl │ │ │ │ │ │ │ ├── normalize_dot.hpp │ │ │ │ │ │ │ ├── normalize_dot.inl │ │ │ │ │ │ │ ├── number_precision.hpp │ │ │ │ │ │ │ ├── number_precision.inl │ │ │ │ │ │ │ ├── optimum_pow.hpp │ │ │ │ │ │ │ ├── optimum_pow.inl │ │ │ │ │ │ │ ├── orthonormalize.hpp │ │ │ │ │ │ │ ├── orthonormalize.inl │ │ │ │ │ │ │ ├── pca.hpp │ │ │ │ │ │ │ ├── pca.inl │ │ │ │ │ │ │ ├── perpendicular.hpp │ │ │ │ │ │ │ ├── perpendicular.inl │ │ │ │ │ │ │ ├── polar_coordinates.hpp │ │ │ │ │ │ │ ├── polar_coordinates.inl │ │ │ │ │ │ │ ├── projection.hpp │ │ │ │ │ │ │ ├── projection.inl │ │ │ │ │ │ │ ├── quaternion.hpp │ │ │ │ │ │ │ ├── quaternion.inl │ │ │ │ │ │ │ ├── range.hpp │ │ │ │ │ │ │ ├── raw_data.hpp │ │ │ │ │ │ │ ├── raw_data.inl │ │ │ │ │ │ │ ├── rotate_normalized_axis.hpp │ │ │ │ │ │ │ ├── rotate_normalized_axis.inl │ │ │ │ │ │ │ ├── rotate_vector.hpp │ │ │ │ │ │ │ ├── rotate_vector.inl │ │ │ │ │ │ │ ├── scalar_multiplication.hpp │ │ │ │ │ │ │ ├── scalar_relational.hpp │ │ │ │ │ │ │ ├── scalar_relational.inl │ │ │ │ │ │ │ ├── spline.hpp │ │ │ │ │ │ │ ├── spline.inl │ │ │ │ │ │ │ ├── std_based_type.hpp │ │ │ │ │ │ │ ├── std_based_type.inl │ │ │ │ │ │ │ ├── string_cast.hpp │ │ │ │ │ │ │ ├── string_cast.inl │ │ │ │ │ │ │ ├── texture.hpp │ │ │ │ │ │ │ ├── texture.inl │ │ │ │ │ │ │ ├── transform.hpp │ │ │ │ │ │ │ ├── transform.inl │ │ │ │ │ │ │ ├── transform2.hpp │ │ │ │ │ │ │ ├── transform2.inl │ │ │ │ │ │ │ ├── type_aligned.hpp │ │ │ │ │ │ │ ├── type_aligned.inl │ │ │ │ │ │ │ ├── type_trait.hpp │ │ │ │ │ │ │ ├── type_trait.inl │ │ │ │ │ │ │ ├── vec_swizzle.hpp │ │ │ │ │ │ │ ├── vector_angle.hpp │ │ │ │ │ │ │ ├── vector_angle.inl │ │ │ │ │ │ │ ├── vector_query.hpp │ │ │ │ │ │ │ ├── vector_query.inl │ │ │ │ │ │ │ ├── wrap.hpp │ │ │ │ │ │ │ └── wrap.inl │ │ │ │ │ │ ├── integer.hpp │ │ │ │ │ │ ├── mat2x2.hpp │ │ │ │ │ │ ├── mat2x3.hpp │ │ │ │ │ │ ├── mat2x4.hpp │ │ │ │ │ │ ├── mat3x2.hpp │ │ │ │ │ │ ├── mat3x3.hpp │ │ │ │ │ │ ├── mat3x4.hpp │ │ │ │ │ │ ├── mat4x2.hpp │ │ │ │ │ │ ├── mat4x3.hpp │ │ │ │ │ │ ├── mat4x4.hpp │ │ │ │ │ │ ├── matrix.hpp │ │ │ │ │ │ ├── packing.hpp │ │ │ │ │ │ ├── simd/ │ │ │ │ │ │ │ ├── common.h │ │ │ │ │ │ │ ├── exponential.h │ │ │ │ │ │ │ ├── geometric.h │ │ │ │ │ │ │ ├── integer.h │ │ │ │ │ │ │ ├── matrix.h │ │ │ │ │ │ │ ├── neon.h │ │ │ │ │ │ │ ├── packing.h │ │ │ │ │ │ │ ├── platform.h │ │ │ │ │ │ │ ├── trigonometric.h │ │ │ │ │ │ │ └── vector_relational.h │ │ │ │ │ │ ├── trigonometric.hpp │ │ │ │ │ │ ├── vec2.hpp │ │ │ │ │ │ ├── vec3.hpp │ │ │ │ │ │ ├── vec4.hpp │ │ │ │ │ │ └── vector_relational.hpp │ │ │ │ │ ├── manual.md │ │ │ │ │ ├── readme.md │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── bug/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ └── bug_ms_vec_static.cpp │ │ │ │ │ │ ├── cmake/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ └── test_find_glm.cpp │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ ├── core_cpp_constexpr.cpp │ │ │ │ │ │ │ ├── core_cpp_defaulted_ctor.cpp │ │ │ │ │ │ │ ├── core_force_aligned_gentypes.cpp │ │ │ │ │ │ │ ├── core_force_arch_unknown.cpp │ │ │ │ │ │ │ ├── core_force_compiler_unknown.cpp │ │ │ │ │ │ │ ├── core_force_ctor_init.cpp │ │ │ │ │ │ │ ├── core_force_cxx03.cpp │ │ │ │ │ │ │ ├── core_force_cxx98.cpp │ │ │ │ │ │ │ ├── core_force_cxx_unknown.cpp │ │ │ │ │ │ │ ├── core_force_depth_zero_to_one.cpp │ │ │ │ │ │ │ ├── core_force_explicit_ctor.cpp │ │ │ │ │ │ │ ├── core_force_inline.cpp │ │ │ │ │ │ │ ├── core_force_left_handed.cpp │ │ │ │ │ │ │ ├── core_force_platform_unknown.cpp │ │ │ │ │ │ │ ├── core_force_pure.cpp │ │ │ │ │ │ │ ├── core_force_quat_xyzw.cpp │ │ │ │ │ │ │ ├── core_force_size_t_length.cpp │ │ │ │ │ │ │ ├── core_force_unrestricted_gentype.cpp │ │ │ │ │ │ │ ├── core_force_xyzw_only.cpp │ │ │ │ │ │ │ ├── core_func_common.cpp │ │ │ │ │ │ │ ├── core_func_exponential.cpp │ │ │ │ │ │ │ ├── core_func_geometric.cpp │ │ │ │ │ │ │ ├── core_func_integer.cpp │ │ │ │ │ │ │ ├── core_func_integer_bit_count.cpp │ │ │ │ │ │ │ ├── core_func_integer_find_lsb.cpp │ │ │ │ │ │ │ ├── core_func_integer_find_msb.cpp │ │ │ │ │ │ │ ├── core_func_matrix.cpp │ │ │ │ │ │ │ ├── core_func_noise.cpp │ │ │ │ │ │ │ ├── core_func_packing.cpp │ │ │ │ │ │ │ ├── core_func_swizzle.cpp │ │ │ │ │ │ │ ├── core_func_trigonometric.cpp │ │ │ │ │ │ │ ├── core_func_vector_relational.cpp │ │ │ │ │ │ │ ├── core_setup_force_cxx98.cpp │ │ │ │ │ │ │ ├── core_setup_force_size_t_length.cpp │ │ │ │ │ │ │ ├── core_setup_message.cpp │ │ │ │ │ │ │ ├── core_setup_platform_unknown.cpp │ │ │ │ │ │ │ ├── core_setup_precision.cpp │ │ │ │ │ │ │ ├── core_type_aligned.cpp │ │ │ │ │ │ │ ├── core_type_cast.cpp │ │ │ │ │ │ │ ├── core_type_ctor.cpp │ │ │ │ │ │ │ ├── core_type_int.cpp │ │ │ │ │ │ │ ├── core_type_length.cpp │ │ │ │ │ │ │ ├── core_type_mat2x2.cpp │ │ │ │ │ │ │ ├── core_type_mat2x3.cpp │ │ │ │ │ │ │ ├── core_type_mat2x4.cpp │ │ │ │ │ │ │ ├── core_type_mat3x2.cpp │ │ │ │ │ │ │ ├── core_type_mat3x3.cpp │ │ │ │ │ │ │ ├── core_type_mat3x4.cpp │ │ │ │ │ │ │ ├── core_type_mat4x2.cpp │ │ │ │ │ │ │ ├── core_type_mat4x3.cpp │ │ │ │ │ │ │ ├── core_type_mat4x4.cpp │ │ │ │ │ │ │ ├── core_type_vec1.cpp │ │ │ │ │ │ │ ├── core_type_vec2.cpp │ │ │ │ │ │ │ ├── core_type_vec3.cpp │ │ │ │ │ │ │ └── core_type_vec4.cpp │ │ │ │ │ │ ├── ext/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ ├── ext_matrix_clip_space.cpp │ │ │ │ │ │ │ ├── ext_matrix_common.cpp │ │ │ │ │ │ │ ├── ext_matrix_int2x2_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int2x3_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int2x4_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int3x2_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int3x3_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int3x4_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int4x2_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int4x3_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_int4x4_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_integer.cpp │ │ │ │ │ │ │ ├── ext_matrix_projection.cpp │ │ │ │ │ │ │ ├── ext_matrix_relational.cpp │ │ │ │ │ │ │ ├── ext_matrix_transform.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint2x2_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint2x3_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint2x4_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint3x2_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint3x3_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint3x4_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint4x2_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint4x3_sized.cpp │ │ │ │ │ │ │ ├── ext_matrix_uint4x4_sized.cpp │ │ │ │ │ │ │ ├── ext_quaternion_common.cpp │ │ │ │ │ │ │ ├── ext_quaternion_exponential.cpp │ │ │ │ │ │ │ ├── ext_quaternion_geometric.cpp │ │ │ │ │ │ │ ├── ext_quaternion_relational.cpp │ │ │ │ │ │ │ ├── ext_quaternion_transform.cpp │ │ │ │ │ │ │ ├── ext_quaternion_trigonometric.cpp │ │ │ │ │ │ │ ├── ext_quaternion_type.cpp │ │ │ │ │ │ │ ├── ext_scalar_common.cpp │ │ │ │ │ │ │ ├── ext_scalar_constants.cpp │ │ │ │ │ │ │ ├── ext_scalar_int_sized.cpp │ │ │ │ │ │ │ ├── ext_scalar_integer.cpp │ │ │ │ │ │ │ ├── ext_scalar_packing.cpp │ │ │ │ │ │ │ ├── ext_scalar_reciprocal.cpp │ │ │ │ │ │ │ ├── ext_scalar_relational.cpp │ │ │ │ │ │ │ ├── ext_scalar_uint_sized.cpp │ │ │ │ │ │ │ ├── ext_scalar_ulp.cpp │ │ │ │ │ │ │ ├── ext_vec1.cpp │ │ │ │ │ │ │ ├── ext_vector_bool1.cpp │ │ │ │ │ │ │ ├── ext_vector_common.cpp │ │ │ │ │ │ │ ├── ext_vector_iec559.cpp │ │ │ │ │ │ │ ├── ext_vector_int1_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_int2_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_int3_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_int4_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_integer.cpp │ │ │ │ │ │ │ ├── ext_vector_integer_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_packing.cpp │ │ │ │ │ │ │ ├── ext_vector_reciprocal.cpp │ │ │ │ │ │ │ ├── ext_vector_relational.cpp │ │ │ │ │ │ │ ├── ext_vector_uint1_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_uint2_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_uint3_sized.cpp │ │ │ │ │ │ │ ├── ext_vector_uint4_sized.cpp │ │ │ │ │ │ │ └── ext_vector_ulp.cpp │ │ │ │ │ │ ├── glm.cppcheck │ │ │ │ │ │ ├── gtc/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ ├── gtc_bitfield.cpp │ │ │ │ │ │ │ ├── gtc_color_space.cpp │ │ │ │ │ │ │ ├── gtc_constants.cpp │ │ │ │ │ │ │ ├── gtc_epsilon.cpp │ │ │ │ │ │ │ ├── gtc_integer.cpp │ │ │ │ │ │ │ ├── gtc_matrix_access.cpp │ │ │ │ │ │ │ ├── gtc_matrix_integer.cpp │ │ │ │ │ │ │ ├── gtc_matrix_inverse.cpp │ │ │ │ │ │ │ ├── gtc_matrix_transform.cpp │ │ │ │ │ │ │ ├── gtc_noise.cpp │ │ │ │ │ │ │ ├── gtc_packing.cpp │ │ │ │ │ │ │ ├── gtc_quaternion.cpp │ │ │ │ │ │ │ ├── gtc_random.cpp │ │ │ │ │ │ │ ├── gtc_reciprocal.cpp │ │ │ │ │ │ │ ├── gtc_round.cpp │ │ │ │ │ │ │ ├── gtc_type_aligned.cpp │ │ │ │ │ │ │ ├── gtc_type_precision.cpp │ │ │ │ │ │ │ ├── gtc_type_ptr.cpp │ │ │ │ │ │ │ ├── gtc_ulp.cpp │ │ │ │ │ │ │ ├── gtc_user_defined_types.cpp │ │ │ │ │ │ │ └── gtc_vec1.cpp │ │ │ │ │ │ ├── gtx/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ ├── gtx.cpp │ │ │ │ │ │ │ ├── gtx_associated_min_max.cpp │ │ │ │ │ │ │ ├── gtx_closest_point.cpp │ │ │ │ │ │ │ ├── gtx_color_encoding.cpp │ │ │ │ │ │ │ ├── gtx_color_space.cpp │ │ │ │ │ │ │ ├── gtx_color_space_YCoCg.cpp │ │ │ │ │ │ │ ├── gtx_common.cpp │ │ │ │ │ │ │ ├── gtx_compatibility.cpp │ │ │ │ │ │ │ ├── gtx_component_wise.cpp │ │ │ │ │ │ │ ├── gtx_dual_quaternion.cpp │ │ │ │ │ │ │ ├── gtx_easing.cpp │ │ │ │ │ │ │ ├── gtx_euler_angle.cpp │ │ │ │ │ │ │ ├── gtx_extend.cpp │ │ │ │ │ │ │ ├── gtx_extended_min_max.cpp │ │ │ │ │ │ │ ├── gtx_extented_min_max.cpp │ │ │ │ │ │ │ ├── gtx_exterior_product.cpp │ │ │ │ │ │ │ ├── gtx_fast_exponential.cpp │ │ │ │ │ │ │ ├── gtx_fast_square_root.cpp │ │ │ │ │ │ │ ├── gtx_fast_trigonometry.cpp │ │ │ │ │ │ │ ├── gtx_functions.cpp │ │ │ │ │ │ │ ├── gtx_gradient_paint.cpp │ │ │ │ │ │ │ ├── gtx_handed_coordinate_space.cpp │ │ │ │ │ │ │ ├── gtx_hash.cpp │ │ │ │ │ │ │ ├── gtx_int_10_10_10_2.cpp │ │ │ │ │ │ │ ├── gtx_integer.cpp │ │ │ │ │ │ │ ├── gtx_intersect.cpp │ │ │ │ │ │ │ ├── gtx_io.cpp │ │ │ │ │ │ │ ├── gtx_load.cpp │ │ │ │ │ │ │ ├── gtx_log_base.cpp │ │ │ │ │ │ │ ├── gtx_matrix_cross_product.cpp │ │ │ │ │ │ │ ├── gtx_matrix_decompose.cpp │ │ │ │ │ │ │ ├── gtx_matrix_factorisation.cpp │ │ │ │ │ │ │ ├── gtx_matrix_interpolation.cpp │ │ │ │ │ │ │ ├── gtx_matrix_major_storage.cpp │ │ │ │ │ │ │ ├── gtx_matrix_operation.cpp │ │ │ │ │ │ │ ├── gtx_matrix_query.cpp │ │ │ │ │ │ │ ├── gtx_matrix_transform_2d.cpp │ │ │ │ │ │ │ ├── gtx_mixed_product.cpp │ │ │ │ │ │ │ ├── gtx_norm.cpp │ │ │ │ │ │ │ ├── gtx_normal.cpp │ │ │ │ │ │ │ ├── gtx_normalize_dot.cpp │ │ │ │ │ │ │ ├── gtx_number_precision.cpp │ │ │ │ │ │ │ ├── gtx_optimum_pow.cpp │ │ │ │ │ │ │ ├── gtx_orthonormalize.cpp │ │ │ │ │ │ │ ├── gtx_pca.cpp │ │ │ │ │ │ │ ├── gtx_perpendicular.cpp │ │ │ │ │ │ │ ├── gtx_polar_coordinates.cpp │ │ │ │ │ │ │ ├── gtx_projection.cpp │ │ │ │ │ │ │ ├── gtx_quaternion.cpp │ │ │ │ │ │ │ ├── gtx_random.cpp │ │ │ │ │ │ │ ├── gtx_range.cpp │ │ │ │ │ │ │ ├── gtx_rotate_normalized_axis.cpp │ │ │ │ │ │ │ ├── gtx_rotate_vector.cpp │ │ │ │ │ │ │ ├── gtx_scalar_multiplication.cpp │ │ │ │ │ │ │ ├── gtx_scalar_relational.cpp │ │ │ │ │ │ │ ├── gtx_simd_mat4.cpp │ │ │ │ │ │ │ ├── gtx_simd_vec4.cpp │ │ │ │ │ │ │ ├── gtx_spline.cpp │ │ │ │ │ │ │ ├── gtx_string_cast.cpp │ │ │ │ │ │ │ ├── gtx_texture.cpp │ │ │ │ │ │ │ ├── gtx_type_aligned.cpp │ │ │ │ │ │ │ ├── gtx_type_trait.cpp │ │ │ │ │ │ │ ├── gtx_vec_swizzle.cpp │ │ │ │ │ │ │ ├── gtx_vector_angle.cpp │ │ │ │ │ │ │ ├── gtx_vector_query.cpp │ │ │ │ │ │ │ └── gtx_wrap.cpp │ │ │ │ │ │ └── perf/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── perf_matrix_div.cpp │ │ │ │ │ │ ├── perf_matrix_inverse.cpp │ │ │ │ │ │ ├── perf_matrix_mul.cpp │ │ │ │ │ │ ├── perf_matrix_mul_vector.cpp │ │ │ │ │ │ ├── perf_matrix_transpose.cpp │ │ │ │ │ │ └── perf_vector_mul_matrix.cpp │ │ │ │ │ └── util/ │ │ │ │ │ ├── autoexp.txt │ │ │ │ │ └── glm.natvis │ │ │ │ └── stbi_image_write.h │ │ │ └── simple-knn/ │ │ │ ├── ext.cpp │ │ │ ├── setup.py │ │ │ ├── simple_knn/ │ │ │ │ └── .gitkeep │ │ │ ├── simple_knn.cu │ │ │ ├── simple_knn.h │ │ │ ├── spatial.cu │ │ │ └── spatial.h │ │ ├── train.py │ │ └── utils/ │ │ ├── camera_utils.py │ │ ├── general_utils.py │ │ ├── graphics_utils.py │ │ ├── image_utils.py │ │ ├── loss_utils.py │ │ ├── sh_utils.py │ │ └── system_utils.py │ ├── gs_simulation.py │ ├── material_field.py │ ├── mpm_solver_warp/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── engine_utils.py │ │ ├── mpm_solver_warp.py │ │ ├── mpm_utils.py │ │ ├── run_sand.py │ │ ├── sand_column.h5 │ │ └── warp_utils.py │ ├── particle_filling/ │ │ └── filling.py │ ├── requirements.txt │ └── utils/ │ ├── camera_view_utils.py │ ├── decode_param.py │ ├── render_utils.py │ └── transformation_utils.py ├── Wavelet-Generation/ │ ├── .gitignore │ ├── .gitmodules │ ├── data_utils/ │ │ ├── collect_stats.py │ │ ├── inspect_ranges.py │ │ └── my_data.py │ ├── models/ │ │ ├── module/ │ │ │ ├── diffusion_network.py │ │ │ ├── dwt.py │ │ │ ├── dwt_utils.py │ │ │ ├── fp16_util.py │ │ │ ├── gaussian_diffusion.py │ │ │ ├── nn.py │ │ │ └── resample.py │ │ ├── network.py │ │ └── network_gen.py │ ├── trainer/ │ │ ├── inference_combined.py │ │ ├── training_continuous_mse.py │ │ └── training_discrete.py │ └── utils/ │ ├── debugger.py │ ├── meter.py │ └── other_utils.py ├── f3rm/ │ ├── .github/ │ │ └── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── f3rm/ │ │ ├── __init__.py │ │ ├── f3rm_config.py │ │ ├── feature_datamanager.py │ │ ├── feature_field.py │ │ ├── features/ │ │ │ ├── __init__.py │ │ │ ├── clip/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── clip.py │ │ │ │ ├── interpolate.py │ │ │ │ ├── model.py │ │ │ │ └── simple_tokenizer.py │ │ │ ├── clip_extract.py │ │ │ ├── clip_sam_extract.py │ │ │ ├── dino/ │ │ │ │ ├── __init__.py │ │ │ │ └── dino_vit_extractor.py │ │ │ └── dino_extract.py │ │ ├── model.py │ │ ├── pca_colormap.py │ │ └── renderer.py │ ├── f3rm_robot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── args.py │ │ ├── assets/ │ │ │ ├── __init__.py │ │ │ ├── panda_gripper_visual.obj │ │ │ └── tasks/ │ │ │ ├── caterpillar_ear.pt │ │ │ ├── mug_handle.pt │ │ │ ├── mug_lip.pt │ │ │ ├── rack_place.pt │ │ │ └── screwdriver_handle.pt │ │ ├── collision.py │ │ ├── examples/ │ │ │ ├── __init__.py │ │ │ └── generate_task.py │ │ ├── field_adapter.py │ │ ├── initial_proposals.py │ │ ├── load.py │ │ ├── optimize.py │ │ ├── optimize_nerfacto.py │ │ ├── task.py │ │ ├── utils.py │ │ └── visualizer.py │ ├── install.sh │ ├── pyproject.toml │ ├── saved_renderers.py │ └── setup.py ├── nerfstudio/ │ ├── nerfstudio/ │ │ ├── __init__.py │ │ ├── cameras/ │ │ │ ├── __init__.py │ │ │ ├── camera_optimizers.py │ │ │ ├── camera_paths.py │ │ │ ├── camera_utils.py │ │ │ ├── cameras.py │ │ │ ├── lie_groups.py │ │ │ └── rays.py │ │ ├── configs/ │ │ │ ├── __init__.py │ │ │ ├── base_config.py │ │ │ ├── config_utils.py │ │ │ ├── dataparser_configs.py │ │ │ ├── experiment_config.py │ │ │ ├── external_methods.py │ │ │ └── method_configs.py │ │ ├── data/ │ │ │ ├── __init__.py │ │ │ ├── datamanagers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_datamanager.py │ │ │ │ ├── full_images_datamanager.py │ │ │ │ ├── parallel_datamanager.py │ │ │ │ └── random_cameras_datamanager.py │ │ │ ├── dataparsers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── arkitscenes_dataparser.py │ │ │ │ ├── base_dataparser.py │ │ │ │ ├── blender_dataparser.py │ │ │ │ ├── colmap_dataparser.py │ │ │ │ ├── dnerf_dataparser.py │ │ │ │ ├── dycheck_dataparser.py │ │ │ │ ├── instant_ngp_dataparser.py │ │ │ │ ├── minimal_dataparser.py │ │ │ │ ├── nerfosr_dataparser.py │ │ │ │ ├── nerfstudio_dataparser.py │ │ │ │ ├── nuscenes_dataparser.py │ │ │ │ ├── phototourism_dataparser.py │ │ │ │ ├── scannet_dataparser.py │ │ │ │ ├── scannetpp_dataparser.py │ │ │ │ ├── sdfstudio_dataparser.py │ │ │ │ └── sitcoms3d_dataparser.py │ │ │ ├── datasets/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_dataset.py │ │ │ │ ├── depth_dataset.py │ │ │ │ ├── sdf_dataset.py │ │ │ │ └── semantic_dataset.py │ │ │ ├── pixel_samplers.py │ │ │ ├── scene_box.py │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ ├── colmap_parsing_utils.py │ │ │ ├── data_utils.py │ │ │ ├── dataloaders.py │ │ │ ├── dataparsers_utils.py │ │ │ ├── nerfstudio_collate.py │ │ │ └── pixel_sampling_utils.py │ │ ├── engine/ │ │ │ ├── __init__.py │ │ │ ├── callbacks.py │ │ │ ├── optimizers.py │ │ │ ├── schedulers.py │ │ │ └── trainer.py │ │ ├── exporter/ │ │ │ ├── __init__.py │ │ │ ├── exporter_utils.py │ │ │ ├── marching_cubes.py │ │ │ ├── texture_utils.py │ │ │ └── tsdf_utils.py │ │ ├── field_components/ │ │ │ ├── __init__.py │ │ │ ├── activations.py │ │ │ ├── base_field_component.py │ │ │ ├── embedding.py │ │ │ ├── encodings.py │ │ │ ├── field_heads.py │ │ │ ├── mlp.py │ │ │ ├── spatial_distortions.py │ │ │ └── temporal_distortions.py │ │ ├── fields/ │ │ │ ├── __init__.py │ │ │ ├── base_field.py │ │ │ ├── density_fields.py │ │ │ ├── generfacto_field.py │ │ │ ├── nerfacto_field.py │ │ │ ├── nerfw_field.py │ │ │ ├── sdf_field.py │ │ │ ├── semantic_nerf_field.py │ │ │ ├── tensorf_field.py │ │ │ └── vanilla_nerf_field.py │ │ ├── generative/ │ │ │ ├── __init__.py │ │ │ ├── deepfloyd.py │ │ │ ├── positional_text_embeddings.py │ │ │ └── stable_diffusion.py │ │ ├── model_components/ │ │ │ ├── __init__.py │ │ │ ├── lib_bilagrid.py │ │ │ ├── losses.py │ │ │ ├── ray_generators.py │ │ │ ├── ray_samplers.py │ │ │ ├── renderers.py │ │ │ ├── scene_colliders.py │ │ │ └── shaders.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── base_model.py │ │ │ ├── base_surface_model.py │ │ │ ├── depth_nerfacto.py │ │ │ ├── generfacto.py │ │ │ ├── instant_ngp.py │ │ │ ├── mipnerf.py │ │ │ ├── nerfacto.py │ │ │ ├── neus.py │ │ │ ├── neus_facto.py │ │ │ ├── semantic_nerfw.py │ │ │ ├── splatfacto.py │ │ │ ├── tensorf.py │ │ │ └── vanilla_nerf.py │ │ ├── pipelines/ │ │ │ ├── __init__.py │ │ │ ├── base_pipeline.py │ │ │ └── dynamic_batch.py │ │ ├── plugins/ │ │ │ ├── __init__.py │ │ │ ├── registry.py │ │ │ ├── registry_dataparser.py │ │ │ └── types.py │ │ ├── process_data/ │ │ │ ├── __init__.py │ │ │ ├── base_converter_to_nerfstudio_dataset.py │ │ │ ├── colmap_converter_to_nerfstudio_dataset.py │ │ │ ├── colmap_utils.py │ │ │ ├── equirect_utils.py │ │ │ ├── hloc_utils.py │ │ │ ├── images_to_nerfstudio_dataset.py │ │ │ ├── metashape_utils.py │ │ │ ├── odm_utils.py │ │ │ ├── polycam_utils.py │ │ │ ├── process_data_utils.py │ │ │ ├── realitycapture_utils.py │ │ │ ├── record3d_utils.py │ │ │ └── video_to_nerfstudio_dataset.py │ │ ├── py.typed │ │ ├── scripts/ │ │ │ ├── __init__.py │ │ │ ├── blender/ │ │ │ │ ├── __init__.py │ │ │ │ └── nerfstudio_blender.py │ │ │ ├── completions/ │ │ │ │ ├── __init__.py │ │ │ │ ├── install.py │ │ │ │ ├── setup.bash │ │ │ │ └── setup.zsh │ │ │ ├── datasets/ │ │ │ │ ├── process_nuscenes_masks.py │ │ │ │ └── process_project_aria.py │ │ │ ├── docs/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add_nb_tags.py │ │ │ │ └── build_docs.py │ │ │ ├── downloads/ │ │ │ │ ├── __init__.py │ │ │ │ ├── download_data.py │ │ │ │ ├── eyeful_tower.py │ │ │ │ └── utils.py │ │ │ ├── eval.py │ │ │ ├── exporter.py │ │ │ ├── github/ │ │ │ │ ├── __init__.py │ │ │ │ └── run_actions.py │ │ │ ├── process_data.py │ │ │ ├── render.py │ │ │ ├── texture.py │ │ │ ├── train.py │ │ │ └── viewer/ │ │ │ ├── __init__.py │ │ │ ├── run_viewer.py │ │ │ └── sync_viser_message_defs.py │ │ ├── utils/ │ │ │ ├── __init__.py │ │ │ ├── colormaps.py │ │ │ ├── colors.py │ │ │ ├── comms.py │ │ │ ├── decorators.py │ │ │ ├── eval_utils.py │ │ │ ├── external.py │ │ │ ├── install_checks.py │ │ │ ├── io.py │ │ │ ├── math.py │ │ │ ├── misc.py │ │ │ ├── plotly_utils.py │ │ │ ├── poses.py │ │ │ ├── printing.py │ │ │ ├── profiler.py │ │ │ ├── rich_utils.py │ │ │ ├── scripts.py │ │ │ ├── tensor_dataclass.py │ │ │ └── writer.py │ │ ├── viewer/ │ │ │ ├── __init__.py │ │ │ ├── control_panel.py │ │ │ ├── export_panel.py │ │ │ ├── render_panel.py │ │ │ ├── render_state_machine.py │ │ │ ├── server/ │ │ │ │ ├── __init__.py │ │ │ │ └── viewer_elements.py │ │ │ ├── utils.py │ │ │ ├── viewer.py │ │ │ └── viewer_elements.py │ │ └── viewer_legacy/ │ │ ├── __init__.py │ │ ├── app/ │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ └── manifest.json │ │ │ ├── run_deploy.py │ │ │ ├── src/ │ │ │ │ └── themes/ │ │ │ │ └── leva_theme.json │ │ │ └── tsconfig.json │ │ ├── server/ │ │ │ ├── __init__.py │ │ │ ├── control_panel.py │ │ │ ├── gui_utils.py │ │ │ ├── path.py │ │ │ ├── render_state_machine.py │ │ │ ├── state/ │ │ │ │ ├── node.py │ │ │ │ └── state_node.py │ │ │ ├── utils.py │ │ │ ├── viewer_elements.py │ │ │ ├── viewer_state.py │ │ │ └── viewer_utils.py │ │ └── viser/ │ │ ├── __init__.py │ │ ├── gui.py │ │ ├── message_api.py │ │ ├── messages.py │ │ └── server.py │ └── pyproject.toml └── vlmx/ ├── .gitignore ├── README.md ├── quickstart.ipynb ├── setup.py └── vlmx/ ├── __init__.py ├── agent.py ├── artifact.py ├── context_agent.py ├── multimodal_incontext_agent.py ├── prompt_utils.py ├── tool_use_agent.py └── utils.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store __pycache__ # **render_output/ # **.tar.xz # **outputs/ # **.zip # **BlenderNeRF/ # **slurm_outs/ # **slurm_scripts/ # /assets/ # tmp.out # **results # .vscode # # output # *.ply # *.pyc # *.png # *.jpg # log # **output # **.so # checkpoints_*/ checkpoints_continuous_mse/ checkpoints_discrete/ # **wandb # **.glb # **cache** # **.npy # **cache** # **.npy** # **trainedweights # **nerfbaselines # **garfield** # **umi-on-legs** .env **egg-info** # *.pkl # *.log # *.cursor # # datasets/ # *.pth backup_data real_scene_data/ real_scene_models/ outputs/ real_scene_render_outputs/ mpm_sim_outputs/ inference_combined_mse_clip_results/ ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2023 edward1997104 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================


Pixie: Physics from Pixels

Project Page Arxiv paper link Twitter Thread

**[Long Le](https://vlongle.github.io/)**$^1$ · **[Ryan Lucas](https://ryanlucas3.github.io/)**$^2$ · **[Chen Wang](https://cwchenwang.github.io/)**$^1$ · **[Chuhao Chen](https://czzzzh.github.io/)**$^1$ · **[Dinesh Jayaraman](https://www.seas.upenn.edu/~dineshj/)**$^1$ · **[Eric Eaton](https://www.seas.upenn.edu/~eeaton/)**$^1$ · **[Lingjie Liu](https://lingjie0206.github.io/)**$^1$ $^1$ University of Pennsylvania · $^2$ MIT
Photorealistic 3D reconstructions (NeRF, Gaussian Splatting) capture geometry & appearance but **lack physics**. This limits 3D reconstruction to static scenes. Recently, there has been a surge of interest in integrating physics into 3D modeling. But existing test‑time optimisation methods are slow and scene‑specific. **Pixie** trains a neural network that maps pretrained visual features (i.e., CLIP) to **dense material fields** of physical properties in a single forward pass, enabling fast and generalizable physics inference and simulation. ## 🔔 Updates - **2026-03-05:** Released **PixieVerse** curated dataset on Hugging Face: [vlongle/pixieverse](https://huggingface.co/datasets/vlongle/pixieverse). - **2026-03-05:** Added direct download support for models and dataset (`scripts/download_models.py`, `scripts/download_data.py`) to avoid re-running full data mining/rendering. - **2026-03-05:** For detailed dataset download/unpack instructions and structure, see [data_readme.md](data_readme.md). ## 💡 Contents 1. [Installation](#installation) 2. [Download Models and Dataset](#download-models) 3. [Usage](#usage) 4. [VLM Labeling](#vlm-labeling) 5. [Training](#training) 6. [Common Issues](#common-issues) 7. [Citation](#citation)

⚙️ Installation

``` git clone git@github.com:vlongle/pixie.git conda create -n pixie python=3.10 conda activate pixie pip install -e . ``` Install `torch` and `torchvision` according to your cuda version (e.g., 11.8, 12.1) and the [official instruction](https://pytorch.org/). Install additional dependencies for f3rm (NeRF CLIP distilled feature field): ``` # ninja so compilation is faster! pip install ninja # Install tinycudann (may take a while) pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch # Install third-party packages pip install -e third_party/nerfstudio pip install -e third_party/f3rm # Install PyTorch3D and other dependencies pip install -v "git+https://github.com/facebookresearch/pytorch3d.git@stable" pip install viser==0.2.7 pip install tyro==0.6.6 ``` Install PhysGaussian dependencies (for MPM simulation) ``` pip install -v -e third_party/PhysGaussian/gaussian-splatting/submodules/simple-knn/ pip install -v -e third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/ ``` Install VLM utils ``` pip install -e third_party/vlmx ``` Install FlashAttention to use [Qwen2.5-VL](https://github.com/QwenLM/Qwen2.5-VL) ``` MAX_JOBS=16 pip install -v -U flash-attn --no-build-isolation ``` Install dependencies / add-ons for Blender. We use [Blender 4.3.2](https://www.blender.org/download/). 1. Install [BlenderNeRF](https://github.com/maximeraafat/BlenderNeRF) add-on and set `paths.blender_nerf_addon_path` to BlenderNeRF's zip file. 2. Install python packages for Blender. Replace the path by your actual Blender path ``` /home/{YOUR_USERNAME}/blender/blender-4.3.2-linux-x64/4.3/python/bin/python3.11 -m pip install objaverse ``` Install the [Gaussian-Splatting addon](https://github.com/ReshotAI/gaussian-splatting-blender-addon) and set [paths.blender_gs_addon_path](config/paths/default.yaml) in the config. Set the appropriate api keys and select VLM models you'd like in [config/segmentation/default.yaml](config/segmentation/default.yaml), we support OpenAI, Claude, Google's Gemini, or Qwen (local, no api needed). You can also implement more model wrappers yourself following our template!

📥 Download Models and Dataset

We provide pre-trained model checkpoints via HuggingFace Datasets. To download the models: ```bash python scripts/download_models.py ``` Model repo: [https://huggingface.co/datasets/vlongle/pixie](https://huggingface.co/datasets/vlongle/pixie) ### Download PixieVerse dataset (recommended over re-generating) If you mainly want to train/evaluate Pixie, you can skip the expensive data mining/rendering pipeline and directly download our curated PixieVerse dataset from Hugging Face: Dataset repo: [https://huggingface.co/datasets/vlongle/pixieverse](https://huggingface.co/datasets/vlongle/pixieverse) ```bash # Download archived dataset payloads python scripts/download_data.py \ --dataset-repo vlongle/pixieverse \ --dirs archives \ --local-dir /path/to/pixieverse_root ``` For quick testing, download a single class only: ```bash python scripts/download_data.py \ --dataset-repo vlongle/pixieverse \ --dirs archives \ --obj-class tree \ --local-dir /path/to/pixieverse_root ``` Then unpack archives into the standard folder structure (`data/`, `render_outputs/`, etc.): ```bash ROOT=/path/to/pixieverse_root set -euo pipefail for d in data outputs render_outputs vlm_seg_results vlm_seg_critic_results vlm_seg_mat_sample_results; do src="$ROOT/archives/$d" dst="$ROOT/$d" mkdir -p "$dst" [ -d "$src" ] || { echo "[skip] $src not found"; continue; } echo "[dir] $d" for a in "$src"/*.tar "$src"/*.tar.gz; do [ -e "$a" ] || continue echo " -> extracting $(basename "$a")" tar -xf "$a" -C "$dst" --checkpoint=2000 --checkpoint-action=echo=" ... extracted 2000 more entries" echo " <- done $(basename "$a")" done done ```

🎯 Usage

### Synthetic Objaverse ``` python pipeline.py obj_id=f420ea9edb914e1b9b7adebbacecc7d8 [physics.save_ply=false] [material_mode={vlm,neural}] ``` `save_ply=true` is slower, only used for rendering fancy phyiscs simulation in Blender. `material_mode=vlm` uses VLM for labeling the data based on our in-context tuned examples. This is how we generate our dataset! `material_mode=neural` uses our trained neural networks to produce physics predictions. This code will: 1. Download the objaverse asset `obj_id` 2. Render it in Blender using `rendering.num_images` (default 200) 3. Train a NeRF distilled CLIP field using `training_3d.nerf.max_iterations` 4. Train a gaussian splatting model using `training_3d.gaussian_splatting.max_iterations` 5. Generate a voxel feature grid from the CLIP field 6. Either - Apply the material dictionary predicted by a VLM (for generating data to train our model) `material_mode=vlm` - Use our trained UNet model to predict the physics field `material_mode=neural`. 7. Run the MPM physics solver using the physics parameters. Run ``` python render.py obj_id=f420ea9edb914e1b9b7adebbacecc7d8 ``` for fancy rendering in Blender. Check the outputs in the notebook: [nbs/pixie.ipynb](nbs/pixie.ipynb). ### Real Scene For real scene, run ``` python pipeline.py \ is_objaverse_object=false \ obj_id=bonsai \ material_mode=neural \ paths.data_dir='${paths.base_path}/real_scene_data' \ paths.outputs_dir='${paths.base_path}/real_scene_models' \ paths.render_outputs_dir='${paths.base_path}/real_scene_render_outputs' \ training.enforce_mask_consistency=false ``` Use `segmentation.neural.cache_results=true` if the latest inferene already contains `obj_id`. Check the outputs in the notebook: [nbs/real_scene.ipynb](nbs/real_scene.ipynb).

🏷️ VLM Labeling

If you already downloaded PixieVerse from Hugging Face, you can skip this section. See **Download PixieVerse dataset (recommended over re-generating)** above for the direct download + unpack instructions: [https://huggingface.co/datasets/vlongle/pixieverse](https://huggingface.co/datasets/vlongle/pixieverse) This section is only for reproducing the full data mining / rendering / VLM filtering pipeline from scratch. Below are the steps to reproduce our mining process from Objaverse. We extract high-quality single-object scenes from Objaverse for each of the 10 semantic classes. The precomputed [obj_ids_metadata.json](config/obj_ids_metadata.json) containing the list of `object_id` along with the `obj_class` and whether the object is considered `is_appropriate` (high-quality enough) by our `vlm_filtering` pipeline is provided. The preproduction steps are only provided for completeness. 1. Compute the cosine similarity between each Objaverse object name to an object class we'd like (e.g., `tree`) and keep the `top_k` for our PixieVerse dataset. ``` python data_curation/objaverse_selection.py ``` 2. Download objaverse assets ``` python data_curation/download_objaverse.py [data_curation.download.obj_class=tree] ``` 3. Render 1 view per object ``` python data_curation/render_objaverse_classes.py [data_curation.rendering.obj_class=tree] [data_curation.rendering.max_objs_per_class=1] [data_curation.rendering.timeout=80] ``` Then use VLM to filter out low-quality assets ``` python pixie/vlm_labeler/vlm_data_filtering.py [data_curation.vlm_filtering.obj_class=tree] ``` 4. Manual filtering VLM does a decent job but not perfect. We run ``` streamlit run data_curation/manual_data_filtering_correction.py [data_curation.manual_correction.obj_class=tree] ``` which creates a web browser with the discarded images and the chosen images by VLM. You can skim through them quickly and tick the checkbox to flip the label and correct the VLM. Then, click "save_changes", this creates `all_results_corrected.json` which is basically `all_results.json` but which the checked boxes objects flipped.

🎓 Training

1. Compute the normalization. ``` python third_party/Wavelet-Generation/data_utils/inspect_ranges.py ``` 2. Train the discrete and continuous 3D UNet models Train discrete: ``` python third_party/Wavelet-Generation/trainer/training_discrete.py ``` Train continuous: ``` python third_party/Wavelet-Generation/trainer/training_continuous_mse.py ``` Adjust [training.training.batch_size](config/training/default.yaml) and other params as needed. We used 6 NVIDIA RTX A6000 GPU (~49 GB) for training each model with 128 CPUs and 450 GBs of RAM. Adjust your `batch_size` and `data_worker` according to your resource availability. 3. Then run inference ``` python third_party/Wavelet-Generation/trainer/inference_combined.py [obj_id=8e24a6d4d15c4c62ae053cfa67d99e67] ``` If `obj_id` not provided, we will evaluate on the entire test set. 4. Map the predicted voxel grid to world coordinate and interpolate to gaussian splatting, then run physics simulation. Taken care of by `pipeline.py`: ``` python pipeline.py material_mode=neural obj_id=... [segmentation.neural.result_id='"YOUR_RESULT_TIME_STAMP"'] [segmentation.neural.feature_type=clip] ```

💀 Common Issues

If you ran into `UnicodeEncodeError: 'ascii' codec can't encode characters in position`, try to re-install warp_lang: ``` pip install --force-reinstall warp_lang==0.10.1 ``` If you ran into `ValueError: numpy.dtype size changed, may indicate binary incompatibility`, try to re-install numpy: ``` pip install --force-reinstall numpy==1.24.4 ``` If you run into issues installing `tinycudann`, try installing from source via `git clone ` following [their instruction](https://github.com/NVlabs/tiny-cuda-nn#pytorch-extension). If you run into issue installing gaussian-splatting submodules: ``` pip install -v -e third_party/PhysGaussian/gaussian-splatting/submodules/simple-knn/ pip install -v -e third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/ ``` Try installing without the `-e` flag. ## 😊 Acknowledgement We would like to thank the authors of [PhysGaussian](https://xpandora.github.io/PhysGaussian/), [F3RM](https://github.com/f3rm/f3rm), [Wavelet Generation](https://github.com/edward1997104/Wavelet-Generation), [Nerfstudio](https://github.com/nerfstudio-project/nerfstudio) and others for releasing their source code.

📚 Citation

If you find this codebase useful, please consider citing: ```bibtex @article{le2025pixie, title={Pixie: Fast and Generalizable Supervised Learning of 3D Physics from Pixels}, author={Le, Long and Lucas, Ryan and Wang, Chen and Chen, Chuhao and Jayaraman, Dinesh and Eaton, Eric and Liu, Lingjie}, journal={arXiv preprint arXiv:2508.17437}, year={2025} } ``` ================================================ FILE: config/config.yaml ================================================ defaults: - _self_ - paths: default - data_rendering: default - output_rendering: default - training_3d: default - training: default - voxelization: default - segmentation: default - physics: default - data_curation: default - mapping: default - override hydra/hydra_logging: disabled - override hydra/job_logging: disabled # Main object configuration obj_id: null # Required: Objaverse object ID to process obj_path: null # Optional: Path to the object file to process obj_class: null # Auto-detected from obj_id # Pipeline control overwrite: false overwrite_voxel: false material_mode: "vlm" # "vlm" or "neural" is_objaverse_object: true ================================================ FILE: config/data_curation/default.yaml ================================================ # Data Curation Configuration # Configuration for objaverse object selection and categorization # Object selection parameters objaverse_selection: top_k: 500 # Number of top objects to select per category batch_size: 128 # Batch size for encoding object names # Model configuration model: name: "all-MiniLM-L6-v2" # Sentence transformer model to use # Download parameters download: max_objs_per_class: null # Maximum number of objects to download per class (null = download all) obj_class: null # Specific object class to download (null = download all categories) processes: null # Number of processes for downloading (null = use CPU count) # Rendering parameters rendering: max_objs_per_class: null # Maximum number of objects to render per class (null = render all) obj_class: null # Specific object class to render (null = render all categories) num_gpus: 1 # Number of GPUs to use for rendering jobs_per_gpu: 1 # Number of rendering jobs to run per GPU resolution: 400 # Resolution of rendered images views: 1 # Number of views to render per object timeout: 120 # Timeout in seconds for each render job skip_existing: true # Skip objects that have already been rendered # VLM data filtering parameters vlm_filtering: obj_class: null # Specific object class to filter (null = filter all) num_workers: null # Number of parallel workers (null = use CPU count) overwrite: false # Overwrite existing results model_name: "gemini-2.0-flash-exp" # VLM model to use analyze_only: false # Only analyze existing results without running VLM # Manual data filtering correction parameters manual_correction: obj_class: null # Specific object class to correct (required) input_file: "all_results.json" # Input file name (without path) output_file: "all_results_corrected.json" # Output file name (without path) # Manual simulation validation parameters manual_sim_validation: obj_class: null # Specific object class to validate (required) input_file: "all_results_corrected.json" # Input file name (without path) output_file: "all_results_validated.json" # Output file name (without path) num_samples: -1 # Number of objects to inspect (-1 means all) sample_id: 0 # Simulation sample id used in video path grid_size: 64 # Grid size used in simulation output folder naming columns_per_row: 8 # Number of videos shown per row render_outputs_dir: null # Optional override; defaults to paths.render_outputs_dir ================================================ FILE: config/data_rendering/default.yaml ================================================ # Blender rendering parameters num_images: 200 camera_dist_min: 1.2 camera_dist_max: 1.8 transparent_bg: true scene_scale: 1.0 # Output format format: "NGP" ================================================ FILE: config/mapping/default.yaml ================================================ # Input paths pred_path: null # Path to prediction numpy array (required) mask_path: null # Path to mask numpy array (required) grid_feature_path: null # Path to original voxel grid metadata (.npz file) (required) # Output paths output_path: null # Path to save the PLY file (required) world_output_path: null # Optional: Path to save the world frame PLY file # Object information obj_id: null # Object ID (required) # Optional paths dataparser_path: null # Optional: Path to dataparser_transforms.json file, used for mapping nerf to world space coordinate ## for real-scene. For objaverse, nerf == world ================================================ FILE: config/obj_ids_metadata.json ================================================ { "003ebdf86df345d39dc166563229fb85": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is isolated, making it suitable for training data." } }, "013b0fff25ab49c08ba1195ca7d7df46": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "020f20e5150a45cbbeeb64581129a9f1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single crushed soda can, which belongs to the specified class. The quality is good, and a crushed state is relevant for physics simulation (e.g., as debris or after an impact)." } }, "030ac3c4365e4ea48584b4e808f4f2bc": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (four cans), not a single object as required." } }, "041b88d4453044d9871b0e4d32aa3a2c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two soda cans, but the requirement is to have only one single object per image." } }, "041ca9b9db8242e29ffe8246d9c6e35f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is rectangular and does not resemble a soda can. It looks more like a small fridge or cooler." } }, "046d238f335740b8a01848dc58ba3483": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the specified class. The quality is good, and the object is relevant for physics simulation (e.g., deformation, collision)." } }, "05990b201b514793adc8f609e302cf79": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the specified class. The quality is acceptable, and a crushed can is a valid state for physics simulation in a game." } }, "05e6f8ed25e74242957b34f9256ffc47": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related item from the specified class list." } }, "08129621ded8409c951bd1ae9a260127": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "081618a116f94390b02d36c1f19f24a6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a trash can, not a soda can or any related item from the specified class list." } }, "08468b5b1ca04f7dbe4bfe8cfa1a65c9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a metal cylinder, but it lacks the defining features of a soda can, such as a pull-tab top, specific shape, or branding. It looks more like a generic metal cup or container component rather than a beverage can." } }, "08be81ca5fa74718b5d95ac6a5a928f2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "09998ed235134ae39ae4435a136bcb51": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and zoomed in, making it impossible to clearly identify the object as a soda can." } }, "0a0e0b51f1a74aedb88c29882298de18": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good (clear, well-lit), and it's suitable for physics simulation in a game." } }, "0a336eadc4fc48b4b12cac03162d5195": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, causing the main body of the can to be almost invisible against the white background. Only the top is clearly discernible." } }, "0a855105a1f14bd7a82305f6cf62e5fe": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a very low-quality silhouette of a bottle with a straw, not a soda can. It lacks detail, texture, and realism, making it unsuitable for training." } }, "0a97a6e5c2894bfba2d347d333756b0e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related item from the specified class list." } }, "0aab0bb3f4d1442bbae1ff99a5a6fb01": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a vending machine/display, multiple small cans, and a floor surface), not a single isolated soda can. The primary focus is the display unit, not an individual can suitable for physics simulation." } }, "0ab233211a68479090c6888cd6929a16": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a soda can." } }, "0acc9d323119494d97ec03fff828706f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola can), which belongs to the specified class. The image quality is good, well-lit, and shows sufficient detail. It is suitable for physics simulation." } }, "0ad3407cd8104ba58f71885c0e58ca9a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related item from the specified class list." } }, "0bcc421f7cbf40c0bc15ab2c1ee555a1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the target class. The image quality is acceptable, and it's suitable for physics simulation in a game." } }, "0c05c890dc3c4fd7a741389f10f0191e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related item from the specified class list." } }, "0c0fdfaaba9249e88c63c65ce950286a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "0cb72c2493ac458f8ee9982fa3486910": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "0d15fe8f1a6c4d96958d8da0edace433": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "0db78b8bfcdb4c559b3bc8f63cbb5689": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a soda can or any related item. It appears to be a part of a faucet handle or a similar fixture, not a beverage container." } }, "0e352bdaace24f5e9a6ed4e459e85628": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it extremely difficult to identify the object as a soda can. Only a small portion of the top rim is vaguely visible against a white background." } }, "0e36874cf495472d87a7f279c43a920d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plastic wastebasket, not a soda can or any related item from the specified class list." } }, "0e69a6714fec4c7ebbd95b00c1f31ab7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a black silhouette with no texture or detail, making it impossible to identify the object clearly as a soda can or assess its quality. It lacks the necessary visual information for training purposes." } }, "0e897a1618874fb38450000ea50c6676": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can (or beverage can). The quality is good, and it's suitable for physics simulation." } }, "0eaaa5f3455b41818ee568a8f58ed9e9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good (clear, well-lit), and the object is isolated against a clean background. It is suitable for physics simulation training." } }, "0f76c28a06a8485682f3639e7606d43c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The object resembles a food can (like for soup or vegetables) due to its ridged structure, rather than a typical smooth-sided soda or beverage can. It does not clearly depict the 'soda_cans' class." } }, "0fe850f9e4a848d58aa2c59e9dbf7fe0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct soda cans, violating the requirement for depicting only a single object." } }, "10a464c915d0483ca58eff1514faa570": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the top lid of the soda can, not the entire object. This does not clearly depict the 'soda_cans' class." } }, "117490ef21d249fba0f69bdb223523f9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can against a clean background. The quality is good, and it is suitable for the specified class and physics simulation purposes." } }, "122b731d80f14411976178c6e6e6af45": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a jerrycan or fuel can, which is not a soda can or related beverage container." } }, "12395e6ea77c4f519e0bd37bb086f86f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a milk can or churn, not a soda can or beverage can as defined by the class list." } }, "126ebf50d9274597924ac25089c11181": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a glass with liquid and ice, not a soda can." } }, "12c880e2a4d0458db5f5fd1068bbb386": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not look like a soda can. It appears to be some kind of bin or holder. Also, the image quality is low due to lack of texture and rendering artifacts at the bottom." } }, "142f52dfe04c4faf8ee0cf7979a1303c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture or detail, making it difficult to clearly identify as a soda can. The object blends almost entirely with the white background." } }, "144172191b714324b2114e4d6e55b724": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone planter or urn, not a soda can or any related object from the specified class list." } }, "147de96f6b7943b9bb714f10bd6c847e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks texture or detail, making it impossible to clearly identify as a soda can. The object blends almost completely with the white background." } }, "14b2db3cae484e0eb05cfd1fc0bd121e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in and blurry, making it impossible to clearly identify the object as a soda can. It does not show the overall shape or structure necessary for recognition or physics simulation." } }, "157fd6b957894077bab3657cceeb1099": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation in a video game." } }, "15da16de22b94083a8cae8b1b4c2ddf6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an incomplete or broken soda can, with a large gap in the middle. We need images of complete objects for physics simulation training." } }, "18326cd8315c4712ab5d880efe79b44d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate for training purposes, and it represents an object commonly used in physics simulations in games." } }, "18cd592bbf8f453aaf0acfe99bd4736a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (can, lid, ice cubes, liquid spill) rather than just a single soda can. We need images depicting only the primary object." } }, "191d8ed962cd497797218fd9e042ed9d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple soda cans stacked together in a pyramid structure, not a single soda can as required. It also includes a base surface." } }, "19b47739d88b45e895f7e4cdf4a0d98e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can of good quality, suitable for the class and physics simulation." } }, "1a136f6aff0a40aea8ca1359d2b3771d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what appears to be a concrete trash receptacle or large ashtray, not a soda can or beverage can." } }, "1a5e3960db804fb881ff879194eb348c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can, which belongs to the specified class list (soda can, aluminum can, beverage can, etc.). The quality is acceptable, and the object is suitable for physics simulation in a game environment. The weathered texture adds diversity." } }, "1a67ade7bce34c0ba785f9544d460dfc": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single cylindrical can, which fits within the broader terms like 'metal can' or 'aluminum can' provided in the class description, even if it lacks specific soda can branding or top features. The quality is adequate and it represents a suitable object for physics simulation." } }, "1a837cbc14624a558841610ffcbfb445": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single soda can of good quality, suitable for the class and physics simulation." } }, "1aba5376ea5c43ec84d01b9c0f713ee3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a metal trash can, not a soda can or any related beverage container." } }, "1ac8fa7a38fb45bdb74261b63696ecad": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts an object that looks like a pot or jar with a lid, not a soda can." } }, "1b63dd4832144e89955ecf2f70e8af4b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single soda can, which belongs to the specified class. The image quality is adequate, and it depicts an object suitable for physics simulation in a game." } }, "1b812a87d8244f54ba527b8c75710327": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash can, not a soda can." } }, "1ba8e29182f54cdb949ded96bea003a0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can or wastebasket, not a soda can." } }, "1cc055b20dd7432d9a6b38feaa5f6692": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and it's suitable for physics simulation purposes in a video game." } }, "1ef9262feffb42a18ba510c6b716f063": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single aluminum beverage can, which fits the 'soda_cans' category. The quality is good, and it's isolated against a clean background. This object is suitable for physics simulation." } }, "1f48d13605314db8b62808af58a94f4d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a rectangular block, not a cylindrical soda can." } }, "1fc1828ec1904802ba39e31209c86ab9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a soda bottle, not a soda can. The requested class is specifically 'soda_cans'." } }, "214f7c1c48f64f6099c5e289aa6ae02d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a crushed soda can, which falls under the 'soda_cans' category. The quality is acceptable, and it represents a common state for this object in a game environment, making it suitable for physics simulation." } }, "21a02300bd7044d788b73e44616032fe": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is adequate, and the object is suitable for physics simulation in a video game context." } }, "21b53105b2634ef187a2228d34a7a497": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, suitable for the class. Although stylized (low-poly), it is recognizable and appropriate for video game assets. It is well-lit and clear." } }, "222a64dfd30e485cadfab49536ab2919": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The quality is good, and it's suitable for physics simulation training." } }, "223bea685f984dc1beac00fd1fda166e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low. The object lacks texture and color, and the contrast between the white object and the white background is very poor, making the object difficult to clearly distinguish." } }, "25086d394a554e9ca1017f97b6c9c729": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it difficult to clearly see the object. Only a small portion of the can top is visible, and the rest is washed out white." } }, "251e637afab14c7aa9aae071c574ed1d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object as a soda can. The quality is too low for training data." } }, "25673189b79c443aa24b85c404be95a2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily distorted and provides only a partial, warped view of the top of the soda can. It does not clearly depict the object class in a usable way for training." } }, "25b65c5b7abd4cf78e58dff08fe58602": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes." } }, "269cc79ce7ca4dcf88030e7b7151dc36": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related beverage container." } }, "26ddd2c0c3484510bd5b6c4ca7a4bed0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "27f09e90c16a41e88dd6a547f67f4b59": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and lacks any texture or detail, making it impossible to confidently identify as a soda can. It appears as a generic black cylinder, which is too low quality for training data." } }, "287068a7da8c47369112a933bea4721f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can or wastebasket, not a soda can." } }, "28c9e2e9711847398b79f58681149779": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture or detail, making it difficult to identify as a soda can. It looks like a generic white shape." } }, "28cc0955a78e4e2596e7585b90ca3be1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains more than one object (two soda cans), while the requirement is for images depicting only a single object." } }, "290f7307b65140dc8f843b4879a58f3d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single soda can of good quality, which is suitable for the requested class and physics simulation purposes." } }, "2a29aa47ffd74b6395d07cd270db4735": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can (Red Bull), which belongs to the requested class 'soda_cans'. The image quality is good, and the object is suitable for physics simulation in a game." } }, "2a6e88ffbd7a4ad796a68a899274ebf6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good (clear, well-lit), and it shows only the object against a clean background. It is suitable for physics simulation." } }, "2c4b0a5fc7614aed96edc8fe18359857": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single crushed metal can, which belongs to the requested class 'soda_cans'. The quality is acceptable and it represents a state (crushed) that adds diversity and is relevant for physics simulations." } }, "2c5933e817f14a2ca318176e28d84090": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a soda can or any related object. It appears to show a piece of crumpled material with a metallic rivet or button." } }, "2c811cf3629842dc805645f79439cf74": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation (e.g., dropping, rolling)." } }, "2d00ecddc767481ca033490560392944": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an aerosol spray can or a similar pressurized container, not a soda can/beverage can." } }, "2d80d079a75141f4a4a555aeffa1b9a4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola). Although it appears crushed or dented, this adds diversity and is still recognizable. The quality is acceptable for training data and relevant for physics simulation (e.g., deformable object)." } }, "2d92cc12ae7e448f9f508fbbde85c70e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a drink in a glass with toppings (ice cream/whipped cream, cherry, straw), not a soda can." } }, "2da946af9bdb4569852789008fd57f5e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "2dd1496c4d874a42804832b2bcdeaa92": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good (clear, well-lit) and it shows only the object against a clean background. It is suitable for physics simulation." } }, "2df5e5af39f84f489b77b26e76f6285d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image is extremely overexposed and too bright, making it difficult to discern details of the object. This low quality makes it unsuitable for training data." } }, "2e97faac48044c31839a0694915004f2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture/detail, making it difficult to identify as a soda can. The shape also appears more rectangular than cylindrical." } }, "2e9e6e123b3a40ffa0bc4336f237c94d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a white mesh basket, not a soda can. It also appears to be overexposed/too bright." } }, "2f16d399a5cd46139bc74643342ce8e7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too low. The object is heavily distorted and blurry, making it difficult to clearly identify as a soda can. It looks more like a generic crushed or melted cylinder." } }, "3001868a0c0e42d3a20d3905d796fdc3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks sufficient detail to clearly identify the object as a soda can. Only the very top rim is slightly visible against the white background." } }, "30bfa06a68a94728ba17ca3f9c99dea8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola), which belongs to the specified class. The image quality is good, and it's suitable for physics simulation in a video game." } }, "319051695c2e4cc89605eac4b8879211": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola can), which belongs to the requested class. The image quality is good, it's well-lit, and shows the object cleanly against a neutral background. It's suitable for game development and physics simulation." } }, "31fc3dc5c40143e98bd8dcf210a6237f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two soda cans, but the requirement is to have only ONE SINGLE OBJECT per image." } }, "32c47e171fc54617aef4c5696f27a7a5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola) against a clean background. The quality is good (clear, well-lit, not blurry), and it represents an object suitable for physics simulation in a video game." } }, "33d6fa3c813b445b92a24281202a47d7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "33dbd28d8f894f1091e7a4112ee20e3b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dumpster, not a soda can or any related object from the specified class list." } }, "33fb4b71dbb4421a86427d56d892587a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a watering can, not a soda can. Additionally, the image quality is very poor due to extreme overexposure, making the object difficult to see clearly." } }, "344bb30c8c02401fa0bd21e5be84eca9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a soda fountain/dispenser, not a soda can." } }, "350d0e24758449bbbab39f7375b4d0eb": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "354692b361b2406bb91deadde9f620ce": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any object, let alone a soda can. The quality is extremely low." } }, "361d58e7ef5040d28f6ae4e592949c2f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely dark and does not clearly depict a soda can. The object shown is unidentifiable and does not belong to the requested class." } }, "36c25d2118bf44488ad8d6faf7fce037": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate for training, and it's a suitable object for physics simulation in a game." } }, "36d1eb5a0384409b939a48ab04dfd201": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright. The object is barely visible and cannot be identified." } }, "37809cf8a36442b1a412abc27348ad8e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the top lid of the soda can, not the entire object. This is insufficient for representing the object class or for physics simulation training." } }, "37d3a52f078445e39c98e6274fc75848": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a can of baked beans, which is a food can, not a soda can or beverage can as requested by the class description." } }, "3809cb9cf2b74234b209cae46508df92": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (albeit opened with the tab detached, which is a common state). The quality is good, and it's suitable for physics simulation." } }, "3817d0662eba4ccfb8c0d7957f07e0c8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "3836ff67877248c2a820e6a969984aac": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts dumpsters or large trash bins, not soda cans." } }, "38b1dc2520474792801bb9a37a924b61": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional object (the blocky structure) besides the soda can. We need images depicting only the target object class." } }, "38e9b8f80ada46f0bd1b76d698d4ca37": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts trash cans, not soda cans. Additionally, the image is too bright and contains two objects instead of one." } }, "3959cdc6c8ca475eaa04f9a8d2dbf055": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the specified class. The quality is good, and the crushed state adds diversity and is relevant for physics simulation (e.g., deformation, interaction)." } }, "3964e19915c34da29815091e1d7a800c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can, suitable for the class. Although low-poly, the quality is acceptable and adds diversity. Soda cans are common objects for physics simulation in games." } }, "396d67176e4f4525a2a97a59a5f71ed8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "39f6585a56fc40cf9ce001c136b68d78": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal can, which falls under the provided class definitions (specifically 'metal can' and 'aluminum can'). Although it's crushed and looks more like a food can than a typical soda can, it is still a relevant object for the category and its state (crushed) is useful for physics simulation diversity. The image quality is good." } }, "39fc30490ae64668b86ea33c39280e20": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can shape, which is relevant to the class and suitable for physics simulation in a game." } }, "3a18261cabeb4d13b819ce5c0dc3f485": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can object against a clean background. The quality is good, and it fits the requested class 'soda_cans'. The object is suitable for physics simulation." } }, "3b4da8a238644ee7b02898096636d6f3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a soda can or any related beverage can. It appears to be a stylized container or basket, possibly a bin or part of a larger structure, with a cage-like top." } }, "3bdfbfb9277746f897b5a3b5eeab24bc": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a stylized weapon (possibly a shotgun or launcher), not a soda can." } }, "3c59065fb82f4afb83ff0b756b25547c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts an open metal can, likely a food can (like soup or beans), not a typical soda or beverage can. Soda cans have a distinct shape and opening mechanism." } }, "3c5ebe6a312c41f89c3e77e0322131c4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a box, a spotlight, papers, multiple cans) rather than depicting a single soda can in isolation." } }, "3cb28321e7784d15aea3fec16f07e6f3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in and blurry. It does not clearly depict a soda can; only a small, indistinct portion of a potentially metallic surface is visible." } }, "3d0c9c38f10b4e739db811893dbac786": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can, which fits the requested class 'soda_cans' (including terms like 'aluminum can', 'beverage can'). The image quality is good, and the object is suitable for physics simulation." } }, "3d7d352abe4e4e9a8ca048268f26c66c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The quality is acceptable for game development, and it's a suitable object for physics simulation." } }, "3d97cd65e13641a4a63f78490c748e18": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single cylindrical object consistent with the shape of a soda can or metal can. The quality is good, and it's suitable for physics simulation." } }, "3e95afcfbd394675a8d63adb344d9695": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be an old, rusted oil can or jerrycan, not a soda can or beverage can. Its shape and features (cap, handle) are inconsistent with the target class." } }, "3f025f54191749daa88eb352554b2cbe": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pack of multiple soda cans, not a single soda can as required by the instructions." } }, "3f394b237f964456aaf61a310058ec3b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can/beverage can. The quality is good, and it's suitable for physics simulation." } }, "3f9bb348efda4f769f3ddf7900f9620c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a square container, not a cylindrical soda can." } }, "408fb7a0597f47ad957db91d1821da90": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training purposes, even with the simple texture, and it's a common object for physics simulation in games." } }, "40f7d2c5d8ff47a7a2fb85dc41ff6c73": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to see the details or even the full shape of the soda can. Only the very top is barely visible." } }, "4188c24e47254ec3bebe9a46af7eefe4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, and only shows a small portion (the top) of the soda can. It does not clearly depict the full object." } }, "4189fb8e955a4999a268b071cbc7098e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate for training purposes, and it represents an object commonly used in physics simulations within video games." } }, "430aeed71ba54f35b5d49011278238f5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a planter or bin, not a soda can or any related item from the specified class list." } }, "4421768a05464242bcea4516ee686458": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor; it is excessively bright and washed out, making details difficult to discern." } }, "444380c04bf14b2c9f4166723eb25636": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and only shows the very top part of the soda can, not the full object, making it difficult to discern details and unsuitable for training." } }, "44513b83c2254f5d853a816241b022b8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a video game." } }, "4472e0073184489bbefeecc89281e735": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract drawing of an eye, not a soda can." } }, "44c888130b7d4debbfd9f5db5e3a023f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple soda cans, but the requirement is to have only ONE SINGLE object per image." } }, "4551ff1f90244f9c80c7e79a0206f717": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single, crushed metal can, which fits the description of 'aluminum can' or 'metal can' within the 'soda_cans' category. The quality is acceptable, and a crushed can is a plausible object for physics simulation in a game environment." } }, "45d76185eaa94296aa68c29abd8dcda0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can of good quality, suitable for the class and physics simulation." } }, "47c9a0cfb259423197688708494020b4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wastebasket or pen holder, not a soda can or any related item from the specified class list." } }, "47f4cbca51b841ba926baeff503a83d0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a waste bin or planter, not a soda can or any related beverage can." } }, "47f925f2aa1e4c4a8f4fe1f6f85adf7d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation. The small surface it rests on is minimal and does not detract significantly from the main object." } }, "4822e174c03c473ba922cb81d45fecb0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a trash can, not a soda can or any related beverage container." } }, "48473effcdd444c8b0413e66bbf14bef": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two soda cans, but the requirement is for images depicting only a single object." } }, "485af512e9844dbdb8543a1652792890": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it difficult to discern the details of the soda can. The object blends almost completely into the white background." } }, "4955831f8cf541fbb87fa3ce719b8d72": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a soda can or any related item like an aluminum can or beverage can. It looks more like a trash bin or a decorative container." } }, "497338f473004346a46126cf6529ad2e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable, and it's suitable for physics simulation." } }, "4ac179c3447f4636a273d8574a61a1c5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good (clear, well-lit) and it shows only the target object. Soda cans are suitable objects for physics simulations in games." } }, "4ace4fbc91124683976db7e9530f98ae": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good (clear, well-lit), and it's suitable for physics simulation in a game." } }, "4b20d55f60474ed1995509ef7292b743": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "4b6af44cf17d41eeab1076c3b99e4f5d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single soda can against a clean background. The quality is good, and it fits the requested object class. The texture is slightly stylized, but it is easily recognizable as a beverage can and adds diversity." } }, "4bb3f5a1efb64f899aede309de4d63aa": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three cans), but the requirement is for images depicting only a single object." } }, "4bb75b0b0c084a46878aaa20e9613e99": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it very difficult to discern the object's details or even confirm it is a soda can. The quality is too low for training." } }, "4c562321b4824284bccd26ac13c11e33": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and only shows a small portion (the top) of the soda can, making it difficult to recognize the full object and assess its properties. It lacks sufficient detail and completeness for training." } }, "4c6aa70a707c48b4bb0a4db932b30dda": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training purposes, and it's a common object suitable for physics simulation in games." } }, "4c78e610c0c14e4fa5a456de7f577b77": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object's shape (especially the rounded top and the gap) and texture do not resemble a typical soda can." } }, "4e0be610db9646929d8be84491f1a72f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple soda cans, but the requirement is for images depicting only a single object." } }, "4e5d012176e5459d9b8cad929999072e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "4efef883e04a45f99eb2fde1ed60e48e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/too bright, making the object almost invisible and impossible to identify clearly. The quality is too low for training." } }, "4fab339a56104e21b684693889d4586d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a soda can or any related object. It appears to be some kind of floral arrangement or offering." } }, "516f4cd684184181b5a31e3781ac0957": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the specified class. The quality is acceptable, and a crushed can is a relevant object for physics simulation in a game environment." } }, "5172a10f77964008a8e21deae03c6901": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making the soda can almost invisible and unsuitable for training data due to low quality." } }, "51ae5554073a49fd9b4961975f847707": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a soda can." } }, "5345e829c48944e6934a5a7aec414246": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a metallic box, not a soda can. The shape is rectangular, not cylindrical like a typical soda can." } }, "5465c0ae35fd4c92861e69aec6e5d81a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object as a soda can. Only the very top rim is slightly visible against the white background." } }, "5471355c677647849d4f6d495906607e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good (clear, well-lit, not blurry) and it shows only the target object against a clean background. Soda cans are common objects in games and suitable for physics simulation." } }, "54d279b8d1b94864abd6987912d73741": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "554c294a093448039a57c7d0cc713102": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a heavily damaged and rusted can, making it difficult to definitively classify as a soda can and less representative for learning typical physics parameters of the class." } }, "576e6bcadb764bb5ad91bf48d93a95a5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash bin, not a soda can." } }, "57a01efd28664881b0ea3abe8dc922b9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low; it appears blurry and lacks sharp details, making it less suitable for high-quality training data." } }, "57b87344eec2465cb0c3851ca4a38e90": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a metal trash can, not a soda can or any related item like beverage can, aluminum can, etc." } }, "584ce7acb3384c36bf252fde72063a56": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in or cropped, making it impossible to identify the object as a soda can or any related item." } }, "58e68c3c29744d629e3a9c0bfb6744ee": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks contrast, making the object almost invisible against the white background. It's impossible to clearly identify it as a soda can or assess its quality." } }, "593c4213b7f54b6cb4c0e284b9754b2d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a low-polygon geometric shape and does not resemble a soda can." } }, "5a1593091e5d40d19ac3b842bd4aaefe": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wire mesh basket or trash can, not a soda can." } }, "5a4677f178764b0388de833ce4b501a0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "5a561e2ad060465fb9452eba307a76b1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a rectangular block, not a cylindrical soda can." } }, "5a7ae8e0097c4eea85e975d34031a538": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a soda can, but also includes three floating spheres above it, which are extraneous objects. We need images depicting only the single object (the soda can)." } }, "5ae7c0b5eb0c4727a91a6dcc60fa7c60": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a can, but its shape (short and wide) is more characteristic of a food can (like tuna or pet food) rather than a soda can or beverage can, which are typically taller and narrower." } }, "5b35197337364d22935e6fd0d73864ac": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rock or mineral on a wooden base, not a soda can." } }, "5ca5518ee79d422399a30814e2a293cf": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the requested class. The quality is acceptable for game development, and the crushed state adds useful diversity for physics simulation (e.g., deformation)." } }, "5ced3dc0737a4fdbb601a6c8e281e61d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two soda cans, but the requirement is for images depicting only a single object." } }, "5df47c5d4d5b4e00a627b42221cd3392": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fire extinguisher or a similar type of canister, not a soda can." } }, "5e1c5212624041a8901dfe3503107bde": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image is too abstract and lacks the texture and details (like the top pull-tab area or metallic sheen) to be clearly identified as a soda can. It looks more like a generic cylinder or cup." } }, "5f03a624defc4596b44e0a09480615be": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cup with a lid and straw, not a soda can." } }, "5f13b7f305e144f4bc380ebc4531600d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bottle, not a soda can. The requested class is specifically for cans." } }, "5f38d9e1eeb94083adf9ad96dd906712": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can, which falls under the 'soda_cans' category (including 'aluminum can', 'beverage can', 'metal can', 'canned drink'). The image quality is good, and the object is suitable for physics simulation." } }, "5f58898e80fa4b11ab2ae9668d6aaa24": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a soda can." } }, "5fce345c30b54c58bf68413d2335c3a6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and it's suitable for physics simulation purposes in a video game." } }, "5fec4e7648e248c58748b99353ff22ab": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several cans), whereas the requirement is for a single object per image. Additionally, the objects are very small and distant in the frame, making it difficult to discern details." } }, "602dcf478b4e40e59e7a9613a13b32dd": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training purposes and it's suitable for physics simulation." } }, "608514c9154f4075924bd85351079437": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a crushed beverage can, which falls under the 'soda_cans' category (specifically 'beverage can', 'metal can'). The crushed state adds diversity and is relevant for physics simulation scenarios (e.g., litter, impact). The quality is acceptable." } }, "6118fc545f384653ba20e0ad454c6129": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a soda can. It shows generic cylindrical containers or canisters, which are not representative of the target class." } }, "61f67a262a8c4a22bcb2e9059636b6d6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The image quality is good, and it is suitable for physics simulation." } }, "626389bbefe342289b7214a5186cefb0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble a soda can or any related beverage can. It looks like a futuristic container or dispenser, possibly cut in half." } }, "640b0c8287274629a7f4ff3ce74a5999": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted looks more like a food can (e.g., for soup or vegetables) rather than a typical soda or beverage can, based on its proportions and lid design. While it is a 'metal can', it does not strongly represent the 'soda_cans' class." } }, "643479c457164b7bb9bf180f0ceb8757": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains glasses filled with liquid, not soda cans. It also depicts multiple objects instead of a single one." } }, "64577337973647b9a9b33ecb73bcc52a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can, which belongs to the 'soda_cans' class. The quality is acceptable for training purposes, and it's a relevant object for physics simulation." } }, "64719ae5723144818898a1474781a0ce": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks any texture or detail, making it impossible to identify the object as a soda can. The object blends almost entirely into the white background." } }, "65d4eef2ea6d40a38a07c5b421d1bc68": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can with good lighting and clarity. It is suitable for the requested class and for physics simulation." } }, "6656644a95fe417dba5af25d018b06e3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a white plastic basket or filter, not a soda can or anything related to the requested class." } }, "66742a2e89ca46bda24f357ccc0a0acd": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object. The object itself is also extremely small within the frame." } }, "685c0c5a9c3f4144993c4f146a527d8d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a metal trash can, not a soda can." } }, "68bcd3aba50240a3a34219003b1ed01a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soda cans), while the requirement is for images depicting cleanly ONE SINGLE OBJECT." } }, "6905e85a52cf4c5da93567e7bf487404": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making the object barely visible and unrecognizable as a soda can." } }, "6c9596a6f5d0447aa7221d0bac6c1293": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good and suitable for training data. The object is relevant for physics simulation in a video game." } }, "6d4998a63fa0496f9cd48b15ad59f463": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good (clear, well-lit) and it's suitable for physics simulation." } }, "6dfa9d77b23d448cb90d01d402c91108": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden bucket, not a soda can or any related object." } }, "70625b40007b4b6790dc6dad39b88d25": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object's shape and texture do not clearly resemble a soda can or any related beverage can. It looks more like an abstract container or cup." } }, "70ca81fe6f1546efabbfdbe5cfe81955": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable, and it's suitable for physics simulation training." } }, "710061d2426349c097e0bd59c279c333": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making the object barely visible and unrecognizable as a soda can. The quality is too low for training." } }, "710ced8a3938465197c19755f8142db3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is rectangular and blocky, not cylindrical like a soda can. It does not resemble any item in the 'soda_cans' class." } }, "715f375555634780890d84a00a2007ec": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola can) with good quality and lighting, suitable for the class 'soda_cans' and physics simulation." } }, "71669f5079874f8e95d27bbdaca0e4cc": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The quality is good, and it's suitable for physics simulation." } }, "7306d77eab4d49ceb85fc63a77f6ec70": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure or framework, not a soda can." } }, "739992f09ee34b8db3217520c31b2c2b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the target class. The quality is good, and it's suitable for physics simulation." } }, "73d6f638c8b04d5b8593eb01766d448b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a soda cup with a lid and straw, not a soda can (aluminum/metal can) as specified by the class list." } }, "757489dfb8534e40934daab25ac01da1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a small, round tin, possibly for cream or ointment, not a soda can or beverage can." } }, "76262ad4b5544dc9bec5d715001c8ded": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a video game." } }, "76c8a21063564b7fa658bf7b2819e1ce": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training data, and it's a relevant object for physics simulation in a game." } }, "7770f54f4bec4456b088b1de2f3f8818": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a glass bottle, not a soda can (which is typically made of aluminum or metal)." } }, "7801926855924780bd4269c671cf0fae": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola) belonging to the specified class. The image quality is good, and the object is suitable for physics simulation in a game." } }, "783d25f6110d440ca91b2083e0149188": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/too bright, making the object almost invisible and impossible to identify clearly as a soda can. The quality is too low for training data." } }, "78c22afa5212423690b5712b40bdfa5f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and it's suitable for physics simulation purposes." } }, "78cc4a0493974864b460bba37dc76b43": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "790fe3da984a408da1c18086b5e60bb6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plastic soda bottle, not a soda can (which is typically made of aluminum or metal)." } }, "793e4921baa1435399f8085d4b885466": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash can, not a soda can. While there might be a can inside, it is obscured and not the main subject of the image." } }, "79bc3c7436214c39ad32e03e1b164738": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola), which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "7a54b5302f40454590e876a76146ad80": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable, and the object is suitable for physics simulation in a video game." } }, "7ac7e1d92a8a45108916d1ccd0908caf": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a video game." } }, "7b1b08aaee1c43b99c2d6797a7ee9c34": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that belongs to the 'soda_cans' class (specifically, an aluminum/beverage can). The image quality is good, and the object is isolated against a clean background. Cans are common objects in physics simulations." } }, "7b29d29bb72e4bb3bd7401ab98c27915": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object as a soda can or discern any details." } }, "7b8db9739c0d4feb98c491dff882060d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a soda can." } }, "7bd87ea90ec44d73867e3a91fe7efefb": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related item from the specified class list." } }, "7daf996679c64815b48f650d1b3ff82d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation." } }, "7dd41c5905dc4244846de06845fa3784": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a severely distorted and fragmented object that is unrecognizable as a soda can or any related item. The quality is too low for training purposes." } }, "7e064d2cc7154290a771342147893621": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden structure, possibly a bin enclosure or small shed, not a soda can or any related item." } }, "81a1f27f185f4b72a379602ec10b6012": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only the top part of a can, and its proportions (very wide and short) make it look more like a food can (e.g., tuna can) rather than a typical soda can." } }, "8231fffef92d46f7ad656b773cb7486a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola), which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "82573d9b716d49679e0b47f2eaae854c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a crushed soda can, which belongs to the specified class. The quality is good, and it represents a valid state for physics simulation." } }, "8300ee896a4145a89aa3f18cfddccdbb": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game context." } }, "835a91de425147aaae2a05ea9d6ef308": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash receptacle and scattered trash, not a single soda can." } }, "83802e475bb741cab0560a10fc5b2c31": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a soda maker or a similar appliance, not a soda can itself." } }, "84ffce6116784c82b19708986b6b015d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (a soda can and a soda bottle), but the requirement is for images depicting only ONE single object." } }, "854a178a730e41398124f2bdb7c0ae74": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is rectangular and looks more like a metal post or beam, not a cylindrical soda can." } }, "854eb2eefb0b4828b2af3b2dc243136a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sphere with a space/galaxy texture, not a soda can." } }, "85b8beb2b34e496791a489b12de7803d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can, suitable for the class. The quality is adequate for training, and it represents a common object for physics simulation." } }, "8692b93aad0847cdad555d3e70c75da5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The objects in the image resemble barrels or large industrial cans rather than soda cans. Also, there are two objects present, not a single one." } }, "86fc31e805f84be28c12c43c34c56f80": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single soda can (Coca-Cola can) which belongs to the specified class. The image quality is good, and it's a suitable object for physics simulation in a game." } }, "87930f0080814d65b5add1987327e122": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can with a distinct texture. The quality is good, and it's suitable for representing a beverage can in a physics simulation." } }, "87d5bce4301c46d4b02ac318970b975f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a glass with a drink and a straw, not a soda can." } }, "882a37821d24474d9fd36006ce2783d8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for game development, and the object is suitable for physics simulation." } }, "89bada2350d04d5d8005a5c0bbde6ca8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a disposable cup with a lid and straw, which is used for soft drinks, but it is not a soda can (typically made of aluminum)." } }, "8a1fd19bb9e54550a4345cab9941e6a7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a soda bottle, not a soda can. The requested class is 'soda_cans'." } }, "8a58e2bfeb234a078975be3f4bedbd33": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "8a9b1d4638d340a9807988caa2b50699": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is not a soda can. It appears to be a jerry can or some other type of industrial container, not a beverage can." } }, "8b08570d2cef4471b971ea11ac4fe3ff": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble a soda can or any related item. It appears to be two stacked block-like shapes, and the image is too dark to clearly identify the object or its material." } }, "8b92426659dc4b0eb303c7d7280727b8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a soda can." } }, "8be6f79dd6704fc4a04cdfad08a2bb9e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright/overexposed, washing out details and making the texture look low quality." } }, "8ccfd3bd1afa45a3af6f0738743e972b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes." } }, "8ce213cab51a4ab793c58dbbf0de9195": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a cup or glass with a straw, not a soda can." } }, "8ce8f9c97bc8440793157ca547e312a2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is a glass container with liquid, not a soda can. Soda cans are typically cylindrical and made of metal." } }, "8d1c092f61ac4e239d2010688e170085": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects instead of one, and it is excessively bright, washing out details and making it low quality for training." } }, "8e273ad665824e869a4d6440cb426dea": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training, despite the somewhat pixelated texture, as the object is easily recognizable. It is suitable for physics simulation." } }, "8e98967d2401412b8edc7ac8bd355daf": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game." } }, "8ef390c3554842049efaf620629728b3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which fits the requested class. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "8f17d17132b6409b8716ecf272061748": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. While the texture quality is somewhat pixelated, the object is easily recognizable and suitable for use in physics simulations within a video game context. The lighting and composition are adequate." } }, "8f17f58aa4f341aea0269904faa5f15e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/bright, making it impossible to see the full shape or texture of the soda can. Only the very top opening is vaguely visible." } }, "8fa1dddf301b447eb1c9560040d75fb6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "902ea378c9a547cb9031a253f550fb8a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and stylized (voxelated/blocky). It does not clearly depict a recognizable soda can." } }, "916ee4c40aa74b54923ec5b20004c577": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can." } }, "91a4fc72e68a4313ac6733b2dd9756ee": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "928c257acd794839bc912a8df956bc7a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash can, not a soda can. Additionally, the image is extremely overexposed and lacks detail, making it low quality." } }, "931d29a29b144cf6b785bf826c8aadd1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image resembles a glass or vase, not a soda can. The shape is incorrect for the target class." } }, "93866874c4fa43f8b0befd8c3c03b580": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the very top rim of a cylindrical object, and the rest is completely washed out or missing. It does not clearly depict a soda can and is of very low quality." } }, "93ea41969bf94511bdbc814834453873": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a bottle, not a soda can. Additionally, the object is extremely small in the image frame, making it difficult to discern details and assess quality." } }, "94cebba4189646559f4200ad663bf30d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related beverage container." } }, "94eedae37938412e8228cdd53bc856b1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a trash can, not a soda can." } }, "9597bac9cfa946feb1e7fa2c41a3ebf9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single one. Additionally, the objects are very dark and lack the distinct features or textures typically associated with soda cans, making them difficult to identify clearly as belonging to the target class." } }, "96aa6a20264848ab9c5be2478594ec44": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (five soda cans), but the requirement is for images depicting only a single object." } }, "96b925daae4d4dc89035123053d3055c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes." } }, "9709dbae6c1e483180229c241ba04af6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable, and the object is suitable for physics simulation." } }, "9818250a938546daba94389fd9171b69": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a trash can, not a soda can or beverage can." } }, "986050ad95ca444caa07026c033e548a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely washed out and too bright, making the object almost invisible and unrecognizable as a soda can." } }, "98c0fdc024494e6cafd322cbdfad7b89": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and it is suitable for physics simulation purposes." } }, "990933dd66b94d4ba934fc2f3fc95e90": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate, and the object is suitable for physics simulation in a game." } }, "990c08d7445743d8897841f82466e80a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "996516d842954aff9a3011d17727f7e0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "9965b7b5f7e04f2a9ecb6454741cc3fb": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "99ed8d6c46c343729e63a0a581599add": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and it is suitable for physics simulation purposes." } }, "9a2c379684ed4ceb849d97a473c21e2c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the target class. The quality is acceptable, and it's suitable for physics simulation." } }, "9a492ec286494760859c2f5da23deb18": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rectangular container, possibly a planter or bin, not a cylindrical soda can." } }, "9a8a172dc7f64f7fab80894393eb2314": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "9a978cc6eac44e2babddca28abc3b4d9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it very difficult to clearly see the object. Only the very top of the can is slightly visible, and the rest is lost in white." } }, "9a9eedff0d694219a6b22eb3317d1a66": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building, not a soda can or any related object from the specified class list." } }, "9b5ccf74eee5402686665c51aa126d61": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is not a soda can or any related type of beverage can. It appears to be some kind of container or possibly a stylized trash bin." } }, "9bd3798628d147f3a2cfb5f6e32a63f2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soda cans) instead of a single object as requested." } }, "9ceb9df031ce4615a772f2da4607724f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bottle, not a soda can. The shape is incorrect for the requested class." } }, "9d136cd754054ee5b08119030e07f7aa": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks detail. Only the very top rim of a potential cylindrical object is faintly visible against the white background, making it impossible to clearly identify as a soda can. The quality is too low." } }, "9d328cf4545e44efb315a96e11654174": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash bin, not a soda can or any related item from the specified class list." } }, "9d6496b196914955bee18a64cb60c870": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a coffee container (Folgers tub), not a soda can or beverage can as defined by the class description." } }, "9eb3a65d95b44fa793246cd238030ae2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash can and trash bags, not a soda can or any related object from the specified class list." } }, "a00a103c66634866bcff38172fa31a7d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, and the object is very small and lacks detail, making it difficult to clearly identify as a soda can. The quality is too low for training data." } }, "a0a1eaf4185c440c816bc085f1af4bfb": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single beverage can, which fits the 'soda_cans' class description (including terms like 'beverage can', 'aluminum can', 'metal can'). The quality is good, and it's suitable for physics simulation." } }, "a0a6b0c8378041e0ba0ed6adae1b93c8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple stacked objects that resemble bins or cups, not a single soda can." } }, "a0e1bc11ca774a5e9f9379159aa0268b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict the object (soda can). Most of the can's body is missing or blends completely with the white background, making it unrecognizable and unsuitable for training." } }, "a106786fe6b841639ef2234a93d91cd8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game." } }, "a1335f1604b84ad9acda9177743bd890": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game." } }, "a169b9d5818245168ea45e568fde3551": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "a1a0847b92e446aa9ba5dfebe26568d5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the specified class. The quality is acceptable for game development and physics simulation, representing a deformed state of the object." } }, "a1fb3ec987264287a2d7d6e999b36db3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soda cans stacked) instead of a single object as required." } }, "a253b66202a64a56840ea4eb131e4fff": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The image quality is good, and it's suitable for physics simulation in a game." } }, "a26f1dc89ed24e39bcf89dd620673669": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vending machine, not a single soda can as requested by the class 'soda_cans'." } }, "a373348973f44a6c9e764605c636af5e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can (aluminum can), which fits the requested class. The quality is good, and it's suitable for physics simulation." } }, "a377b36213034bbeb7a4903f936b76d7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three views/instances of a soda can), violating the requirement for cleanly depicting ONE SINGLE OBJECT." } }, "a3fc2ab724c949c5b38d2059782906e4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The bottom half of the soda can is extremely overexposed and too bright, obscuring the details and making the image low quality." } }, "a52c6461680d4293a8ae8d29c26ad1d5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble a soda can or any related item. The shape is significantly different from a typical cylindrical beverage can." } }, "a59abc3314d04fe1b00f00a7b16fad4d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a coffee can or a food can, not a soda can. Soda cans typically have a different shape and a pull-tab opening on top, which this can lacks." } }, "a6cfd144a62e446c92f0987fb81d584f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a container with a lid, which looks more like a paint can or a food tin, not a soda can or beverage can as described in the target class." } }, "a711de72361148b08b6d6d0a9195af64": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble a soda can. It appears to be some kind of abstract geometric shape or possibly a stylized bin, and it is also too bright, washing out details." } }, "a7229ddcde4043f6a0e34ef3f6df19ff": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two soda cans, but the requirement is to have only one single object per image." } }, "a7488154cf664a579a7c1fbc87235208": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a can, but its shape with prominent ridges is more characteristic of a food can (like soup or vegetables) rather than a soda can or beverage can." } }, "a844b690449946ecb743c31e3ca3271b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a 3D model of a building, not a soda can or anything related to the specified class." } }, "a8d5499be15f420dbd1379c33ebee4be": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a public trash bin, not a soda can or any related item from the specified class list." } }, "a8e5fa12b9644b21899bfd1a3f3ac1c2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is rectangular and appears to be a piece of furniture or electronic equipment (like a speaker or small cabinet), not a cylindrical soda can." } }, "a9a9cd4a15194cf29772f2cfe336f301": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "a9ec83449cb54f56852f6090e45c682a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a metal trash can, not a soda can or any related object from the specified class list." } }, "aa584c852bd647ca978d7f00efc72c5c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a dumpster, not a soda can or any related item from the specified class list." } }, "aaa11e57064848268d701a3586792d0d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for game development purposes, and it's a suitable object for physics simulation." } }, "ab98557c5e3e495e8268754413cf29b5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image is too dark and the object's shape is not clearly defined enough to be reliably identified as a soda can. It lacks the characteristic features and details." } }, "abc62a02babf4acea619b36db1c6d864": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, anthropomorphic character resembling a soda can with legs, not a standard soda can. This is unsuitable for learning realistic physics parameters for the object class 'soda_cans'. Additionally, the image quality is low." } }, "abfabd0ce5f147fb9ce0b1e53a49e55a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it is suitable for physics simulation in a video game." } }, "ac4d669a204f4995be019eff0cb27628": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it is suitable for physics simulation." } }, "ac6e1946611e49419940903b14c9b5e0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation." } }, "aca52679c57142ca9c92fa31b4690b35": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex, fantastical contraption, not a simple soda can as requested by the class description." } }, "acfffb86384e43f9bad4b8ff4b802f7b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very low-polygon, abstract representation that barely resembles a soda can. It lacks the necessary detail and realism to be useful for training or physics simulation." } }, "ae108b290236439cabe308cf2821e755": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "ae68a6ab5a724d33b1adbee86a774527": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a trash can, not a soda can." } }, "af95b4cef0424857a10ab3ba07244619": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vending machine or refrigerator, not a soda can." } }, "afce0b6ac8284e66883b6ba64a29565c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely low contrast and washed out, making the object almost invisible and impossible to identify as a soda can. The quality is too low for training data." } }, "b05f49c1807a497bbcfe7a48b5884fc9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola can), which belongs to the specified class. The image quality is good, and it shows a standard object suitable for physics simulation." } }, "b069d9a6359947289647ec2faba06702": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can/beverage can. The quality is good, and it's suitable for physics simulation." } }, "b0997492583c4309a1b90e2ed0e27709": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains boxes of baking soda and bottles of dish soap, not soda cans." } }, "b0cc38534bb149489a8f0003d69bd57b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game environment. The stylized texture adds diversity." } }, "b1886fdc827c4d44b66be40ca38ad3f3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coke can) which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "b1937273e63247c29080b87e250cdf03": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related beverage can." } }, "b21cc66e2aee47e88489efd8f2616319": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can/beverage can. The quality is acceptable for training purposes, despite some brightness towards the bottom." } }, "b2563a127c4e4d559713e7af5923dc3a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "b3101b84f826423697c46c302e840deb": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is adequate, and the object is suitable for physics simulation in a video game context." } }, "b31a6fab683a47ab897bcd46e92b1b8b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts barrels or drums, not soda cans. The objects are the wrong size, shape, and type for the requested class." } }, "b3257907af8248ab99cd27ff8c6a86d1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beverage can, which belongs to the 'soda_cans' class. The quality is good, and it's suitable for physics simulation in a video game." } }, "b35db4f477144eda815eceb30ff9eb19": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pink, blocky, abstract object that does not resemble a soda can in any way." } }, "b38aa24407bd4df7aabe3e407135e607": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any object, let alone a soda can. It appears to be overexposed or corrupted." } }, "b3bfd8ec7a1849f0bade5298dc207340": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can with good quality and lighting. It is suitable for physics simulation training." } }, "b3f2d2309afa4431bd2da501aea51592": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bottle, not a soda can. Soda cans are typically made of metal (aluminum) and have a different shape and opening mechanism." } }, "b42722fc90774768bd619897657aae82": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making the object almost completely invisible and unidentifiable. It does not clearly depict a soda can and is of very low quality." } }, "b450aa89357849f9afd24959369770d0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash bin or pedal bin, not a soda can." } }, "b47bae44c2bd460b8ce194c6c43fd77d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only the pull tab of a can, not the entire soda can itself. It does not clearly depict the object class 'soda_cans'." } }, "b521c9a1162d45d2b4f138206e114fd2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate for training data, and it's a suitable object for physics simulation in a game." } }, "b555371c60fd4dc1879f6fb34cae240c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a metal trash can, not a soda can." } }, "b5bf847e1660449dbcd14b0601b44ec6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, lacks texture, and blends significantly with the white background, making it appear washed out and low quality." } }, "b6baa101ae8b4079b0564d74c7f4d103": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and only shows a small portion of the object (the top rim), making it impossible to clearly identify it as a soda can." } }, "b82ce3af0ebd465f86960db28704abb1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the top part of the soda can; the main body is cut off or missing. This does not depict the full object clearly." } }, "b92be47157c54e8293927232b985b5a0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a glass or cup with liquid, not a soda can." } }, "b9dbc5ee67d24be38603d60c1f493e50": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly see the object. Only a small portion of the top is vaguely visible." } }, "ba31c57e764e4ed6bad5360ec47f2241": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "ba56c29685bf45178bcb9ada8e3b8121": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a rectangular prism, not a cylindrical soda can. It does not resemble any item in the 'soda_cans' class." } }, "ba7e9af9841b4747aff873c9b383ab37": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a glass soda bottle, not a soda can as requested by the class definition." } }, "babf04ce4e8b4b198c1671468d7c7f1a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making the object barely visible and lacking any discernible detail. It does not clearly depict a soda can and is of very low quality." } }, "bb29c9da29c1416098a41e6b69466c6e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "bb575d75beda4c878d0b158e29eb7fbf": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, washing out almost the entire object. Only the very top and a hint of the bottom are visible, making it difficult to clearly depict the soda can." } }, "bbe354abb6714da9b5a405487a2987ac": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola) with good quality and lighting. It is suitable for the class and relevant for physics simulation." } }, "bc297fd86f2841ccb9a4f9d6b4c529c9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soda cans), but the requirement is for images depicting only a single object." } }, "be14535020724c3ca3328ec9e271ee0b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can/aluminum can against a clean background. The quality is good, and it's suitable for physics simulation purposes despite the somewhat stylized texture." } }, "be889ff6886a4e89a089658364cd4816": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash bin, not a soda can." } }, "bf7902fb64644da3beb0ce1fce07f4aa": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate, and it's suitable for physics simulation." } }, "c0977a83efb24380a3520e6e2b9d60a8": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a large metal container with a lid and handles, resembling a trash can or storage container, not a soda can." } }, "c0bf72e4f45242e8bf61de7f6cab12a3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a crushed soda can) belonging to the requested class. The quality is good, and a crushed can is relevant for physics simulation (deformation)." } }, "c0de336fc34146eea18f10363fe24f84": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bottle, not a soda can. The class requires images of cans (aluminum, metal, beverage, etc.)." } }, "c142b950461a419aa6423feebeb15a1f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, making it difficult to discern details. Additionally, it depicts two objects instead of a single one." } }, "c1a422e9f21d4b8ba847f7941dde98f6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can with adequate quality and is suitable for physics simulation." } }, "c1b4b95dd16546ffa7a12ca27f8f2e34": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a soda cup with a lid and straw, not a soda can as specified by the class list." } }, "c23e4118c86946d9bc9508c40359e463": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and it is suitable for physics simulation purposes." } }, "c33bc950cc5f4108b3e773bc7d3bc23e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash can, not a soda can." } }, "c38d6aded9724a1694a941f7522a5ca3": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can (specifically a cola can). The quality is acceptable, and it's suitable for physics simulation in a game." } }, "c3cc5a3e1b5f47cbaf841aee7125b759": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The image quality is good, and it is suitable for physics simulation." } }, "c4526bf6c2ba48f8acaad9a0783b0d1a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. Although it's a low-poly model with a stylized texture, it is recognizable and suitable for use in a video game, including physics simulations." } }, "c4daf79847244e29baa267603db6d378": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple low-resolution, semi-transparent cylindrical objects that do not clearly resemble soda cans. The quality is too low, and the objects are too abstract for the intended purpose of physics simulation training." } }, "c63a465fc3fc4b5dac6bf385bd954c2c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a game." } }, "c652836672494da79d507d56411a62e5": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, the object is heavily distorted and blurry, making it difficult to clearly identify as a soda can." } }, "c85b4c605dc748c5bdbd4e63bf996234": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object's shape (especially the octagonal top) and texture (worn, possibly stone or concrete-like) do not resemble a typical soda can. It lacks characteristic features like a pull tab or standard can top." } }, "c892780a9051410a945456797dca1c48": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a blue plastic bucket or container, not a soda can." } }, "c9c6bae3e2ec401aad393a47cc127d2a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable, and it's suitable for physics simulation." } }, "c9db0e3f1a4d4171af144788fa77484c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game." } }, "ca977431f13049fb9a2ac6dce431d7ac": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object as a soda can or assess its quality." } }, "cbb8037ffaf34988a83266162a9f5423": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "cc7f8708bf614a198e66d02d65374b18": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a video game." } }, "cd5d48a76fe84035b6ef2a8d946b01f0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a soda can or any related item from the specified class list. It looks more like a stylized cup or bowl." } }, "cdee0ee0c07849c1b605afb78d158d22": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (cola can), which belongs to the specified class. The quality is acceptable, and it's a suitable object for physics simulation in a game." } }, "ce26c54614784dac8b565070de16d5ff": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola) which belongs to the specified class. The image quality is good, with clear details and appropriate lighting. It is suitable for physics simulation." } }, "cf4c4065679a4a648c121362a9633591": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a crushed soda can interacting with another surface and includes a detached fragment. We need images of clean, single, whole objects to learn their baseline physical properties." } }, "d0199595eb1c475ca4662b378f501a41": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "d0841b147e3740db91c987c6e413793d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct soda cans, violating the requirement for only a single object per image." } }, "d0b81fdb4e514859bfcc95165144e8c7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two blocky objects that do not resemble soda cans in shape or appearance. It is unclear what these objects are supposed to represent." } }, "d0bf0076e829471a8b7ea85dbc32b363": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows drinks in glasses, not soda cans. It also depicts multiple objects (two glasses and a tray) rather than a single object." } }, "d1b90c9f9a1945ebb9acb441af19e453": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a can of food (lima beans), not a soda can or beverage can as specified by the class 'soda_cans'." } }, "d28d0212f73f49369b1a4127e59d2cbe": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a beverage cup with a lid and straw, not a soda can as specified by the class." } }, "d3a98d793cc3454c9661ca0460d2a04f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mesh basket or pot, not a soda can or any related item from the specified class list." } }, "d4bb72c7650f44769370f3e9af00dad1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a hexagonal container or bin, not a soda can." } }, "d602dc6ee3ce46e8ad26c24b0b2b4119": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a metal bin or ashtray on a stand, not a soda can." } }, "d7290a29dcdf433b9af6dd4b5a96da78": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash can, not a soda can." } }, "d7bc6deece3244bcbf3768f58a59b006": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for a 3D asset, and it's suitable for physics simulation (e.g., dropping, rolling)." } }, "d7d788cb88f94286a15e0b51b3df4a3f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and only shows a partial, unrecognizable white object. It does not clearly depict a soda can." } }, "d8917d94c920470595eabc8615a77b3e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it very difficult to discern the details of the soda can. The object blends almost entirely into the white background, rendering it unsuitable for high-quality training data." } }, "d8c8569ab9774d72a2e429bb067cd9ab": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and indistinct in the image to clearly identify it as a soda can. The image quality is poor for training purposes." } }, "dad6c6980337408b98f15eb67cd78143": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost unrecognizable. Additionally, the object depicted does not resemble a soda can or any related item from the class list." } }, "db066d9c0c4e4bf98e6fdd8f94ad4a6e": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes." } }, "dcda2657d0b846b6ad6671f57c1eefd7": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mesh wastebasket or a similar container, not a soda can or beverage can." } }, "deec0f148e6c4b769b89c5258f1a20ac": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and lacks sufficient detail to be clearly identified as a soda can. The image primarily shows a marble surface with a tiny red object on it." } }, "df12be70236a40c0b7be2f999813b894": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a game." } }, "e0eedd4004be49c78cd34f82a1fd6fb4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rectangular box or carton, not a cylindrical soda can." } }, "e1dc6cd9e7dd475ab1eae45819d38755": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can, albeit a dirty one. The quality is acceptable, and it's suitable for physics simulation." } }, "e240d2d1da3142008265d75049a60b71": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash bin, which does not belong to the 'soda_cans' class." } }, "e2d8e10342b54d47a6f13c9aa10fddcc": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a soda cup with a lid and straw, not a soda can (aluminum can)." } }, "e31794846e984ab4a42f17f9010aec62": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and only shows the very top lid of the can. The main body of the object is not visible, making it unsuitable for training." } }, "e32733d7941748a49483d6a26be82953": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plastic soda bottle, not a soda can (which is typically made of aluminum or metal)." } }, "e4fbfc1835ad42519d30983ae6c0ca6d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can against a clean background. The quality is adequate, and it represents an object suitable for physics simulation in a game." } }, "e568d129df624238a3b5be46990f08ea": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a soda cup with a straw, not a soda can (which is typically made of aluminum)." } }, "e5e44452e9d9438a910b0c28d3a8a5fe": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, the object is distorted and does not clearly resemble a soda can. It looks more like a deformed bin or cup." } }, "e63097b5257b41aa958f6332fa03141d": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is adequate for training, and it's a suitable object for physics simulation in a game." } }, "e71b640cd3024cefa54b7d03b448a6e9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash bin, not a soda can." } }, "e73064e272d6432cb6f1101de7f03b79": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can of good quality, suitable for the specified class and physics simulation." } }, "e761a2cde1c2414b9908b3a238e169a0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable for training data, and it's a common object for physics simulation in games." } }, "e9045c71bc9c4acd8b29930fe86de9f9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects (a soda can and a bottle), violating the requirement for images depicting only one single object." } }, "e915c0da07ce42a2b5ba080da135a751": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash can, not a soda can." } }, "ea620d694ed241caa94e1cdfdea0884b": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a trash can, not a soda can or any related beverage container." } }, "eb83c2f9a2e4470995755a714149444a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily distorted and fragmented, making it difficult to clearly identify the object. It appears to be a partial scan or rendering of a scene rather than a clean depiction of a single soda can or multiple soda cans. The quality is too low for training purposes." } }, "ec8c11ae830d4114b4536be85f3434a9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and lacks any texture or detail, making it difficult to clearly identify as a soda can. It appears as a black silhouette rather than a realistic representation." } }, "ee58ff87cb3e4ef59746582d3b580a96": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a soda can." } }, "eed212b1c981466a9826a2a7dc1f8d60": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low. The object is very small within the frame, and the texture appears blurry/low resolution, making it unsuitable for high-quality training data." } }, "eef7e31fbe3844d995c29fad413f1cf0": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a can of adhesive or sealant, not a soda can or beverage can." } }, "ef546fb7a53749929ee0271da674f983": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soda cans) instead of a single object as required." } }, "ef956b4cdd06464b8c3f0cef0bdb2229": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/too bright, making it impossible to discern the details or even the full shape of the soda can. Only a faint outline of the top is visible." } }, "f054256edfe34ed28d113341b02caa31": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can, albeit in a low-poly style. The quality is good, and it's suitable for use in a video game, including physics simulations." } }, "f0e9d1b62f2f40718d0c0361267a81d4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it difficult to discern the details of the object. The quality is too low for training data." } }, "f1fee32f875244679827c8a7962dd920": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a trash bin or parts of it, not a soda can." } }, "f21a43f051f24c3d94bcd412948fd030": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object resembling a soda can. The quality is good, and it's suitable for physics simulation." } }, "f24c04715b874327baf86b74334c36d9": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. Although stylized (low-poly), it is recognizable, of sufficient quality, and suitable for physics simulation in a video game." } }, "f28f781755a84a4e83e56e36d06c624f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soda can, which belongs to the specified class. Although it lacks texture and has somewhat flat lighting, the shape is clear and it's suitable for physics simulation purposes." } }, "f2c07698c06b4ddf83bb6102e2fc69b6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation learning." } }, "f3560f1b73a1498d9313a0f10fd11ef6": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can with good quality and lighting. It is suitable for the class and for physics simulation purposes." } }, "f37f336c9fbe4b3ebcc737d86b26637f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the requested class. The quality is good, and it's a common object suitable for physics simulation in a video game." } }, "f50ca961cbcc4182a6f10074943d63c4": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cup or mug, not a soda can." } }, "f5d97bc88d99451c87665ddb1edd4292": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rusty bucket, not a soda can or any related item from the specified class list." } }, "f61aeec14ff441abb0f6add5485a2e90": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains recycling bins, not soda cans." } }, "f68987fa9f92438e9ceb3d4a06dc0d29": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is acceptable, and it's a suitable object for physics simulation." } }, "f70c12cecfd54e03ba5d118907fe110a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "f753a659faae499282e882d63972d4c2": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a large bin or container, not a soda can or any related item from the specified class list." } }, "f7562dd4f11f4cbaa2cac58c38a85e1c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a food can (like tuna or cat food), not a soda can or beverage can, based on its short, wide shape." } }, "f92d2484547a4d35b240bafc09eb4400": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (five cans), but the requirement is for images depicting only a single object." } }, "faa995aa1e4347d48e4d969af3b2c44f": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to see the details or full shape of the soda can. Only the very top is partially visible against a completely white background." } }, "fac722046abb4811bd3d88d5e39fdefc": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a square-shaped container, possibly a planter or bin, not a cylindrical soda can." } }, "fb27f0ce28444135990ad8e6007b8eda": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object with the shape of a can, which fits the 'soda_cans' category (specifically 'aluminum can' or 'beverage can'). The quality is good, and it's suitable for physics simulation." } }, "fd00d9cbdd1649e8a536af049994b5ed": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a public trash bin or ash tray attached to a pole, not a soda can." } }, "fdc6b2fd40974708a07f1717a433e7c1": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "fdce9ba3485c4ff8a010616c69995a0a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sphere with a cosmic texture, not a soda can." } }, "fe9f70ef9c1147b6828876f16fce9011": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows potion bottles or flasks, not soda cans." } }, "feadfb9d10434182948d4e3e80117e71": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is not a soda can. It appears to be some kind of tool or weapon, possibly a grenade or flare gun, based on the shape and handle." } }, "fecd4450f9d14948ba05d6d8dcec883c": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a can, fitting the 'soda_cans' class. While it is black and white and the texture quality isn't photorealistic, the shape is distinct and suitable for physics simulation purposes." } }, "ffcdf4375a9245049b4fffdd46a1d63a": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a newspaper in addition to the soda can. We require images depicting only the single object of interest." } }, "ffd7c2197b56413eab390d079970db72": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, low-polygon shape that does not resemble a soda can or any related item. It is not suitable for training a model for the 'soda_cans' class." } }, "ffdbc5a9ae654f49977a1ca2fc626c24": { "obj_class": "soda_cans", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soda can (Coca-Cola) which belongs to the 'soda_cans' class. The image quality is good, well-lit, and shows the object clearly against a neutral background. It is suitable for physics simulation training." } }, "0045c7d3543f467e808af1320f7fe252": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making the object very difficult to discern from the background. It is not clearly depicted as any specific type of sports ball." } }, "00ad7478cf0447f3b3494c00e7037177": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "00d9bd8bee204fe3a42c320ce24a32fd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bucket, which does not belong to the 'sport_balls' class." } }, "01b3e318dce243fca3ba14dc648c9ab2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single, ball-shaped object against a clean background. While lacking specific texture or markings, its shape and color are consistent with certain types of sport balls (like a tennis ball or ping pong ball) and it is suitable for physics simulation." } }, "01f0f072668a47d8b270db388034c9bb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a stylized, voxelated sphere and does not clearly represent any specific type of sport ball listed (basketball, soccer ball, tennis ball, etc.). While spherical, its appearance is too abstract and doesn't resemble a real-world sports ball, making it unsuitable for learning physics parameters related to that class." } }, "02f0f15c1980486c91e3f4a29fe059ef": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bowl containing multiple dark, spherical objects that do not clearly resemble any common sports balls. They look more like decorative items or possibly large seeds/nuts. Additionally, the image contains multiple objects and a bowl, not a single, clean depiction of a sports ball." } }, "04819557781441b6aeeefbf04268157f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a faceted polyhedron with a commercial logo (Nivea Sun), not a typical spherical sports ball like a basketball, soccer ball, or even a standard beach ball. Its shape and branding make it inappropriate for the 'sport_balls' class." } }, "05eb4a68e56249c5b3db4ea937a57b6e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the requested 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "0651755826f848b59df701ed8bf693d8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which belongs to the sport_balls class. The image quality is good, and a beach ball is suitable for physics simulation." } }, "06b4b9c1895945088510bcebb1bcee2b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "07060d7247774dfbaeb5154501b04f7a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted in the image is an abstract geometric shape and does not resemble any type of sports ball." } }, "07d690ffc3f044dfadb677c86bd7d69c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It shows an abstract scene with small figures on a platform." } }, "082b525fc15a48eb80bd10d327007762": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture, making it difficult to identify the object. It does not clearly resemble any specific type of sports ball listed in the class description." } }, "09577224c1ea4fadb86beb282daaf1b9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "09c4ba517a394c52b5087b6538f87ed8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too abstract and low-polygon. It lacks the defining features (shape, texture, markings) to be clearly identified as any specific type of sports ball listed in the class description." } }, "0a96f1f19afc432bb22c3d74da546338": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "0ae3ea1d19374003a7e7e5f6657a1df2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted in the image is an angular, box-like shape, not a sports ball. It does not belong to the specified class 'sport_balls'." } }, "0af0dfdb7f134bf081fc8f9125a556ac": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a stylized, abstract spherical structure, not a recognizable sport ball like a basketball, soccer ball, tennis ball, etc. It does not fit the common definition or examples provided for the 'sport_balls' class." } }, "0ba8b93f9997442fb4f5bd7cb10d4f3b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object. It does not appear to depict any type of sports ball." } }, "0cf6bca4a409457797fdbe0737f93d66": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is spherical, but its texture and pattern do not resemble any recognizable sports ball. It looks more like an abstract object or perhaps a ball of yarn/string." } }, "0d76207a619947f19158121f7fec74f9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects: a paddle and a ball. We need images with only ONE object from the 'sport_balls' class." } }, "0d8325148ea747468945c6ef73129bcf": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It shows abstract, blocky structures." } }, "0dd3b1e39fd544f79d7464e174da3502": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a set of billiard balls), while the requirement is for images depicting only a single object." } }, "0def9f418739418984a48c8faa6561ea": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basketball backboard, which is related to basketball but is not a sport ball itself. The target class is 'sport_balls'." } }, "0e2d798f5421490e962dc7be85db3c92": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and does not depict any recognizable object, let alone a sports ball." } }, "0e5bf8bdf0fe42cb967989beb212967b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object (basketball) barely visible. This low quality makes it unsuitable for training data." } }, "0ecc98014d684f548032eed7e89079b0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "0ef01b42b7e1456c8b79a25f805ab71a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a hollow, cage-like sphere, which does not resemble any of the common sport balls listed (basketball, soccer ball, etc.). It appears to be a geometric structure rather than a functional sports ball." } }, "11e572d8b4214f02955ed4f97dfe2afc": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "12cdcdb35ef44fee99f4eb344e0b0e72": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It shows a long, thin, rectangular object, not a ball." } }, "13c4579c7efe4eb9b9dc5df5ab8114c6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, but the requirement is for images depicting only a single object." } }, "14a0c798a6c248449c42853e5646ddfc": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object from the 'sport_balls' class. It shows a patch of grass/ground." } }, "15bd6087617a4a379953550c56edb839": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "160d712e0098495086b6d798ceaeb24e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The basketball is covered in a red liquid, which is not a standard representation of the object and may interfere with learning its typical physical properties." } }, "172e5cd6c6d040228a6628f43393e482": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cricket pitch and field, not a single sport ball. While a tiny red dot might represent a cricket ball, it is not the main focus and is barely visible. We need images focusing solely on the sport ball itself." } }, "17647dd372db4d059d21f11c9eccbd9e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic red sphere with low polygon count. It lacks any specific features or textures to clearly identify it as any particular type of sport ball (e.g., basketball lines, soccer ball panels, tennis ball fuzz). It's too abstract for the purpose of learning specific sport ball physics." } }, "176d61750a5948779b24d7e93f022b8a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it impossible to clearly identify the object. It appears as a white shape on a white background and does not clearly depict any specific type of sport ball." } }, "17dabce995894491af66c53d1ef65ef0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making the object in the center almost invisible and impossible to identify as a sports ball." } }, "1856d9fa92ac43e5a9bd7777b7acce16": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two generic spheres, not a single, clearly identifiable sports ball from the specified classes. It also depicts two objects instead of one." } }, "190b23e6d6c44b98a47841a83288e73c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic blue sphere, which does not clearly depict any specific type of sports ball from the provided list. It lacks identifying features or textures." } }, "196caf120c9a49159ad1b877c8d595cd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single football, which belongs to the sport_balls class. The image quality is good, and the object is isolated against a clean background. It is suitable for physics simulation." } }, "19f76a0df81747369acf46406b36afa6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "1a38a86296524f35904eafb0289aeb75": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "1a8f1483cca84f81a3dbcea41b5a917f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a single object that resembles a red ping pong ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "1abdab217ac741fdb3e4048b2ec911c7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted appears to be a Christmas ornament or bauble due to the hanging loop at the top, not a sport ball." } }, "1b8123b23c8349b7b85af4a04a825d60": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a rock or a lumpy object, not any kind of sport ball." } }, "1cafa2a3772d4fa4bcd990d3e8a2b1cf": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single golf ball, which belongs to the sport_balls class. The image quality is good, and the object is isolated, making it suitable for training data. Golf balls are relevant for physics simulations." } }, "1ceee60f00904474b3685765d6619014": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (many balls and a basket), not a single sport ball as required." } }, "1cefe2649fb546f29923ccaed833e0c1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested class 'sport_balls'. The image quality is adequate, and the object is suitable for physics simulation in a video game." } }, "1cff0d0506364ac6b4129b68cb4e27fe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and it only contains the object of interest. It is suitable for physics simulation." } }, "1d14b2f4cf864208a9bfb0479881536d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "1d1deedefdfe47e9835f0703957e576e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "1dd4866650fa4aa18927e0834af132b1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a signpost, not a sport ball." } }, "1e7d0d1fce524233aa01b5b5d879a6a1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single sports ball, likely a basketball or volleyball, against a clean background. The quality is good, and the object is suitable for physics simulation. The unusual colors add to dataset diversity." } }, "1e9a74754fe04d708a260e0c0d0ed6ff": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic pink sphere with no texture or markings. While some sports balls are spherical, this image lacks any specific features to identify it clearly as belonging to the 'sport_balls' class (e.g., basketball lines, soccer ball panels, tennis ball fuzz, bowling ball holes). It is too generic." } }, "1efe279909b04597858373c19901e8cd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "2049fef736434918ac238137a1d8f497": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "20a97fae56a64f52aab2cbafb8d1739e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object depicted is unclear and does not resemble any type of sports ball." } }, "2145437568c14deebb2a5af92c3ce507": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple small objects that resemble marbles or decorative balls, not clearly identifiable sports balls from the specified list. Additionally, the requirement is for images depicting ONE SINGLE object." } }, "21d4129b0ae842c5a6f09fc942811d4c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it difficult to discern the object's details. Additionally, the object's structure does not clearly resemble any common sports ball." } }, "21e83e8c62754c3bbb31d15369abe83b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "223acccccba84344aa3eab2f652d265e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is acceptable, and it's suitable for physics simulation." } }, "227613a5458344dab9759f17f7566e2e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a highly distorted and fragmented 3D model that does not resemble any type of sports ball. The object is unrecognizable and appears to be a corrupted or incomplete model, making it unsuitable for training." } }, "23279a2416e74abebca6b41f37cd5304": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single golf ball, which belongs to the sport_balls class. The image quality is good and suitable for training." } }, "2343abdae7674f46ad85071858db93c6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "2365ce5e9f8f41d19581aea697053504": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "238e221932e0439aabe02f20dfa91cb7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a simple grey circle on a white background. It lacks sufficient detail, texture, or context to be clearly identified as any specific type of sports ball. The quality is too low for training purposes." } }, "2399d7e0a9e349f78bd817121f5e7815": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a spring or coil, not a sports ball. Also, the image is too bright and lacks contrast." } }, "24d284ad2bab4260b5ae8c6d67e27bc8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a generic dark sphere lacking any specific textures or markings (like seams, panels, dimples) that would clearly identify it as one of the listed sport balls (basketball, soccer ball, tennis ball, etc.). While it could potentially represent a bowling ball, the lack of detail makes it too ambiguous for the specific class." } }, "24ecf27fc8964d08be948f4eb7768dbe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object. It does not appear to depict any object from the 'sport_balls' class." } }, "250177705f89434b94f6e44b7e00734a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows only half of a sphere (a hemisphere), not a complete sports ball. This does not clearly depict the object class 'sport_balls' which typically refers to full spherical or prolate spheroid objects used in sports." } }, "256e8cff3e874cafacd1b2530a84f7f0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "2592cb40eacd4cafb35187f963dc889f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the requested class. The quality is good, and it's suitable for physics simulation training." } }, "25e1816c0e22444bb62816d3999d1b0b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which falls under the 'sport_balls' category. The image quality is good, and the object is suitable for physics simulation." } }, "25ec4ef119b24f2b8a46c8441b9b074a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "2643d969f00a43fc8186aa8ec3fa45a2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a low-polygon, faceted shape, possibly a cube or similar polyhedron, and does not resemble any type of sports ball." } }, "268888fd930a46dca8e3e62f2f743618": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a person (volleyball player) in addition to the volleyball. We need images of the sport ball object alone." } }, "2917d0b66d834b20833aa1d4a3627c9e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains fragmented and distorted shapes that do not clearly depict any recognizable object, let alone a sports ball. The quality is too low and the object is not identifiable." } }, "2b74e98be6834219b9e3cb533d558d2d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "2d0c0691c4814c74905db01ce5112048": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "2d34f241f56b49758532f018edd05619": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the soccer ball but also a distinct green surface (representing grass/field), violating the requirement to depict cleanly ONE SINGLE OBJECT." } }, "2dbbc1914a484a71b90a58585387d9a7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a beach ball, which falls under the 'sport_balls' category. The image quality is good, and it shows a single object against a clean background, making it suitable for training." } }, "2f2a8835e5cc40f98a6e6bc14f58a6f8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation." } }, "2f3803f9694b4db88a41d75e37daf75b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a basketball hoop, not a sport ball. The object class requested is 'sport_balls'." } }, "2f77a26ab3ec4cbb9e8f0b17f2af2786": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is adequate, and the object is suitable for physics simulation." } }, "2fd6f7dc02d8413da9af8195cf5f8239": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "3062440ac11c46f18b8b86551cc3c3b4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. Although stylized (voxel art), it is easily recognizable. The image quality is good, and it's suitable for physics simulation training." } }, "308949e856d74180bbb3b2aa3d5ff25a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "31ab7b632c114639903fbd2d1c11039c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation training." } }, "31c5177bbb7341e7bcbc68ac2db9ace3": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a spherical structure made of interwoven strands, but it does not clearly resemble any standard sport ball like a basketball, soccer ball, tennis ball, etc. It appears more like a decorative or abstract object." } }, "31cbc70e9e9d4bfa9a85ccf95b973dd0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or discern any details. It does not meet the quality standards for training data." } }, "33928b27e24b42dda77b4f6eb83172c0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "33a30226e76b428e925521f2c2d8fa31": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "33c5f344ae9f4d289cf02709e801f273": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a bowling ball and several bowling pins), violating the requirement for depicting only a single object from the specified class." } }, "33d01509e1fa4deeb23ccd807b686ad3": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and it is suitable for physics simulation training." } }, "347ad3f458f5458daf32fdd8b5f39d9f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, but the requirement is to have only a single object per image." } }, "35913fe4d7a34db6865e78e3a82451c7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture, making it difficult to discern details. It looks like an untextured 3D model render, which is not ideal for high-quality training data, especially for learning material properties for physics simulation." } }, "36868988285f4b60b3e389e1aa1bab3f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a snow globe, not a sports ball." } }, "36af0f7000404842872a6a13fe931ff8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (a bowling ball and a bowling pin), while the requirement is to depict only ONE SINGLE object from the target class." } }, "36f001996fe044d18f969d59fe8d7a2a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely faint and washed out (too bright), making it impossible to clearly identify the object as a sports ball. The quality is too low for training purposes." } }, "38236b7be1a943709ae337420aeeaa7c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "3985d0f92ed6478490c4273d82f7541a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic yellow sphere with no distinguishing features (like seams, panels, dimples, text, etc.) to clearly identify it as any specific type of sports ball. It is too ambiguous for the 'sport_balls' class." } }, "3aab0a64b603430380860e8151c2fe1a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation in a game." } }, "3afbc0fe153146ccac248659acba9591": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it very difficult to clearly see the object (which appears to be a golf ball) against the white background. The lack of contrast and detail makes it low quality for training purposes." } }, "3b1ffcb84a164cf9a488218bbf4ed3f9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and the object is barely visible, making it impossible to identify. The quality is too low for training." } }, "3bc7eb1864314b8da5b1f277ae0d3889": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bowling ball, which belongs to the sport_balls class. The image quality is good and the object is suitable for physics simulation." } }, "3c69763602904e7f8c7276b1b8459bd4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (ping pong table, net, paddles, ball) instead of cleanly depicting a single sport ball." } }, "3ceae2eee6264843a77aaaf298134744": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "3d60682818084a4da961fba3658569ef": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soccer balls) instead of a single object." } }, "3e1390907a5447fd85d2baabb15add1c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sports ball." } }, "3eee199318c94b9d8de3a2bc38b33ccb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "3f22d17dc0fb4d8ebd731469d0122e88": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a very low-polygon, green, irregularly shaped sphere. It does not clearly resemble any specific type of sports ball listed (e.g., tennis ball, soccer ball, etc.) due to the lack of defining features, texture, or standard shape." } }, "3f8debf633ed40da8d2d19d64632f98e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "400ce6fc25f54d149efd4cd429daa50f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "405f6ed74fa94dbd9a06629a334585db": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image is too dark and lacks sufficient detail and texture to clearly identify it as a specific type of sports ball. The quality is too low for training purposes." } }, "40c3fee5315c4ef2acbb368484a1fc7b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is acceptable, and it's suitable for physics simulation." } }, "4167ce901d624e45abc833cafd721fa9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble any recognizable sports ball. Additionally, there are multiple objects in the image (the yellow object and the blue cloth-like object)." } }, "41c7e9e391354cdfb1d2e4bd44c9a445": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making the object barely visible against the white background. It lacks sufficient detail and contrast to clearly depict any specific sports ball, rendering it unsuitable for training." } }, "41f84ad265ff4aba8ef80f5fd079b0a8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, washing out the details and texture of the soccer ball, making it low quality for training data." } }, "42183392f9c741ebb9bdb69b3ae5062d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it impossible to identify any object, let alone a sports ball." } }, "42910a858ad24950b84de7f5ec770d32": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object resembling a volleyball or beach ball, which falls under the 'sport_balls' category. The quality is good, and it's suitable for physics simulation training." } }, "42f2dacd02f3427190be53974344844c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "43b9952b39d14295bfcc357786092c51": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a bowling ball, which falls under the 'sport_balls' class. The image quality is adequate, and it's suitable for physics simulation." } }, "449cf1d7819c4f41b9fb26e61701e577": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object in the image is not clearly identifiable as any type of sports ball. It appears to be a reddish-brown dome or half-sphere with unclear features, making it unsuitable for the 'sport_balls' class." } }, "44e652f9f89e42b2b40fece12aefd303": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a basketball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "451aaaab47f846ceb2c6fcee2d1c1488": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out (too bright) and the object is barely visible, making it impossible to identify or assess its quality." } }, "45658eac7a8742d5940056d5eaa1dc96": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "45aee654bbd541d18c9cd1a6c951f72d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "46c8760116a342c69eddbe1c0c028b60": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It shows abstract geometric shapes." } }, "46c91864ef384158b0078e20bdbfe3e9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is relevant for physics simulation." } }, "47c6bfb547c0468dbaef0cca60d3fca2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "47d7910242904abbb0d630087b5ecfbe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single baseball, which belongs to the sport_balls class. The image quality is good, and it is suitable for physics simulation." } }, "483fb35bd65543a2988c91b6a9b1e7d8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and far away in the image to be clearly identified as any type of sports ball." } }, "48f2b91c32514fc591014933ffeff042": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It appears to be a fragment of an unrelated object, possibly a sign or post, and is poorly rendered." } }, "49515826f03f491ab5429a4665401d0c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble any type of sports ball. It appears to be an abstract or mechanical component, not belonging to the specified class." } }, "495f3440dc6643f4b9cf8bec88586792": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not clearly depict any recognizable sports ball. It appears to be a distorted or fragmented shape, not suitable for the 'sport_balls' class." } }, "4970410b0b784b1d9f344d4d094cd6b5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a sports ball. It shows a cricket bat and wicket on a surface, but no ball is visible." } }, "49b39158e44e40c68f91f7ead92cc9ec": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the requested 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "4a0f6fd907a2481db570e1564e12c807": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The texture of the soccer ball appears distorted or low quality, with strange artifacts that make it look scratched or wrapped. This might not be suitable for learning accurate physics parameters. Additionally, the geometry seems somewhat low-poly." } }, "4a6cd8d53cbc423da9e33299f4263aed": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is relevant for physics simulation. While the texture on the lower half is unusual, it still represents a sports ball, and diversity in textures is acceptable." } }, "4ac321be32794d85a8ec7593913b7f85": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object from the 'sport_balls' class. It shows a post on a base." } }, "4b2673dbf20843b89708166323c31b1f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a complex, interwoven sphere with a loop at the top, resembling an ornament or pendant rather than any standard sports ball like a basketball, soccer ball, or tennis ball." } }, "4b5ae9b70251441a896a90fd14a79f66": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "4bc0b18d07d94af0b192cc3e52ecd58e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "4c27fd0640874d13aeb9023d5c075531": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "4cc0ccbc90804eb5901939d61a6461bd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized tree-like object, not a sports ball. It does not belong to the specified class." } }, "4d36c61cb8c04db09a4138f059187ab9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a sphere, but the texture with letters and numbers does not resemble any common sports ball. It looks more like a UV map or texture test sphere." } }, "4d92ac7449634342935c26d8d3c8b39c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "4df2619981e54625ad89b6bbfed70452": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-polygon, generic brown sphere that does not clearly resemble any specific type of sports ball. It lacks the necessary details (texture, seams, panels, color patterns) to be identified within the 'sport_balls' class." } }, "4ef59adf1b9f4079921e7dacbd04c08e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested sport_balls class. The quality is acceptable for training, and the object is relevant for physics simulation." } }, "4f0a006e663a4b03aef6c79afc7f50c2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "4fc634e0c771483681fc514f1b739185": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a red dome with a black base, not a recognizable sport ball from the provided list." } }, "51563aebf67e41ce96b199a92248a8f6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (many balls) instead of a single object as required." } }, "5198fa6b7cd04296987484d967b9cc47": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image has significant rendering artifacts or damage at the top of the basketball, making it appear incomplete or broken. This is not suitable for high-quality training data, especially for physics simulation." } }, "51f2cfc77e3a4fedb40d0cb52994eab9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a very low-polygon, abstract pink sphere. It lacks any defining features or textures to clearly identify it as any specific type of sports ball (e.g., seams, color patterns). It's too generic and doesn't resemble a recognizable sports ball." } }, "523ac862d2154a7e8c96b964fb7cb11f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a set of pool balls and a cue ball), violating the requirement for a single object per image. Additionally, while pool balls are used in a sport, they are not explicitly listed in the target classes and have distinct physics compared to most common 'sport balls'." } }, "5311ede6883c4fb39f366f86559f58de": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "536d687777f0473dbc79f00ea4a17917": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The quality is good, and the object is suitable for physics simulation." } }, "5377e2fa1d904a8c919341c6b3e0f182": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bowling ball, which belongs to the sport_balls class. The image quality is good, and the object is relevant for physics simulation." } }, "549e6a9db463478887f54dfb6921103c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "5516e9e7628747b3902f1ef4e722c0c0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (billiard balls), violating the requirement for depicting only ONE SINGLE OBJECT." } }, "563a01e3d4d84e078eca33ec7c2d1479": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "567058de5d2c47df8b77e9c45a5a95f6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "570d317b99f94d7898fa30355d8083c5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Christmas ornament, not a sport ball." } }, "578410b9289f493cb634903cb5207a33": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two tennis balls and a tennis racket), not just a single sport ball as required." } }, "5796b62e40984a5bbcc83fe7b1ed831e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "57ec7545f8704db082e784cc79b6a7fc": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "583e886eb2334765acab222cda7d2bec": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single American football, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation." } }, "58b5a30505e24792917fd940b4785cfe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation training." } }, "58d5f2eedc1e4eaaa580798162fa0006": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is adequate, and the object is suitable for physics simulation." } }, "591099fe4b6b46ba9387754aa0795795": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a cluster of four merged spheres and does not resemble any known type of sports ball." } }, "5b94ae099617446eb4f5ea60427ccfcf": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "5bbd19dc543a4234a15b25a1b40e2770": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any recognizable object from the sport_balls class. It appears to be an abstract, dark, glossy shape with unclear form, making it unsuitable for training." } }, "5bd57db0ec4048378f21afc55f4dbd00": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Christmas ornament, not a sports ball like a basketball, soccer ball, or tennis ball." } }, "5c22621990a24c32bbba27fb22859c8b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (many balls and a container), not a single object as required. Also, the image quality is poor due to the horizontal white bars cutting through it." } }, "5c4c713b9e2841648762800f677856ce": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it very difficult to discern the details of the object. The quality is too low for training data." } }, "5c8f46bd7a06484f941bb2bd420c87f0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sports ball." } }, "5cc7a99302964b229921aa445a1fcbb8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "5d31d395e0e24138900065b642ac8299": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single spherical object that resembles a bowling ball, which falls under the 'sport_balls' class. The quality is adequate for training purposes." } }, "5d70537cfe2243f38704d15fe3a1c73c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and a tennis ball is a suitable object for physics simulation." } }, "5df981cbb7744925834d66fe5a6e8504": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the specified class 'sport_balls'. The image quality is good, and the object is suitable for physics simulation." } }, "5ebd04ad8a9647e999c04ae92dd2fe13": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "5f007aed96f546d3b1b4b2ab732d4d63": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a valve or pipe fitting, not a sports ball." } }, "5f158949c1084575abf02437f6b43028": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to discern the details of the object. The texture also appears somewhat artificial for a standard golf ball." } }, "607bca1f9bb2447eaa67143515b73ca7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is recognizable as having a soccer ball pattern, but its shape is significantly deformed and not spherical like a standard soccer ball. This distortion makes it unsuitable for learning realistic physics parameters for a typical sports ball." } }, "609a199724114bc68509068fa4abdf01": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "60a4ec95da6641ab979416817ce7afd0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making it difficult to clearly see the object and its details. The quality is too low for training data." } }, "6165774d34a44aec96def5f799300f2c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "61ad5791acd54e268d2584e47ba05584": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snow globe, which does not belong to the 'sport_balls' class." } }, "61c4ce97d62f4f33a706a71e35c1851f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a beach ball or a generic sports ball, which falls under the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "62039f6107524d0f8ea9f4754818f0fe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The quality is adequate, and the object is relevant for physics simulation." } }, "623110733d80495b9a188c988312bda1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it difficult to clearly identify the object as any specific type of sport ball. It appears as a generic white shape." } }, "626c140f036c4727bd8635a894fd6707": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a cricket ball or possibly an older style baseball, which falls under the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "628213628cd24f9a865dd4433c57d1a7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basketball court and hoop, not a sports ball like a basketball, soccer ball, etc." } }, "62a54774980144edbd4314752c6f274c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two basketballs and a basketball hoop), not just a single sport ball as required." } }, "62c334e64f9a467ea547a71a980f7094": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a sphere, but its texture (rusty/metallic/rocky) does not resemble any common sport ball listed in the class description. It does not clearly depict an object from the 'sport_balls' class." } }, "63166fb4e3bb4f62a20f5ee560c33be2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a generic sphere with an unusual texture and does not clearly represent any specific type of sports ball (e.g., basketball, soccer ball, tennis ball, beach ball)." } }, "636816af68c049c4bc0ed31bc1493e6e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and the object is suitable for physics simulation." } }, "638579292c8d4bbb858ef4473995abff": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object in the image is a sphere, but its texture and appearance do not resemble any common sport ball. It looks more like a rock or a heavily weathered, unidentifiable object." } }, "6436d542531343c4addc9e0b96c5b059": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The quality is acceptable and it's suitable for physics simulation training." } }, "6445cd60ffb44e5ab8c72cd81cdbc04c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts Coca-Cola cans, not any type of sport ball. Additionally, the rendering is incomplete and overexposed." } }, "649f10d75f86431ea0930ba454d11c31": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large green plane interacting with the soccer ball, violating the requirement for depicting only a single object cleanly." } }, "65b160fdee7d42f8b0a7e99e0fc8ec5b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basketball court, not a sport ball. It does not depict an object from the specified class 'sport_balls'." } }, "6612a34c526b457b9fef451bc4b37507": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The quality is good, and the object is suitable for physics simulation in a video game." } }, "665eceb299d2476dbe9b9c0474a5526b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted in the image does not resemble any type of sports ball. It looks more like a stylized flower or trophy." } }, "66678c6685f94e39a93907ca88710aee": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a sphere with a cap, resembling a Christmas ornament or possibly a stylized bomb/grenade, not any type of sport ball." } }, "668c3ed381ca474182deca3bedecf613": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single golf ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "66c8cef480cc4b36b437a90c75972599": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "67e00f242ed3408594a39d314892f741": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a basketball hoop and backboard assembly, not a sport ball itself (like a basketball, soccer ball, etc.)." } }, "6a30dbecdf1141a38c5295c9b2b28482": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a ball and chain, which is not a type of sports ball. It does not belong to the requested class." } }, "6ae0871c4cb3436db8ba214fd7707553": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a golf club (putter), not a sport ball. It belongs to a different category of sports equipment." } }, "6ba760b777a1429d9274fa9093228da6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation. The unusual color contributes to dataset diversity." } }, "6bfa6420cc464081b90afc806e3997da": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is isolated against a clean background. This is suitable for training." } }, "6c33cfc605d142d9a31191cc7fd8aaae": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sports ball." } }, "6c3f25c769d247d8a56064b436fb387d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The objects in the image do not resemble any type of sports ball. They look more like helmets or bowls." } }, "6c42309765bc43b79bc7f08968222268": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a soccer ball, albeit with an unusual texture. The quality is good, and it's suitable for physics simulation." } }, "6c816c2eb3ae42a38faab5cb1434658c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "6c8327d1cce54558836186fd9342c761": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a toy gun or tool, not a sports ball." } }, "6d5cd0054d9740228253bd9634723a95": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic sphere with a simple two-tone color. It lacks any specific textures, markings, or features (like seams, panels, dimples, specific colors) that would clearly identify it as one of the listed sport balls. It is too generic to be useful for the 'sport_balls' class." } }, "6da5ede54a3a43eea44f311b02eeb136": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "6e95fde84bfe4335a39df3afb29f2af1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a crumpled paper bag on a board, not a sports ball." } }, "6e9da42de04049ab8ce952adad4b7592": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation." } }, "6eb857a564f841208d3468aa2a0c4452": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a ground patch in addition to the beach ball. We require images with only the single target object against a clean background." } }, "6ed393c5fdd742808f7ad0c12463e5a1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is ball-shaped but has letters on its panels, making it look more like a toy or educational object rather than a standard sports ball used in games like soccer, basketball, etc. It does not clearly depict a typical object from the 'sport_balls' class." } }, "6ef81c26d9f541bd8ec9bc76e2855d2e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the seams or lines of a soccer ball pattern, not the ball itself. It lacks volume, texture, and shading, making it unsuitable for representing a physical object for simulation." } }, "7079a5fc5bd74143b36d3f1a123a4f03": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a beach ball, which falls under the 'sport_balls' category. The image quality is good, and the object is suitable for physics simulation." } }, "71174c56c9a641f6b21cf59edffad3f3": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object details almost invisible. This low quality makes it unsuitable for training." } }, "711fd112317b4eb0943ece3f0a9227b7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bowling ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "71ddc9eb324e46efb10a7d3a040af6f6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very low-polygon, abstract representation that barely resembles a soccer ball. The quality of the 3D model is too low and lacks the necessary detail to be useful for physics simulation training." } }, "722be26079264550a508583d9ebf7519": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a faceted green sphere, which does not clearly resemble any common type of sports ball (like tennis, soccer, basketball, etc.). It looks more like a generic low-poly sphere or gem." } }, "72dd148b11b045ae8970585cf4ad56c6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "72ecd4deff5f4886adc2455581f0333d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is adequate, and it's suitable for physics simulation." } }, "731124f11bb24279b20dc3aa4ff591d6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large structure in addition to the small green sphere, which might be a ball. We need images depicting only the target object (a sports ball)." } }, "7390e7279ce34e93b69c7cf81ab6ed32": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is not recognizable as any type of sport ball listed in the class definition. It appears to be some kind of button or dome." } }, "74166573c34c40bc977c7a8db5b92ff4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It appears to be some kind of ribbon or strap." } }, "7471c06cc7204aaa8bb5983ab13db5db": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a pillar and some green material in addition to the white sphere (which might be a golf ball). We need images depicting only the sport ball itself." } }, "747cd89b03e7434cbaf70028aebfca65": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a wireframe or skeletal structure of a ball, likely a soccer ball, rather than a fully rendered object. It lacks texture and solid form, making it unsuitable for learning physical properties like material for simulation." } }, "74b56b99cc79448485f2ce603c99c074": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "757c9db98fc74368bbf5253d2db649a2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows a small fragment of a curved object, not a recognizable sport ball. It does not clearly depict the object class." } }, "758f9c854fde422d8efa3b7f99858660": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basketball hoop and stand, not a sport ball like a basketball, soccer ball, etc." } }, "75edd92fe20640dc96ec18b3a9412895": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a stone or concrete sphere, likely an architectural element, not a sport ball used in games. Its material and purpose are different from the target class." } }, "7616f1adad4040e1bc33a5c4bff2d2f0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "77316c744dc24d969996857145d6717c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a stylized representation of a Poké Ball (specifically, a Love Ball) from the Pokémon franchise, not a real-world sports ball like those listed in the class definition." } }, "78e27dad7d2f49b6b6405600799b680d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic blue sphere, which lacks any specific features (like patterns, lines, or textures) to clearly identify it as a sports ball (e.g., basketball, soccer ball, tennis ball). It's too ambiguous." } }, "7945a0d7f2d540dcbb91f567783cd697": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single spherical object which can be considered a generic 'sports ball' or 'beach ball'. The quality is good, and it's suitable for physics simulation." } }, "7a936528fe154261afeb89ca132741b4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture or detail, making it impossible to identify as any specific type of sport ball. It blends significantly with the white background, reducing its quality for training data." } }, "7aa17e963bc84f63ad665e5f8d8d17de": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single sports ball (likely a soccer or volleyball) against a clean background. The quality is acceptable, and it represents an object commonly used in physics simulations." } }, "7be0730ea025439590dc10ac7b4e127e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the specified class 'sport_balls'. The image quality is good, and it is suitable for physics simulation training. The worn texture adds diversity." } }, "7bf2f8cc2bc54dfc9809c2245b5c775c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is adequate, and it's suitable for physics simulation." } }, "7d185fa512604b3aaeca8a820c500661": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation (e.g., bouncing)." } }, "7def3dcdfef24920bb0fac7acf1042bc": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small in the image and lacks detail, making it difficult to clearly identify as a specific sports ball. The image quality is low for training purposes." } }, "7f5f7e93482c40c8aee66fda16543d3a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the stitching of a baseball, not the complete ball itself. It does not clearly depict the object class." } }, "7f60ec770fee4402aba503607c087705": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic white sphere with no texture or distinguishing features. It does not clearly depict any specific type of sport ball (e.g., golf ball dimples, ping pong ball seam/logo)." } }, "7fd4bb9ed8064e3ba948c891a5576860": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a ball pit structure containing many small balls, not a single, clearly identifiable sport ball from the specified list. We require images of one single object." } }, "807f079951aa46ad8e59364e8a30c92d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (four balls). Additionally, these appear to be Poké Balls from the Pokémon franchise, which are fictional items and not actual sports balls like basketballs, soccer balls, etc." } }, "80b94ea2406c4ff28b4120995764c6ed": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "80f10af6cb604d7cbbd141050d093b2b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and it is suitable for physics simulation training." } }, "816dc0b3bb2140c9bb1f65fc031445fa": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it difficult to clearly identify the object as any specific type of sports ball. It appears as a faint white shape on a white background." } }, "8175ffa9116840928a09a63bf40888c5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basketball that is cut in half and fragmented, not a complete object. It also contains another distorted shape. We need images of single, intact objects." } }, "818462ce3d84424884d136db06e72244": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "82184b83687546ee9eedc4b84b13d496": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic white sphere surrounded by fragments, not a recognizable sport ball. It also contains multiple objects (the sphere and the fragments), violating the single object requirement." } }, "826a69c6aa2b472098ad91f9ceca9020": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The texture of the ball does not resemble any common sports ball, making it difficult to classify within the specified 'sport_balls' category." } }, "826abbe69b854518abe781db2d74ba3d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too heavily cropped and does not clearly depict any recognizable object, let alone a specific type of sports ball." } }, "82fda2cfa8974171ae64d4e434aa4b9b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a sign or stand, not a sports ball." } }, "8391723b273741a789add445ff7be896": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sports ball." } }, "83c530db188d417189609264d4bdd7bd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble any standard sport ball. It appears to be a stylized object, possibly a toy or a fantasy item, with spikes and an unusual shape, making it unsuitable for the 'sport_balls' class." } }, "84ea8b103e874a9b854fd962d3ed1c28": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a very small, abstract black shape that does not clearly depict any object from the 'sport_balls' class. It is unrecognizable." } }, "854b9a4d04f544bcba320f6d9a6f4ee1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object, let alone a sport ball." } }, "8566e406c12d4143a1dd2a71e0b5fc25": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The quality is acceptable for a 3D render, and it's suitable for physics simulation." } }, "859e465e7682443aabb068b925264f6e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, washing out details. While it has a spherical shape and a dimpled texture potentially resembling a golf ball, the texture is highly exaggerated and unrealistic, and the overall quality is poor due to the brightness." } }, "85f5c6a7905245f291458cc6f2518ee1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "865e77c3ce8948809b28e53ba2285008": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a fragmented sphere with a large opening, it does not clearly depict any recognizable type of sport ball." } }, "87ba443adeb44d2e88263cf4102eb64a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (grey spheres, yellow strands, a container) and none of the spheres are clearly identifiable as any specific type of sport ball. It does not depict a single, recognizable sport ball." } }, "88590cf1e42e44bfb85ce3b6b1959648": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is acceptable and it's suitable for physics simulation." } }, "886c780f5b75441dacbb5a9b0622ff83": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to discern the object's details. While it has a vaguely spherical shape composed of panels reminiscent of a soccer ball, it's highly abstract, fragmented, and doesn't clearly depict any recognizable sports ball." } }, "8965462b14ea420690822ff6e3d1abd0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and the object is suitable for physics simulation." } }, "8afd2bfbe8c14fad937f768617d55f9e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract geometric shape, not any recognizable type of sports ball." } }, "8c9078e0f2a542a78e1f58498b52406c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "8d17cb0964334a6cbe4b0e293c238956": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "8d19a73d9cc64e6e8dbc0ff31eb260a5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely black and does not depict any object. It is too dark to be useful." } }, "8dd8ce98a0304753820115845741a6bd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object or its features. The quality is too low for training data." } }, "8e1fde9b90c642e38e3644460d27f9c6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a generic white faceted sphere and lacks the specific visual characteristics (color, texture, markings) to be clearly identified as any particular type of sports ball from the provided list. It appears too generic and low-detail for the intended purpose." } }, "8e4d2af61f1742ce9e43561f9fdba055": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single tennis ball, which belongs to the sport_balls class. The quality is good, and it's a suitable object for physics simulation (e.g., bouncing)." } }, "8e9d8ac2dccc48e3bb817793cf1aebed": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it difficult to discern the object's details. Additionally, the object depicted does not resemble any type of sport ball." } }, "8ed7f688d9b4441e931c45545043cd6e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "8efa7b8205714dc88a2e3e81b10ccf66": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble any known type of sport ball. It looks more like a fantasy or sci-fi artifact." } }, "8f1cbc19dc414ad89097eabe063ada88": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The quality is acceptable and it's suitable for physics simulation." } }, "8fb1078a83014e378681539583ca0527": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several soccer balls), violating the requirement of depicting only a single object." } }, "8fc1f5d1db3640f0a05c55ceff58b379": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable sport ball. It also contains multiple elements (fragments, structure on top) besides the central shape." } }, "9085d6e964a64880a6af9c73af6d1777": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "913b42446b8e4f51bc6f03dd4f26277c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It appears to be an abstract molecular structure or a similar complex model, not a sports ball." } }, "921f48b9a47d458a9d67cf46a42ff17e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic two-toned sphere. While it is a ball, it lacks any specific features (texture, markings, standard colors) to clearly identify it as a 'sport ball' from the provided list (e.g., basketball, soccer ball, tennis ball, etc.). It appears too abstract or like a basic geometric shape rather than a recognizable sports item." } }, "93ed8a180c674f77a5e9431d4b58c7b8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "9537582b25fb4fdb9ef5478c3c06f77e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic red sphere with no specific markings or texture to identify it as any particular type of sport ball (e.g., basketball, soccer ball, tennis ball). It's too abstract and doesn't clearly depict the target class." } }, "959a779a050745c5bd27f200928ddbc6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The quality is acceptable, and the object is suitable for physics simulation." } }, "966c74cfad20469f8beb3afac62bb9ea": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic sphere with a simple two-tone color. It lacks the specific features, textures, or markings (like panels, seams, dimples) to be clearly identifiable as any particular type of sports ball (e.g., basketball, soccer ball, tennis ball, golf ball). It is too generic for the 'sport_balls' class." } }, "97188bc15d6741cd93fcf58aa97cb015": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "9796bcdd0869446da27813947ecceb8b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic orange sphere which lacks the specific markings or texture (like lines on a basketball, panels on a soccer ball, fuzz on a tennis ball, etc.) to be clearly identifiable as a specific type of sports ball. It is too ambiguous for the 'sport_balls' class." } }, "97b8b4e8a83045c5a5673f19d6b21e39": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic yellow-green sphere. While it resembles the color of a tennis ball, it lacks any defining features like seams or texture that would clearly identify it as a specific type of sports ball. It is too generic for the requested class." } }, "98f0933f69164f7e80dff102b1f9a761": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "98f92c43f3da4f9e9f5f12010e7f7bd2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost invisible and impossible to identify. The quality is too low for training data." } }, "9950ca58ace54ee2ba6ba8a1c7e15203": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "995bcdab5a2c467b982b7c8c1c13be89": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic sphere with no texture or markings. It does not clearly depict any specific type of sports ball (like a basketball, soccer ball, tennis ball, etc.) and lacks the visual detail needed to infer physical properties for simulation." } }, "997171afcda64170a5d2d9d971ddc7a3": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out (too bright) and the object is not visible or identifiable." } }, "9acb0b1a53964a8e906bc7425e43a6cd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "9b502e4e436f4417b99736999ef7ef73": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to discern details. Additionally, the object depicted does not clearly resemble any common sports ball; it looks more like a decorative item or fruit in netting, and it includes a stand." } }, "9ba2d35fe7a846a0bd6992d2cf7c6f51": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "9c7c903c46534033819298c8da948e31": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains other objects (cartoon hands) in addition to the ball, violating the 'one single object' requirement. The ball itself is also quite generic and not clearly identifiable as a specific type of sports ball." } }, "9caca223d4ee4dd69cca3225c9b6d993": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic, low-polygon purple sphere. It lacks any specific details, textures, or markings (like panels, seams, dimples) to clearly identify it as any type of sports ball (e.g., basketball, soccer ball, tennis ball, etc.). It's too abstract and doesn't represent the target class adequately." } }, "9e82d5dcfcb84c4a939f46d479a91121": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball/beach ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation training." } }, "9f63803d93714eadaa869c23cee0581d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object in the image does not resemble any type of sport ball. It looks more like a buzzer or a warning light." } }, "a13c272c2ed7499ea637e58460985858": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Christmas ornament (bauble), not a sport ball." } }, "a19b55cc3de341f7b793c184bfa89b1f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic semi-transparent red sphere. While it is ball-shaped, it does not clearly depict any specific type of sports ball listed (e.g., basketball, soccer ball, tennis ball). The texture and transparency are not characteristic of common sports balls." } }, "a1c2cb94f9a449a280e7a199c34909b8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "a215508653e14f728845ac14a6466f6b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single cricket ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "a24b4b74a40b42aeb083cd447b79683a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a table or bench, not an object from the 'sport_balls' class." } }, "a26f7db1e4a6424db1cd25d58bfc63fe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a robotic object, possibly a toy or drone, which is shaped somewhat like a soccer ball but has mechanical legs and other attachments. It is not a standard sports ball and therefore does not belong to the requested class." } }, "a33244faa08a4cacaf4a2750b1307e57": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "a3d4f2d7a5d74542b1c10bc4302db138": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation." } }, "a423e8bb9a374f258f5cb2b9ae642db8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic, untextured sphere. While it has the basic shape of some sports balls, it lacks any specific details (like seams, panels, color patterns, or texture) to clearly identify it as belonging to the 'sport_balls' class (e.g., basketball, soccer ball, tennis ball). It's too ambiguous for training purposes, especially for learning specific physical properties." } }, "a43673bbcc7a467a9c418ca1dac87131": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere on a gear-like base, which does not clearly resemble any standard sports ball (basketball, soccer ball, tennis ball, etc.). Additionally, it includes the base, violating the rule of depicting only a single object from the target class." } }, "a5ee4fbeb7104b4d927e27b10504be54": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a generic, somewhat lumpy sphere that does not clearly resemble any specific type of sports ball listed in the class description. The texture and shape are ambiguous." } }, "a676438e46d74fa8bb69ba311aca5e47": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too cropped and does not clearly depict any recognizable sport ball. Only a small fragment of the object is visible." } }, "a6a158611dbb4d76ba876d0aa14146cd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is acceptable, and the object is suitable for physics simulation." } }, "a7419d14543b4640b53d177a1606c2eb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a beach ball or a generic sports ball, which falls under the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "a7c51545ecf0438ab0a877a31aac6571": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single sphere, which falls under the general category of 'sports ball' or could represent a simplified version of several specific types (like a beach ball or bowling ball). The image quality is good, and it's suitable for physics simulation training." } }, "a804776436c24d80823429bc5602d201": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several bowling balls stacked), not a single object as required." } }, "a815ed8fec774767ba18485a12d5e102": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (four different balls), but the requirement is for images depicting only a single object." } }, "a9129483b3ca4d79b26fd749f7792001": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a sphere with an abstract wavy texture, which does not resemble any of the specified sport balls (basketball, soccer ball, football, etc.). It doesn't clearly depict an object from the target class." } }, "a94add7a0b224046a1494a23e2ece2d5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an insect, not an object belonging to the sport_balls class." } }, "a990620a0df04379bf4790dec9043f11": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects stacked together, and these objects do not appear to be sport balls. They look more like training markers or domes." } }, "a9ba252be91f450e935c0356aafb870a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is spherical, but its texture and pattern (interwoven pink and yellow strands) do not resemble any recognizable sports ball like a basketball, soccer ball, tennis ball, etc. It looks more like a decorative object or a ball of yarn, making it unsuitable for the 'sport_balls' class." } }, "a9e995cb9c5d4092afe8b2a05a04c1dd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bowling ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulations." } }, "a9ed84b06e6549e486aa585129a1cf48": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The quality is acceptable, and it represents an object suitable for physics simulation." } }, "aa2b985b302c49bd803dad2b5c24960c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted is a dome shape, not a sphere, and does not resemble any common sports ball." } }, "aa611b8870e44e6d88d4a0b2ac9fe12e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a golf ball, which is in the class list, but it also prominently features a stylized golf green. We require images of only the single object itself, without significant additional elements or backgrounds." } }, "aa98cb10cd6340709175b61928f63b49": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark, and the object's texture and color make it difficult to definitively identify as a specific type of sports ball. It also contains grass elements which distract from the main object." } }, "aa9d24288a2c45c8875a59c0f7be5deb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making the object almost invisible and impossible to identify clearly as a sports ball. The quality is too low for training." } }, "aadd36de6c214f1189490003ffbb40d9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic grey circle without any texture or markings. It cannot be clearly identified as any specific type of sports ball or even a generic sports ball. It lacks the necessary detail for the intended use case." } }, "abdbeeb5609c48f9a801107c3cf01174": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "ac100cbc729245ef91580206eef2e4bd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a tennis ball (a type of sport ball), despite the unusual color. The quality is good, and it's suitable for physics simulation." } }, "ac7bae9592b14cc4a2b68f69723de768": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "acb0950d593b4a228e207c253b59971f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects: a sports ball and a shoe. We require images depicting only ONE SINGLE OBJECT from the target class." } }, "ad80889cf8094dfea4e888735e954ef1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is acceptable for training data, and a soccer ball is relevant for physics simulation." } }, "adbb26da045e4ca8aad09461e414f2a5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a stylized, possibly sci-fi or fantasy orb, not a recognizable sports ball from the provided list (basketball, soccer ball, etc.). While spherical, its design and texture do not align with any common sports ball." } }, "aea3e577bcf3450c986fcc82bfd18a33": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white space, and the object is too small and indistinct to be identified as any kind of sports ball." } }, "af2ac66229dd4429953a9e5b9fc2fdc1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation." } }, "af3d540f070e4fd18c036b3e73545b16": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern any details of the object or even confirm its shape reliably. It lacks the quality needed for training data." } }, "af42c28a39cf4ade992ea6024355cdb5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. The object shown appears to be some kind of antenna or beacon." } }, "b03e6a597b794953977c7d60c27492bd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a spiky, metallic object, not a sports ball like a basketball, soccer ball, etc. It does not belong to the requested class." } }, "b0b50a16aa5d431e8ed799c1a413025c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single golf ball, which belongs to the 'sport_balls' class. The image quality is good, and a golf ball is suitable for physics simulation in a video game." } }, "b13a0d69d6ca48d4b125de2cc2e7f940": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single cricket ball, which belongs to the requested 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "b173574f823f425fb0cb710cde4278ca": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the requested 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "b1c66721f837407c9afb305ad7099ff0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a basketball hoop, not a sports ball, which is the target class." } }, "b25f2e3112a74ebb84a6c1b864afb750": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only half of a sphere, not a complete sports ball. It does not clearly depict any object from the specified class list." } }, "b34ef557dc04429789c3338dc20ab3f3": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "b3c9aaebc7ce4f3497e5a58f165f0e3d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sports ball." } }, "b45d9f4370104ee28a5d84652201a6d6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor. The white parts of the soccer ball are overexposed and lack detail, making it difficult to discern the texture and material properties needed for physics simulation." } }, "b4c004563b954ce98aab692455ac3cf8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low and heavily pixelated, making it unsuitable for training data aimed at realistic physics simulation." } }, "b50810d5562f42ddaeeb7fd6eeb2514a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects: a small yellow sphere (potentially a tennis or ping pong ball) and a large, unidentified blue ellipsoid shape. We require images with only ONE single object from the target class." } }, "b5c3fa8c6fa04972b62a4bc69127908b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic orange sphere lacking any specific details or textures that would clearly identify it as a particular type of sports ball (like a basketball, ping pong ball, etc.). It is too ambiguous for the target class." } }, "b6bfe1c7bb3b4fd691f24914e430a2b2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. Although the color is unusual, the object is recognizable. The image quality is good and it's suitable for physics simulation training." } }, "b6e6a061f91c477db1a6acb6c0637dd6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the specified class 'sport_balls'. The image quality is good, and the object is suitable for physics simulations." } }, "b7357866e35e4e1181e7488ae0577bdb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single basketball, which belongs to the sport_balls class. The quality is acceptable for training data, and a basketball is suitable for physics simulation." } }, "b77736c059414a1a826ec1049381dff5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed or the object is white on a white background, making it almost completely invisible. It does not clearly depict any object." } }, "b81ac133ee664dcd997c486dc6edf169": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object identifiable as a basketball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation training." } }, "b88bfa1512224245b515526dddf2e4c7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, not one. Additionally, the objects depicted are Poké Balls, which are fictional items and not standard sport balls like those listed in the class description (basketball, soccer ball, etc.)." } }, "b89b03eb963740cc83407ac626a3855f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the sport_balls class. The quality is acceptable for training purposes, and the object is relevant for physics simulation in games." } }, "bb06db406f8f415ab3ac597a3a202c27": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "bb2896720a1e4aefba3ab381d4b4554e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "bc10ff32ac7343b8b0b5d71cece675cb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single volleyball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "bc77491924ab4137802723a06639400e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects: the ball and a stool. We require images depicting only a single object from the target class." } }, "bd0a3801b75f4456a94ff4f7e7e1742a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is sufficient, and the object is relevant for physics simulation." } }, "bd4b91dd054e4a33b1cd5e1d608e90c4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "bd5708568d9042bf8b0e4893a416e92e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The quality is acceptable, and it's suitable for physics simulation." } }, "be2f59a574bb425397fade26b97a573c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tank, not an object belonging to the 'sport_balls' class. Additionally, the image is extremely bright and washed out, making it low quality." } }, "bf8243bc8ec94acfbd966adcc5f1a11c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic, low-polygon grey sphere. It lacks any specific textures, markings, or features (like panels, seams, dimples) that would clearly identify it as any type of sports ball (e.g., soccer ball, basketball, golf ball). It is too abstract and does not clearly depict the object class." } }, "c01eaa7ec0da452dba82af027dda5f75": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object recognizable as a sports ball. It shows abstract geometric shapes." } }, "c05da41e02424af3bec092290766b080": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single spherical object with a colorful pattern, resembling a beach ball, which falls under the 'sport_balls' category. The quality is acceptable, and it's suitable for physics simulation." } }, "c065c43f9c2b48ef93f4d1788d2de8da": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "c08cfdbaf515464a8c1cc05b3ce8934d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "c13e5d9f7aa24a63aac90e2280de5aec": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object from the 'sport_balls' class. It appears to be a distorted texture or an extreme close-up that makes identification impossible." } }, "c14e98b47fdc420395e56a26986a7f10": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The quality is good, and it's suitable for physics simulation." } }, "c17637ca11494004bceced81e1fbb621": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "c18644406e1a434688d13d84d7356022": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "c1c38a0e17fa4497812b2b612ef4a38a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object from the 'sport_balls' class. It appears to be a wooden object being carved or shaped, along with a tool and shavings." } }, "c2874bc9abb945488fc69da5fb3cfe2d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture or detail, making it difficult to identify as any specific type of sports ball. It appears as a generic white sphere." } }, "c34f5cd749754ebaa3112fca99f531ef": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any recognizable object, let alone one belonging to the sport_balls class. It appears to be an extremely thin slice or edge of an object, making it impossible to identify." } }, "c42d928fd28740849ccdb46e696fa3bc": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large collection of generic white balls, not a single identifiable sport ball from the specified list. The image quality is also poor due to excessive brightness, washing out details." } }, "c458d71e886542a8ab2ec805b97a409c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic orange sphere with no specific markings or texture to identify it clearly as a particular type of sports ball (e.g., basketball lines, soccer panels, tennis ball fuzz). It is too abstract and lacks the details needed to represent a specific object within the 'sport_balls' class." } }, "c489bd12674b4c46bd0a6f0e45c457e0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basketball hoop and backboard, not a sport ball like a basketball, soccer ball, etc." } }, "c48f10e4102d4c3ba2282d0c35d85c21": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a robotic spider or insect, not an object belonging to the 'sport_balls' class." } }, "c64119f83ef54b5da36106662313a07c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested class 'sport_balls'. The quality is good, and it's suitable for physics simulation." } }, "c670f94cb535438da71fbd30b098de7e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere, but the texture is highly abstract and does not clearly resemble any recognizable type of sports ball. While diversity is encouraged, this texture is too far removed from typical sports balls to be useful for training." } }, "c6da7a1179d84ddb83e089ce33c24c78": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright, washing out almost all detail. The object is barely visible and cannot be clearly identified as any specific sports ball." } }, "c6dfb019a1d44157963eca4ef5e5e06b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "c8976802708d45c39b695e50a0648f2c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object (a soccer ball) almost invisible and indistinguishable from the background. This is low quality." } }, "c94d08a3c24349bbbbd7213532cd05ee": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "caaf5be9a4fa4141bfe332e033ef4afe": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an extreme side view of an object, making it impossible to identify as any type of sport ball. It does not clearly depict the object class." } }, "cb651df959b04b6cae38d05682601580": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and indistinct in the image to be clearly identified as a sport ball. The quality is too low for training purposes." } }, "cc05187d1647454585f3ac0871dcc8fa": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object's faceted shape and unusual surface texture do not clearly resemble any common sports ball listed in the class description. It looks more like an abstract geometric shape or a crystal." } }, "cc1404296da546ba8fb82d5b6b69a917": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single spherical object, which falls under the general category of 'sports ball' or potentially 'beach ball'. The image quality is good, and the object is suitable for physics simulation." } }, "cc7bf5c7a8b647c7b8f10701c4cd620f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation training." } }, "cd55f0ea3a784c64a1eac861c731950e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a basketball court, not a sports ball like a basketball, soccer ball, etc. We need images of the balls themselves." } }, "cd6f6c89fa5647d694991901f12becc2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a Pokeball, which is a fictional object and not a type of sports ball listed in the target classes (e.g., basketball, soccer ball, tennis ball)." } }, "cdcfd1ddce1a4cdfa4547ba5cf3dd5ba": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify any object, let alone a sports ball. The quality is too low for training data." } }, "ce019945355c4ed7b8cc319b35997bad": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any object, let alone a sports ball. It appears to be a blank or corrupted image." } }, "cea266722325474984c2205a88c6fd52": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which belongs to the sport_balls class. The image quality is acceptable, and the object is suitable for physics simulation." } }, "cee4b24f04c842688dc2e5cbc1cabfb5": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It shows an elongated, stick-like object." } }, "cfbf6138f39443259ad5e0fea79183e8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is a geometric polyhedron with unusual textures and patterns. It does not resemble any known type of sports ball." } }, "cfc9ec23107e4ee5922c50164d90e6f2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, making it difficult to discern the object's details. Furthermore, the object depicted does not resemble any type of sports ball." } }, "d06d152ebbcc44f0b60f37ae9350bf35": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a generic red faceted sphere. It lacks specific details (like panels, seams, dimples, or texture) to be clearly identified as any particular type of sports ball (e.g., soccer ball, basketball, tennis ball, golf ball). It's too ambiguous for the 'sport_balls' class." } }, "d0cf7d007c5540a293910f7ec6750e2a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (tennis ball and tennis racket), but we require images with only one single object from the target class." } }, "d20edf1c5e104ebc846716a9270827b0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'sport_balls' class. It shows some kind of target or landing pad structure, not a ball." } }, "d3e3d3f7a43146a6ba66d9bf64179a78": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a cartoon-like ball with an eye, not a realistic sports ball from the specified classes." } }, "d3e763c7a11c43cbad239a89b9e174b2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a soccer ball, which belongs to the sport_balls class. Although it has a voxelated style, it is recognizable and represents diversity in object appearance. The image quality is good, and it shows a single object suitable for physics simulation." } }, "d3fc2490cbe54e37b6d5b159704c787f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stand or mount, not a sport ball." } }, "d4c560493a0846c5943f3aeea58acb72": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The image quality is good, and it's suitable for physics simulation." } }, "d5164a86118c4756a547e6010aa049ac": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image appears to be a billiard ball. While used in a sport, it doesn't align well with the typical examples provided (basketball, soccer ball, volleyball, etc.) which are mostly field/court/lane balls. It represents a different category (table sport ball) and might not fit the intended scope." } }, "d518ab79c13a4b38bef5f017e1a9eb75": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a small table or stand, not a sport ball." } }, "d606c9efe6ac45df80366037d4c303f1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "d61ed8963b264a71b25e8e04aed2b5a0": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation. The non-traditional color scheme adds diversity." } }, "d654768b0a624940a8ac1f0be7319a8e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested 'sport_balls' class. The quality is good, and it's suitable for physics simulation training." } }, "d696e679e85e48bc987ec6df8116ec21": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (a bowling ball and a bowling pin), violating the requirement for a single object per image." } }, "d9a6afedd95e43339ffd1bfd83da82a6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a beach ball, which falls under the 'sport_balls' category. The image quality is sufficient, and the object is suitable for physics simulation." } }, "da3a78d46abc4abfb699461b3421ff48": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted does not resemble any standard sports ball from the provided list. It looks more like a gem or a fantasy orb due to its texture and faceted surface." } }, "da67ff0a13f749bd88a924d14575600e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation learning." } }, "dab2073ee4084e5f8c5f8bfc53831b74": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the specified class 'sport_balls'. The image quality is good, and the object is suitable for physics simulation." } }, "db5f9c28708142909b15212625a127f9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "db6cf0d5580e47758d480a539fc3dc2d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a geometric structure made of rods and nodes, not a recognizable sports ball like a basketball, soccer ball, tennis ball, etc." } }, "dba1bc53994340dcba81ce26eb9f24fd": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object. It does not resemble any type of sports ball." } }, "dbbfa480a2e4476c8b0ca91667087f44": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a black rectangular box, not an object belonging to the 'sport_balls' class." } }, "dc8224840a6b43f08688db0ce45be476": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and it's suitable for physics simulation purposes." } }, "de15e5fbc38a4ea8a367e3c4b49b9080": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The quality is acceptable for training, and it's a relevant object for physics simulation." } }, "df285705169f4e5da9cefefd88bc0d3c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is spherical and orange, but the prominent seam and the protrusion on the side do not clearly match any standard sports ball listed in the class definition. It looks more like a stylized toy or container." } }, "df9b3a2d51db493980d68fa3b56360bb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "dfc64112213444a6bc50a44e4f7eda82": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The quality is good, and it's suitable for physics simulation." } }, "dff7be715f90478282f75c80930f1c22": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "e0368cec6d0c4d91b48960528f760b9f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the requested class 'sport_balls'. The quality is good and it is suitable for physics simulation." } }, "e041d432d5c141e0a8f57ce2784ca47d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single sports ball. Additionally, the image is too bright/overexposed, and some objects are only partially visible." } }, "e074fd16148746eeb23510ae33ddeb7f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very poor; it is extremely bright and washed out, making it difficult to discern details. Additionally, it only shows half of the object (a golf ball)." } }, "e2af87d30bce4ee08611c20bbab345e1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a basketball hoop structure, not a sports ball which is the target class." } }, "e353e1acbf0d4b03b3bf4a9b05785554": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sports court or enclosure, not an object from the 'sport_balls' class like a basketball, soccer ball, etc." } }, "e3600e525d444209bc69b32de44c6bb8": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a ping pong table with paddles and multiple small ping pong balls. It does not show a single, clearly depicted sport ball as the main subject, violating the 'ONE SINGLE OBJECT' requirement." } }, "e393be9a47a24a7cae6142e13f5686d1": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single soccer ball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "e3b4e0d9e3864fb584adbacb7a8adeb2": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The image quality is good, and the object is suitable for physics simulation." } }, "e3c254d284ab4135bda47edec32f6acf": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three soccer balls and a surface), violating the requirement for cleanly depicting only ONE SINGLE OBJECT." } }, "e3c719662981472f8479031a074bc727": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "e400c7a42e24465695a12eae5de51b2b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flat plane, not a sport ball." } }, "e48b6c655732464fae11b25bf09771aa": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic white sphere with no discernible features (texture, seams, patterns) to identify it as any specific type of sports ball. It lacks detail and is too generic for the 'sport_balls' class." } }, "e5712bffe9714a6aaa148b6b262b748d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single ball, which falls under the general category of 'sports ball' or potentially 'beach ball'. The image quality is good, and it's suitable for physics simulation." } }, "e66d8bba16474007a91f7087608b7014": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (a soccer ball and a plain white ball), while the requirement is for images depicting only a single object." } }, "e69cc5f09157437596af827e25d6acd7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "e6c5d0811bcd46a2905082b134701bd9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bowling ball, which belongs to the 'sport_balls' class. The image quality is good and it is suitable for physics simulation." } }, "e76702c2a51045dd82894cfce982447e": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a speed bag attached to a stand, not just a standalone sports ball like the examples provided (basketball, soccer ball, etc.). It depicts a composite object rather than a single ball." } }, "e78940dc9bc14145bb22ec2586d3431c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a heavily distorted and incomplete rendering of a basketball. It is not a clear depiction of the object and is low quality due to the rendering artifacts." } }, "e7d33789de2b4fd286cf9190b855de28": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "e83aa357cbbe4a5e8f47a028ae1166ce": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it difficult to discern the object's details and texture. Additionally, while it is spherical, it doesn't clearly resemble any standard sports ball from the provided list due to its structure (many holes) and the poor image quality." } }, "e9d597bbf1ef4f9183ddf08ba8c28c88": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, lacks contrast, and the object is almost invisible against the white background. It is impossible to identify the object, let alone determine if it belongs to the sport_balls class." } }, "ec14d4c49b0345209bf7a7388dacbd47": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is not a sport ball. It appears to be some kind of ring or decorative container, not belonging to the requested class. Additionally, the image quality is poor due to excessive brightness and low contrast." } }, "ecb9a79b1b9e4fa6bf492ca5ccf06011": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a complex lattice sphere, which does not resemble any common sport ball like a basketball, soccer ball, tennis ball, etc. It appears to be more of an abstract or decorative object and is not representative of the 'sport_balls' class." } }, "eccad1195469423aada2f0e7725a2890": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation purposes." } }, "ecf9096a85ac4fb7b9cc07fc53c57a14": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or its details. It is of very low quality." } }, "ed408aa92cc14dcba17839e648faba2a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a dome or half-sphere, not a full ball typically used in sports as listed in the class description (basketball, soccer ball, etc.). Therefore, it does not belong to the 'sport_balls' class." } }, "ed57b69b571046ea8c67112732a65896": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a beach ball, which belongs to the 'sport_balls' class. The quality is good, and while it includes a small patch of ground/water, this provides context relevant for physics simulation (interaction with surfaces) without cluttering the image or obscuring the main object." } }, "edc344dcc65440ea97b5eae84f1957a4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation." } }, "edce643d9ea246b68fabad52dcfe92ec": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is spherical but does not resemble any standard sports ball listed in the class description. It appears to be a decorative or abstract object rather than a functional sports ball." } }, "edfe6a80a7ac4cc88d24481a1f97418a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Christmas ornament (bauble), not a sport ball." } }, "ee18423fb5a54fa6bfb07094848feb70": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image is extremely bright/overexposed, making it difficult to see the details of the object clearly. The white parts blend almost completely with the background." } }, "ee6c854ba31743bc8ac0a5c96316d662": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and blocky (voxelated) and does not clearly resemble any recognizable type of sports ball." } }, "eee26aeb02e947008e3a258d99a0937b": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a broken tennis ball along with a fragment of another object (possibly a racket). We need images of single, intact objects." } }, "ef5803a1fa694d429d3627d5a026d2ab": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its details. The quality is too low for training purposes." } }, "efcea954e051494bbc710afd6bd4315a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone carving depicting people playing with a ball, not an actual sport ball itself. We need images of the sport balls, not representations of them." } }, "f062524bd9cd436e8e859d7ae914ab6c": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any recognizable object, let alone a sports ball. It appears to be abstract geometric shapes." } }, "f08dada8b253466daff7bfd6445c9e41": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single basketball, which belongs to the 'sport_balls' class. The quality is good, and it's suitable for physics simulation training." } }, "f0feb812d4b7416ab630e79a531dc601": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a Pokeball, which is a fictional object and not a real-world sports ball like those listed in the class description (basketball, soccer ball, etc.)." } }, "f1a674f036e047eaa074ad746964a6e4": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a can or container, not a sports ball." } }, "f220d4765ec14daf80eb2a8a8d36c923": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a sphere, but the texture and pattern do not clearly identify it as any specific type of sports ball listed in the class description. It looks more like a generic patterned sphere or possibly a toy." } }, "f33ed1f09bef4d9bb757c25c1304ec96": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object appears to be a ball of yarn or fabric, not a sports ball like those listed (basketball, soccer ball, etc.). It does not belong to the 'sport_balls' class." } }, "f4fd481c74bc4e2bb55555f12cd6e1ba": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The object in the image is spherical, but its texture is very irregular and lumpy, making it difficult to identify as any specific type of sports ball listed (e.g., basketball, soccer ball, tennis ball, etc.). It does not clearly depict an object from the target class." } }, "f536b891d32847ae8b8660ccbf398611": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single golf ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "f6323fb9e501442fb1c60f931e713658": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three distinct sports balls and a stand) instead of a single object as required." } }, "f7935e72f7754f2daca66cafeb8281eb": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a tennis ball, which belongs to the sport_balls class. Although the texture is simplified, the shape and seam pattern are characteristic. The image quality is good and suitable for training." } }, "f7fb5ae0d11e4d37a2d9ebccfcba5592": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor due to excessive brightness/overexposure, which washes out details and makes the texture unclear. While the object shape resembles a sports ball (like a cricket ball), the poor lighting conditions make it unsuitable for high-quality training data." } }, "f923538fe3034464aeeef036d2b6afe6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single baseball, which belongs to the 'sport_balls' class. The image quality is good, and the object is relevant for physics simulation in video games." } }, "f93b0d8fb569440b8aa1449440a1614d": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a ball that is severely flattened or distorted, not representing a typical shape for any of the listed sport balls. This makes it unsuitable for learning standard physics parameters for the class." } }, "f970bea6d4bd4bdbbd699321783138a9": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts chocolate truffles or similar food items on a plate, not any type of sports ball." } }, "f9f92c3196ce41f9acac925d3c9f7116": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a basketball hoop and backboard, not a sport ball, which is the target class." } }, "fad641f2a73e4924b8118acfe1bde2a7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tennis ball, which belongs to the sport_balls class. The image quality is good, and the object is suitable for physics simulation." } }, "fb5caecebe0d4fb0b9cbbc76a38cb413": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract geometric structure, not a sports ball like a basketball, soccer ball, etc. It does not belong to the specified class 'sport_balls'." } }, "fb95c7cd06bd4ed3b056e2dde34d7295": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a white hemisphere with a hexagonal pattern, which does not clearly represent any specific or generic sports ball from the provided list. Additionally, the image is overly bright and lacks detail, making it unsuitable for quality training data, especially for inferring physics parameters." } }, "fc8f1162901a4e38b506fe1ab229f296": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bowling ball, which belongs to the sport_balls class. The image quality is good and suitable for training." } }, "fd042692e0d74c27927949ef923233bf": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a sphere, a hoop-like structure, blocks, grid structures) instead of just a single sports ball. The sphere itself is very generic and lacks the distinct features of a specific sports ball." } }, "fda0ddc50a134455bedf3913fb6b2da7": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single beach ball, which is part of the 'sport_balls' class. The image quality is good and suitable for training data. Beach balls are relevant for physics simulation." } }, "fdd5feaf7755475b892d4dd2e1d8f972": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a small basketball on a yellow cylinder, a patterned base, and a floating blue shape), not just a single sports ball as required." } }, "fe8dcd2debcd43d79a9fa9ed6534bac6": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "feda0e94512d4bd992f294b8c179778f": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a sport ball." } }, "ff3b7016740e403f902a7ee54b07ef52": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The object (basketball) is too small and distant in the image, making it difficult to clearly discern its features and details. The focus is more on the floor than the ball." } }, "ffffdd021dde4159a86bdb720a77fb1a": { "obj_class": "sport_balls", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a ping pong ball, but it also prominently features a large red surface (likely a table) and another object in the background. The requirement is for images depicting cleanly ONE SINGLE OBJECT, and this image includes significant portions of other items." } }, "00130eea9e884209be92f68378a817e8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rubber duck toy, which belongs to the specified class. The quality is acceptable, and it's suitable for physics simulation (e.g., floating)." } }, "0093e31ebf034f6695809eea95578953": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects, not a single object. Additionally, none of the objects clearly depict a rubber duck or a typical bath toy from the specified class list." } }, "00c2cd5dd3c147deab6a0b3b3cddb5a0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts some kind of structure or landscape element, not a rubber duck or related toy." } }, "015d8349c1db4609a510d0f80edcedd5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy constructed from building blocks (like Lego), resembling a fish or submarine. This does not fit the description of 'rubber_ducks_and_toys', which typically refers to soft plastic or rubber bath toys like ducks or other animals." } }, "01ce031bc24444fc8e7cf040129b4774": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost completely invisible and unrecognizable. It does not clearly depict any object, let alone one from the specified class." } }, "0242fe38361c4bdabadcfddb42eb3325": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is poorly cropped and only shows a small, unrecognizable fragment of the object. It does not clearly depict a rubber duck or toy." } }, "0291d4c4952f4f4a9abf974106d88933": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'bath toy' or 'rubber animal toy' description within the requested class. The quality is good, and it's suitable for physics simulation as a floating/squeaky toy." } }, "02fa220795594ecb85284ec1dfc41a4c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "034c64470c6c4f0495aa880488cb34d7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object. It does not appear to be a rubber duck or related toy based on the faint outline visible." } }, "0360a1056dba4140b2c6be3c4abec3a6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bead maze toy, which does not belong to the specified class 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, rubber toy)." } }, "03ea80a7cf89477fa56c95803874c02d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily distorted and fragmented, making it impossible to clearly identify the object. It does not resemble a rubber duck or any recognizable toy from the specified class. The quality is too low for training purposes." } }, "0454cbfcca314e6380fc770b69c75227": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy robot, which does not belong to the 'rubber_ducks_and_toys' class, even though it is a toy. The class specifically targets rubber ducks and similar bath/squeaky toys." } }, "045e232051bf4469bef9372c98174172": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very poor, the object appears distorted and fragmented. Additionally, the object itself (some kind of activity walker toy) does not clearly belong to the specified class 'rubber_ducks_and_toys'." } }, "04a7205ca4974e01a1e769169f814076": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, but we require images with only a single object." } }, "04e86d384a07414f8eb241920b830f88": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of wood or driftwood on grass, not a rubber duck or toy." } }, "0599ce75f70b413e9e05528695047635": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality. It does not clearly depict any object, let alone one from the 'rubber_ducks_and_toys' class." } }, "05f236fc94e84022b90168437c43b453": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a grey box, not an object belonging to the 'rubber_ducks_and_toys' class." } }, "06b32aca8ac84b648111c452a927ddf0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class that focuses on rubber ducks, bath toys, and similar items." } }, "08271bc54cef437bab577f8ea5738f50": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a handheld gaming console (Game Boy), which does not belong to the class 'rubber_ducks_and_toys'." } }, "08d3d7cc1bbc4835973e54ced42902ca": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "09740836b5f04e8397a3b826ced11ab0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy tank, which does not fit the specified class of 'rubber_ducks_and_toys' (like rubber ducks, bath toys, squeaky toys)." } }, "099f7ee70c7d4716aeecb05329009702": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single toy duck, which belongs to the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "09beba2fa834415f89734b21376fd886": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rubber duck toy, which belongs to the specified class. The quality is good, and it shows a single object suitable for training data. The hat is an acceptable accessory for this type of toy." } }, "0c864d88dd064f98957feaa395e62fff": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a 3D character model of Donald Duck in a T-pose, not a typical rubber duck or bath toy. It doesn't fit the common understanding or physical properties (like being a simple rubber/plastic floating toy) associated with the target class." } }, "0d4c6b9982f444f4a40e20cc9b9df7ef": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized figurine or robot toy on a stand, not a rubber duck, bath toy, or similar item as specified by the class description." } }, "0fc7273dcd1b4c7c957d0f5171f166b2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy tank, which does not belong to the 'rubber_ducks_and_toys' class. The class primarily focuses on bath toys like rubber ducks." } }, "1027c7ffcb3748bb9f1284d40f399e5a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy shark, which falls under the 'rubber animal toy' or 'bath toy' categories within the requested class. The image quality is good." } }, "107bdc7e95604050965de69cf7ab36b3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rubber animal toy, which fits within the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "108466abbd534984905f5cf0604dab52": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows an action figure (Hulkbuster), which does not fit the class description 'rubber_ducks_and_toys' that focuses on items like rubber ducks, bath toys, and squeaky toys." } }, "10c18c7d09484517bfc4918cd042217f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and does not depict any recognizable object, let alone a rubber duck or toy. It is too bright and lacks content." } }, "10ccb872a92f4573a338ddd40fa9910d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts stylized human figures, not rubber ducks or related toys." } }, "113b1409db434066aec805acb957569c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-polygon, fragmented 3D model that does not resemble a rubber duck or any related toy. The quality is very poor, and the object is unrecognizable." } }, "12e1b114a1334226b4cd460a4179e72c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden toy, not a rubber duck or similar bath toy as specified by the class description." } }, "133a9252e82a4505af46eb012641e1e4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cannon, which does not belong to the class 'rubber_ducks_and_toys'." } }, "1371952c777c4f758fa1d3863de10297": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object completely unrecognizable." } }, "1381f6287401493eaa5d2dc99a14da87": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows taxidermied ducks, not rubber ducks or toys." } }, "13e7a7a4800a4b32b5541d0c73d8c66f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single object that can be interpreted as a 'rubber toy' or 'squeaky toy', fitting within the requested class 'rubber_ducks_and_toys'. While the shape is abstract and the texture is somewhat unusual, it represents diversity within the toy category and is suitable for physics simulation." } }, "1436c0030b1a41e69041dfe5bca52e01": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy (a pig), which falls under the specified class 'rubber_ducks_and_toys'. The image quality is good and suitable for training." } }, "1467f79dc22e46c49e68a688865e9f70": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single floating toy duck, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "157a78afd2ed41e892fd153cc2aa0539": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a toy duck) belonging to the 'rubber_ducks_and_toys' class. The quality is good, and it's suitable for physics simulation purposes." } }, "15c553092be0467b8b7e2510ceb4228c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden toy helicopter, which does not fit the description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, plastic duck)." } }, "1691f56428df4b3482614496c6e91083": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Santa Claus figure, which does not fit the specified class 'rubber_ducks_and_toys' that focuses on rubber ducks and similar bath/animal toys." } }, "16d5c9e5557c41c7880cd89d8b714782": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several rubber ducks and a toy truck). We need images depicting only ONE single object from the specified class." } }, "1803c0519e9143398cef07e31b0ceeff": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object is an egg-shaped textured item, which does not clearly depict any specific object from the 'rubber_ducks_and_toys' class list (like a rubber duck, bath toy, etc.). It's too ambiguous." } }, "185359b93eb3424ca73b5cd7719ccc0b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cabinet or wardrobe, which does not belong to the class 'rubber_ducks_and_toys'." } }, "193cf0e349cd48fbb94051db496f55e5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very abstract and poorly defined shape. It is difficult to confidently identify it as a rubber duck or any specific type of bath toy. The lack of clear features makes it unsuitable for the dataset." } }, "19f3599a89ce43a4af821f8850cc2ed3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "1a02fa2590ad496db9db5d1c64c7cff9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy vehicle, not a rubber duck or a similar bath toy as specified by the class description." } }, "1a6788d9d2924a61bc22f352bf8e13e1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows toy blocks, which do not belong to the specified class 'rubber_ducks_and_toys'. Also, there appears to be a rendering artifact or another object partially visible on the right." } }, "1a80d408b39c439e99ecaece86cc560a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright/overexposed, making it difficult to see the details of the object clearly. This impacts the quality required for training data." } }, "1a8569c3721c4b65b8502a859c43be8d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rubber_ducks_and_toys' class, specifically as a 'rubber animal toy' or 'bath toy'. The quality is acceptable, and it's suitable for physics simulation." } }, "1a9460afcadf44ac9f1285c0b56d56fa": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (the toy whale and the wooden surface it's resting on, plus background elements) rather than cleanly depicting just the single toy object. The framing and cropping are also poor." } }, "1aaae7a44f7c43f2853809a9afead22c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that is recognizable as a toy duck or bath toy, fitting the requested class. Although the texture/pattern is unusual (red with white cutouts), the shape is clear, the image quality is good, and it aligns with the request for diversity." } }, "1b41e3e63867499cada873215bf255ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy truck, which does not belong to the 'rubber_ducks_and_toys' class. This class is specifically for items like rubber ducks, bath toys, and similar rubber/plastic animal toys." } }, "1c0cf2363ef04f1eb78d5b11fcb4b790": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized character (possibly a duck or penguin) wearing clothes and riding a unicycle. While it could be considered a 'toy', it does not clearly represent the core concept of a 'rubber duck' or 'bath toy' as described in the class list. It's a complex composite object rather than a simple rubber toy." } }, "1c5b01f4ebf14c4c968e3afd4061e001": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a blocky toy structure, not a rubber duck or similar bath/rubber toy as specified by the class list." } }, "1cb94fdbc1994acf97540ef069eb0a6f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class. This class specifically targets rubber ducks, bath toys, and similar items." } }, "1d61e785d77946c9a026ff4cf2373fa5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is too abstract and does not clearly resemble a rubber duck or any recognizable bath toy. Its shape and texture make it difficult to identify as belonging to the target class." } }, "1d64e844e963468f94506e9cad575680": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is too abstract and blocky. It does not clearly resemble a rubber duck or any recognizable toy from the specified class list." } }, "1de6daa10a0c442aa64ec126ffce7e2d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "1ef90928c6994bb28d8069069dd5adce": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a realistic mallard duck, not a rubber duck or a toy duck as specified by the class description." } }, "1f9bb82116bb4ad187c91181f9f137fd": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a dragon figurine, which does not clearly fit into the 'rubber_ducks_and_toys' category, especially the common examples like rubber ducks or bath toys. It appears to be made of a harder material, not rubber, and doesn't resemble the typical items in this class." } }, "1fa7224dabac432cb348c24d1743ae74": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict any object, let alone one from the specified class." } }, "1fd7202af61c4b68afab3fc5997dc0bd": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood and does not clearly resemble a rubber duck or a typical bath toy described in the class list." } }, "208f64a19478420e9b5874f70315b214": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden barrel, which does not belong to the class 'rubber_ducks_and_toys'." } }, "209a493eeb534b519ab8e5e6377def19": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a model of a castle, not a rubber duck or a related bath/rubber toy." } }, "20acbb7e28a0484f9512227684d8844c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very low-polygon, untextured model that is difficult to definitively identify as a rubber duck or bath toy. It lacks the necessary detail and visual quality for a game asset or for inferring material properties." } }, "21201df8267b462a80dfaf6a15d3aec5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making the object almost completely invisible and impossible to identify. The quality is too low for training data." } }, "2163c3e87e6244b0907978c9c480b8c3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a metallic, chain-like object, which does not fit the description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, rubber toy)." } }, "22848090bba74e738da4b7129fb22be5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object from the 'rubber_ducks_and_toys' class. The object shown appears to be made of wood or some other rigid material and does not resemble a rubber duck or similar bath toy." } }, "22dbda7e09ef49d29203832a68b23bbf": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a broken doll, not a rubber duck or typical bath toy. The fragmentation makes it unsuitable for representing a single, intact object for physics simulation." } }, "24d569b8192e4b2092a7cb365127253c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a rubber duck or toy." } }, "24e5266d9371450a856a8b3a6cebf273": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple unrelated objects (a duck toy, a plane/wall, and palm trees) instead of cleanly depicting just one object from the target class." } }, "2542f004d5e44132b05f854d5a920180": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows only a partial rendering of the object (head and neck/upper torso), not the complete toy. This makes it difficult to clearly identify and unsuitable for representing a whole object in a physics simulation." } }, "25a4fc14c9ea419db841159c2ed32f79": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a model tree, not a rubber duck or bath toy as specified by the class 'rubber_ducks_and_toys'." } }, "263a3724f6b3476ca90de38e68d86c20": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy box or packaging, not a rubber duck or bath toy itself." } }, "26dc0c0a081144af91a962494c147ad1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy dinosaur, which fits under the 'rubber animal toy' or 'rubber toy' categories within the requested class 'rubber_ducks_and_toys'. The image is clear, high-quality, and depicts a single object appropriate for the dataset." } }, "26dcc434507245748ff822107c7ef53d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy (dolphin), which falls under the 'rubber_ducks_and_toys' class. The image quality is good and it's suitable for physics simulation." } }, "270883cdfde245d29712e026fa4befe7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (dog toys), none of which clearly belong to the target class 'rubber_ducks_and_toys'. We need images of single objects like rubber ducks or bath toys." } }, "271798cd680649e68be5958a7f1e072e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor. It is too bright, washed out, and appears fragmented or incomplete, making it difficult to clearly identify the object as a rubber duck or toy. It is not suitable for high-quality training data." } }, "278d7637c0da43058ae6bc06b0b99bf2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a realistic-looking duck (possibly a mallard or a decoy), not a typical rubber duck or bath toy as described in the class definition. The texture and coloration are too realistic for the 'rubber_ducks_and_toys' category." } }, "279ce324c8cf4e6b89011e92e233b107": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a model castle, which does not belong to the requested class 'rubber_ducks_and_toys'." } }, "27a576f6e8e749548a4b7f264def9d9c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and the object is barely visible, making it impossible to identify and unsuitable for training due to very low quality." } }, "27e9f264726849699cd06ef7f85de7fe": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is poorly defined and abstract. It is difficult to clearly identify it as a rubber duck or any specific type of bath toy. The lighting is also quite dark on one side, obscuring details." } }, "28c5055818a64b529660ed4261040f73": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden object, possibly a box or block, which does not fit the 'rubber_ducks_and_toys' class description (rubber duck, bath toy, plastic duck, etc.)." } }, "294ffaaaefc54a92b7ac8ab3e4f0528e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any object, let alone determine if it belongs to the 'rubber_ducks_and_toys' class. The quality is too low for training data." } }, "29c7804b96834717847269ed96fc162d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a green box, which does not belong to the class 'rubber_ducks_and_toys'." } }, "2a0a78e6c910418e86b81bee9b3d12d5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Christmas ornament, not a rubber duck or toy belonging to the specified class." } }, "2a16de5706b34171bc20123e3581d561": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed bunny toy, which does not fit the class description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, rubber toy, plastic duck)." } }, "2a82621f274445ff8898bdb620465f07": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a realistic duck model or decoy, possibly taxidermy or wood, mounted on a base. It does not fit the description of a 'rubber duck' or 'bath toy' as specified in the class list." } }, "2b2f9ff59dcc48c5ab8563afdd184356": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a stylized rubber duck toy) belonging to the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation." } }, "2b4f4fdccde8429a84c17ef2e3363884": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy gun, which does not belong to the 'rubber_ducks_and_toys' class." } }, "2bc3403182964c9f92feeafad6cdabb6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to clearly discern the object's features and material. The contrast with the background is very low." } }, "2bde84068e544f09b0a789768745d3fb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class. This class is specifically for rubber ducks, bath toys (typically animals or ducks), squeaky toys, etc." } }, "2bf26171acd9479389aba4394ffa577b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it difficult to discern the details of the object. This constitutes low image quality." } }, "2bf620389d93433191524431042942e9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract creature that does not clearly resemble a rubber duck or any of the specified toy types (bath toy, squeaky toy, etc.). The visual quality is also low." } }, "2c0fcb5069fe488baf15c60f8b53a516": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a mechanical wooden automaton toy, not a rubber duck or a typical bath toy made of rubber or plastic as described in the class list." } }, "2c87c9f71ee04f29853b90e31e27a5b5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a skull or trophy on a pedestal, not a rubber duck or similar toy." } }, "2ccb17a769fd44158813f74d36fd3072": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy water gun, which does not fit the class description 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "2ddd2698d0984a788145d08652a96184": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image appears to be a trophy or statue, not a rubber duck or bath toy as specified by the class." } }, "2e67af60601b4673ab6323574e26838a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The quality is adequate for training data, and the object is suitable for physics simulation (e.g., floating)." } }, "2f04db2ae9ae470aba628a7537bfac09": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'bath toy' or 'rubber animal toy' categories, which are part of the requested class. The image quality is good, and the object is suitable for physics simulation as a toy." } }, "2f20c6c7c1754e538c8a95ec2518e7b0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden stick, which does not belong to the class 'rubber_ducks_and_toys'." } }, "2f622128d566435a97564781735e0ab4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (sphere, blocks, spinning top), none of which belong to the 'rubber_ducks_and_toys' class." } }, "3008171041174814beb7135e63f686cb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized toy duck, which belongs to the requested class. The voxel art style adds diversity, and the image quality is good. Although it sits on a base, it appears to be part of the single toy object/trophy design." } }, "304f877357de42a6a018b1d96fa571af": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy bear, which does not belong to the 'rubber_ducks_and_toys' class. The class specifically mentions ducks and related bath toys." } }, "30c9908684fc458eb3655593fd0ce634": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image quality is very low due to extreme overexposure/brightness, making details difficult to see and rendering it unsuitable for high-quality training data." } }, "3173e9d9ec9e4bd184bf59686d08c373": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object, a pink toy duck, which falls under the 'rubber_ducks_and_toys' category. The quality is acceptable, and the low-poly style adds diversity. It represents an object suitable for physics simulation." } }, "319ae87bdd364a70afd13b26026f0944": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed toy (looks like a teddy bear), which does not belong to the 'rubber_ducks_and_toys' class. This class is specifically for rubber or plastic bath toys like ducks." } }, "3231416ac85443caade8d0a57fb7728f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "323a8be24f13461d89c8223c793bb226": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class. This class specifically includes rubber ducks, bath toys, and similar rubber/plastic animal toys." } }, "327a076dc0764243b0d7156be505ac58": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the requested class. The quality is acceptable, and the object is suitable for physics simulation." } }, "32c1ab55b7b8489dae3c9a0ecefdb170": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy truck, which does not belong to the 'rubber_ducks_and_toys' class that focuses on rubber ducks, bath toys, and similar items." } }, "32dc8a44ce3c4f2c8b20ebc393b4500b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and distant in the image, making it difficult to clearly discern its features. This impacts the overall quality for training data." } }, "335ee7ce6cd84344aea79be8afddeceb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object, a toy duck (albeit with accessories like a hat), which belongs to the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation purposes." } }, "33619cf0e6b94714bd611fdbd1268cc7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The quality is acceptable, and it's suitable for physics simulation." } }, "33a57e0e208a469e8034ab0ea978488b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class that primarily includes rubber ducks, bath toys, and similar items." } }, "33aea90c377546db9ed3678634a4972b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows the head and neck of the duck toy, not the complete object. We need images depicting the full object for training." } }, "33f6c41fe1b5401cb4afb1addaa83a56": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The object is too abstract and lacks texture or defining features. While it vaguely resembles a figure in a float, it doesn't clearly depict a rubber duck or a recognizable bath toy from the specified class list." } }, "344175298e1a46cba16285da2ad287d7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy duck character, which falls under the 'rubber_ducks_and_toys' category (specifically 'toy duck' or 'rubber animal toy'). The image quality is good, and the object is suitable for physics simulation as a toy." } }, "35c2fbb679e64c258c30dd5b4d55bba5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy robot, which does not fit the specific class description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy, floating toy, rubber animal toy)." } }, "36eb4051e23b4ae980259df3930336e7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, and the object is significantly obscured by a large yellow shape, making it difficult to clearly identify. This does not meet the quality requirements for the dataset." } }, "370164a00a83463b830112dfc52435c6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a robot toy, which does not fit the specified class of 'rubber_ducks_and_toys' (like rubber ducks, bath toys, etc.)." } }, "373e639c22004e4fb508e0f7a8c40ed6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rubber toy' or 'bath toy' categories, which are part of the requested class 'rubber_ducks_and_toys'. The image quality is good and suitable for training." } }, "37757cff54e54ad4a63d1b2d3cc41181": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is taken from an extreme side angle, making the object completely unrecognizable. It's impossible to tell if it belongs to the 'rubber_ducks_and_toys' class or any class at all. The view does not clearly depict the object." } }, "37f3ff420f414c128de6f1cf648415dc": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy truck, which does not belong to the specified class 'rubber_ducks_and_toys' that focuses on rubber ducks, bath toys, and similar items." } }, "38f89db1ace845df824bd72ff12ee10f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "3924864d17b14bf0a3d8e0fe44b3dd3a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "39584cd3ee4344ada7acb24b1ef48535": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object. The quality is too low for training data." } }, "39d9fc4aacd14925bc8b965a4e60f93f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and the object is barely visible. It is too bright and does not clearly depict any object, let alone one from the specified class." } }, "3a693a18e1dc48e897a9b8d64a4277ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy robot, which does not fit the specific class description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, rubber animal toy)." } }, "3a7e7cb8d062471dab1f4245a157d8c3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy duck, which belongs to the specified class. The quality is good, and the unusual texture adds diversity." } }, "3ab155c53a294b6ab226d947ec9aae5a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a woven ball toy, not a rubber duck or related bath/rubber toy as specified by the class definition." } }, "3b0168f8cc9e4d739d5f7c5165cc706d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very abstract representation that barely resembles a rubber duck or toy. It lacks defining features like a beak, eyes, or distinct body shape, making it difficult to clearly identify as belonging to the target class." } }, "3bf8d4def833493ea330f6494cb789ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor due to excessive brightness/overexposure, making details hard to see. Also, the object, while a toy, doesn't strongly resemble the typical items in the 'rubber_ducks_and_toys' class (like bath toys)." } }, "3c1f7d0c2212476da83b135ca14f41d7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image, especially from this top-down perspective, does not clearly depict a rubber duck or a typical bath toy. It looks more like a stylized pigeon or another type of bird figure, making it ambiguous for the target class." } }, "3c56ae2d7ec34e80af39d3274ebafe75": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not depict any object, let alone one from the specified class." } }, "3c96a2a3f207411987c6151e680b72d2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy boat, which fits into the broader category of 'bath toy' or 'floating toy' specified in the class description. The image quality is good and depicts a single object clearly." } }, "3dd880c963b24af9824e186370fdef6b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a spring mechanism on a wooden base, not a rubber duck or similar bath toy." } }, "3f2539831334454097110723cd96ec3a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy tank, which does not belong to the 'rubber_ducks_and_toys' class. The class is focused on bath toys like rubber ducks and similar items." } }, "3f255d04efaf421f9cd9562ad67db441": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an anime-style character/figure, not a rubber duck or a similar bath/rubber toy as specified by the class." } }, "3f74dc500e204feb9ee935533f12b9f8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (penguin toys), not a single object. Additionally, these appear to be plush toys rather than rubber or plastic bath toys as specified by the class description." } }, "3fd311baa855474496f87d5e0d99f088": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation purposes (e.g., floating, dropping)." } }, "4022532d07184d6ab73daff60c7917e5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden Ferris wheel toy, which does not belong to the 'rubber_ducks_and_toys' class (e.g., rubber duck, bath toy, plastic duck)." } }, "40e366463b744c3e954c850a11ae3a56": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble any of the items listed in the 'rubber_ducks_and_toys' class (e.g., rubber duck, bath toy, rubber animal toy). It appears to be a different type of toy or object altogether." } }, "40f64ed6859e47febe5762701f9dddda": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts an incomplete 3D model (missing parts of the body/legs) of Donald Duck, not a typical rubber duck or bath toy. The incompleteness makes it unsuitable for the dataset." } }, "4154a4c0868b43e2a4661d43b31aa855": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the target object (toy duck) but also includes a base/surface and another small object, violating the requirement for cleanly depicting only ONE SINGLE OBJECT." } }, "415c745ce5134ce98e99046583055952": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a doll/action figure (Jessie from Toy Story), which does not belong to the specified class of 'rubber_ducks_and_toys'." } }, "41e58d8499b8400abcb13d4a67dd2a64": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image is too heavily cropped and does not clearly depict the object. It is impossible to identify the object as belonging to the 'rubber_ducks_and_toys' class from this view." } }, "4226000d3f8d4b479af530d25f17b1a7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a hybrid object (duck-banana) which does not clearly represent the 'rubber_ducks_and_toys' class. While creative, it combines elements from different categories, making it unsuitable for training purposes, especially for learning physics properties specific to rubber toys." } }, "422fb1c1b53f471496b419edba422aee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a rubber duck or any related toy from the specified class list. It looks more like a stylized grenade or torch." } }, "42998e9beb444fd0b480e9d5dd5fb700": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the specified class 'rubber_ducks_and_toys' (which focuses on ducks, bath toys, and rubber animal toys)." } }, "42c616ac82bb4187b853e321f49bce22": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a rubber duck or any related toy. It appears to be a fragmented 3D scan of an interior space, which is irrelevant to the requested object class." } }, "42efe6bc029a4f33a979cad0cb9a3ade": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a 3D model of a building complex and surrounding area, not a rubber duck or toy." } }, "43aa1a941a1f4afdbb2c66194fef0096": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a simple brown and black geometric shape, which does not resemble a rubber duck or any other item listed in the 'rubber_ducks_and_toys' class." } }, "43e98d202b434c888ddcf84775cf0c6d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows toy cars, which do not belong to the specified class 'rubber_ducks_and_toys'. Additionally, the image contains two objects, not a single object as required." } }, "4411c16dbc6c4e479cc48f7ce4a9508b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict any object, let alone one from the specified class." } }, "44ed58f391c04161a36665edd592d4c0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a robot toy, which does not belong to the 'rubber_ducks_and_toys' class. The class is specifically for rubber ducks, bath toys, and similar items." } }, "467fd3bcc8b641f488cbb6a9d9e3520d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object resembles a duck decoy more than a rubber duck or bath toy. The texture appears rough, possibly wood or hard plastic, not the typical rubber or soft plastic associated with the target class. It doesn't clearly fit the description of a 'rubber duck' or 'bath toy'." } }, "470becdc96224ca99b11e47b2c739bda": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rubber duck toy, but it is mounted on a large, non-removable pedestal, making it not a typical representation of a single rubber duck or bath toy. We want images of the toy itself, not as part of a larger structure or display." } }, "47a99dcfd218456b9f78fb46723d8144": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy dog, which could potentially fit under 'rubber animal toy', but it does not strongly resemble the core items of the class (rubber ducks, bath toys) and appears to be more like a plush or hard plastic figurine rather than a rubber toy. Additionally, there are rendering artifacts around the base of the object, reducing the image quality." } }, "4834657fd2054be889dd03332449bdb8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the toy object placed on a distinct wooden base, which is an additional object not belonging to the target class." } }, "4b5d4f5cb114466ba84dc8d6e386fb7c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class. The class specifically mentions rubber ducks, bath toys, and rubber animal toys." } }, "4cb5626dc14d4532a27b33663b541f81": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a realistic-looking duck (possibly a mallard), not a rubber duck or a toy duck as specified by the class 'rubber_ducks_and_toys'." } }, "4d4db3dbf0af4051800550dd3e8d77da": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality. It does not depict anything recognizable as a rubber duck or toy." } }, "4deba21f683a40fb86d411c90f24714a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pixelated character figure, not a rubber duck or bath toy." } }, "4e7ee51036744396b01ec9ef8269fb54": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy police station playset, which does not belong to the specified class 'rubber_ducks_and_toys'." } }, "4f064b7b83ae45e0b0908693bfcea6c0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rubber animal toy, which falls under the specified class 'rubber_ducks_and_toys'. The quality is acceptable and it shows a single object suitable for physics simulation." } }, "4fa303a533214c688806a2290f105deb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or its details. It does not appear to be a rubber duck or toy." } }, "50190e18453049f8ade594b3a95bd8ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a statue of a duck on a pedestal, likely made of metal or stone, not a rubber duck or bath toy as specified by the class. It also includes the pedestal, violating the single object rule." } }, "5044528aaf484c9ba75a9aebdb22d0d0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict any object, let alone one from the 'rubber_ducks_and_toys' class." } }, "50e58ba136444e1fb6c10bde7f0977c2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "5287fe53c2e94e81865a0f30df7f4427": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict any object, let alone one from the specified class." } }, "540b8cb4e3244b2197d548b6400c80ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber/plastic toy dinosaur, which falls under the 'rubber animal toy' or 'bath toy' categories within the requested class 'rubber_ducks_and_toys'. The image quality is good." } }, "541ce548968442649a62d10a2a9fce5f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict any object, let alone one from the specified class." } }, "54216eaffef7409cbec7e1926debe55c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (crocodile, bathtub, rubber duck). The primary focus is the crocodile in the bath, not the rubber duck itself, which is very small. We need images that cleanly depict a single object from the target class." } }, "554e2793885e46138014386b87be80bf": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy animal, which falls under the 'rubber animal toy' or 'toy' categories within the requested class. The image quality is acceptable and it's suitable for physics simulation." } }, "557d6b88ed8f445e9e1ebf241d3054bf": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to identify the object clearly. It does not appear to be a rubber duck or toy." } }, "55c24d9509c34cc7b26be8a7285b73b0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a turtle toy, which falls under the category of 'bath toy' or 'rubber animal toy'. The image quality is good and it shows a single object." } }, "55f9ba0b464345d393c97511d37544b6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a broken or disassembled toy, not a single intact object. There are detached parts floating in the image, which makes it unsuitable for training." } }, "567911591e6344dfb621743c91a20c71": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a red bumpy ball, which falls under the category of 'rubber toy' or 'squeaky toy'. The image quality is good and it shows a single object suitable for physics simulation." } }, "56cda74bd6594ef585d319d2e4a0309c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/washed out, making the object almost invisible and impossible to identify clearly. This is very low quality." } }, "580d3fb8cca246cfa6038dd780109a22": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object depicted. The quality is too low for training data." } }, "58dc20d9d5284d35a52fc3fbdb89e6ce": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stack of blocks, possibly concrete or stone, not a rubber duck or toy." } }, "5907125955344c71a81df9106ffbc510": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly see the object or its details. It blends into the white background, rendering it unsuitable for training data due to low quality." } }, "59a5f34aec564cd1b7d1639d1e9f84c2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character toy (resembling Sonic the Hedgehog), not a rubber duck or a typical bath toy as specified in the class description." } }, "59e522ed95274b22937bc306fcf1921f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is not clearly identifiable as a rubber duck or a typical bath toy. It appears to be a generic plastic/rubber object, making it unsuitable for the specific class 'rubber_ducks_and_toys'." } }, "5a959871264b4c339c72c1543b60c43d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single animal toy, which fits into the 'rubber animal toy' or 'bath toy' subcategories of the requested class. The quality is acceptable for training data." } }, "5ab82163045d4afb9b86ac9bb13436ae": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a toy duck, which fits the 'rubber_ducks_and_toys' class. The image quality is good, and the object is clearly visible and isolated, despite the small base it sits on. It represents a variation (non-yellow duck) which adds diversity." } }, "5b4299b8e3184b06a2ba57f899ab5e7b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy with bird/duck shapes, but it does not resemble a typical rubber duck or bath toy. It looks more like a rigid, possibly wooden or mechanical toy, rather than a soft, floating rubber toy. The lack of texture also makes it less ideal for training data." } }, "5b5c2dd7767d4de8a744f68d3c3eb010": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and too bright, making it impossible to identify any object." } }, "5b7c1827ca034a6e8074a2f192bdc6b8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its details. The quality is too low for training data." } }, "5ca0d4590cc44256add0405b9c260412": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that appears to be a rubber or plastic animal toy (possibly a flamingo), fitting the 'rubber_ducks_and_toys' class. The image quality is good, and the object is isolated." } }, "5d3588fb7f364bfc8fe9513b1ba17982": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted in the image does not resemble a rubber duck or any other toy listed in the class description. It appears to be some sort of container or blocky structure." } }, "5ddd5281bfdf43ea85f75f2e885f2e27": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy robot, which does not fit the specific class description of 'rubber_ducks_and_toys' (like rubber ducks, bath toys, squeaky toys, etc.)." } }, "5e36c733d05647059707e51333915015": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the 'rubber_ducks_and_toys' class. The class specifically focuses on rubber ducks, bath toys, and similar items." } }, "5e408ec9d4624b8f96e56507ef7c1275": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object belonging to the class 'rubber_ducks_and_toys'. The object appears to be an abstract, blocky structure, possibly a simple vehicle representation, rather than a rubber duck or similar bath toy." } }, "5ebaaf859ddd4635b9b0c16fdb036711": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single, stylized yellow toy that resembles a duck or bird, fitting the 'rubber_ducks_and_toys' class (specifically 'toy duck', 'bath toy', 'yellow duck toy'). The image quality is good, and the object is suitable for physics simulation as a toy." } }, "5f19e69e2b464f4789fc5838e163d5eb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an extremely thin side view of the object, making it impossible to identify if it belongs to the 'rubber_ducks_and_toys' class. The object is not clearly depicted." } }, "5f426566914b4e51b38f6439e6c011af": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, with significant distortion and artifacts. It's difficult to clearly identify the object(s) depicted, and it appears there might be more than one object or parts of an object shown separately. It does not clearly represent a rubber duck or toy." } }, "609bfd1f46854472a48faf3869b4dc08": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a rubber duck or any type of bath toy. It looks more like a tool or electronic component." } }, "60f2d0b10f9c476e81ff740f13952edf": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a duck made of Lego-style bricks. While it is a 'toy duck', it does not fit the typical characteristics (material, form) of the 'rubber_ducks_and_toys' class which usually implies soft rubber or plastic toys, often for bath time. The material properties (hard, rigid plastic bricks) are significantly different from rubber or soft plastic, making it unsuitable for learning physics parameters for that specific class." } }, "619cc2d302c548a4899f2d50ac639356": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bone-shaped object, which does not clearly belong to the 'rubber_ducks_and_toys' class. While it could potentially be a rubber dog toy, it doesn't fit the typical examples provided (ducks, bath toys, squeaky toys for children)." } }, "61a75f203d054c4cafbfe1c1a47fda40": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a stylized toy duck, which fits the 'rubber_ducks_and_toys' class. The image quality is good, and the object is isolated." } }, "625f5246677540a5b6cbbfc29e134a5c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a robot figurine, which does not belong to the 'rubber_ducks_and_toys' class. The class specifically refers to items like rubber ducks, bath toys, and similar soft/floating toys, not general action figures or robots." } }, "62efddb9f8874561a4b569bb2bf17577": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making the object almost completely invisible and unrecognizable. This is a low-quality image unsuitable for training." } }, "6382b90f84b744318a2250c8af1a0d86": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a robot toy, not a rubber duck or a similar bath/rubber toy as specified in the class description." } }, "639ddad838e94ee2a8ea09ffd4b30169": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy penguin, which falls under the 'rubber animal toy' or 'bath toy' categories within the requested class. The quality is acceptable for training data, despite some minor texture artifacts." } }, "63f0597f168644cfa0dee57e61ea4afa": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks more like a stylized buoy or boat with life preservers, rather than a rubber duck or a typical bath toy." } }, "643dfd7b37a54fafadc929b26bba9522": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a set of bath toys/floating toys, which falls under the specified class. The quality is good, and while it's technically multiple pieces, it represents a single toy set, which is common for this category." } }, "644a602736df42c49913ada6159d82ef": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an entire bathroom scene, not a single rubber duck or toy. The potential ducks are very small, dark, and lack detail within the larger context." } }, "6603f7706e1549b5a16862604f7ae471": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a container or pot, not a rubber duck or a similar bath/rubber toy as specified by the class 'rubber_ducks_and_toys'." } }, "661a276df7e1423e8ddea533c2467273": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a toy duck, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "6622d9c789cd44b0974329d5926ea2c6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy train set, which does not belong to the specified class 'rubber_ducks_and_toys'. It also contains multiple objects assembled into a scene, not a single object." } }, "6666b0852c1d4ec0a8357fa549112614": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dark, box-like object, which does not resemble a rubber duck or any other type of toy listed in the class description." } }, "6722bedddbd84178853a3eef6c15d1d0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (plush toys, a grim reaper figure, and an unclear bird toy), not a single object. Furthermore, none of the objects are clearly identifiable as belonging to the 'rubber_ducks_and_toys' class (e.g., a rubber duck or bath toy)." } }, "6732d8ce3a144f91ac67d18cc802794d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "67d4fc086fdc412aa934feec5acc0c1e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a plush/stuffed bunny toy, which does not fit the class 'rubber_ducks_and_toys' (which focuses on rubber/plastic bath toys)." } }, "689e51c9cce447ae84d6c5ec4836fdae": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a toy duck, fitting the requested class. Although stylized (blocky/pixelated), it adds diversity to the dataset and is suitable for physics simulation." } }, "6a6b816194df4bc1a6fcc5d22a444584": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a toy duck, fitting the requested class 'rubber_ducks_and_toys'. Although stylized (blocky/voxel art), it is recognizable, high quality, and shows a single object suitable for physics simulation." } }, "6a778f2c0ce740b3949a80e28949ac94": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single bath toy (a fish or shark), which falls under the specified class 'rubber_ducks_and_toys'. The quality is good, and it's suitable for physics simulation." } }, "6a9416f4c6fe422e851782455a99adda": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a doll (Jessie from Toy Story), which does not fit the specific class 'rubber_ducks_and_toys' (like rubber ducks, bath toys, etc.)." } }, "6abf6ac1447c468cad82dcfbfb8f7deb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too abstract and low-poly. While yellow, it doesn't clearly resemble a rubber duck or any recognizable bath toy from the provided list." } }, "6e039c6c606c4c26a1359514352629fd": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized rubber duck toy, which fits the requested class. The quality is acceptable, and it shows a single object suitable for physics simulation." } }, "6e1737b83e17419bb23e45a09da2062f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a handheld electronic game console, not a rubber duck or similar bath/squeaky toy." } }, "6f186dbf96a54835912dda7393a2af85": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a realistic model of a duck, not a rubber duck or toy duck as specified by the class." } }, "6f6bd3c71c2e47278ddeaab11f00be5b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy playset or block structure, not a rubber duck or similar bath toy as specified by the class list." } }, "6fac296036f64636a76324c60ec0f249": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "6fc607dbb0d84b3abed6c4ebdb3a3b3f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify any object, let alone determine if it belongs to the 'rubber_ducks_and_toys' class. The quality is too low for training data." } }, "708118a1a2c54aafa0424a8302617cd1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict any object, let alone one from the specified class." } }, "70a574ead25844a3bbee633b202376d1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed frog toy, which appears to be made of fabric, not rubber or plastic. It does not fit the class description which focuses on rubber ducks and similar bath/rubber toys." } }, "712391c32edc4afca0bec0492d91aa89": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct bath toy objects stacked together, violating the requirement for images depicting only a single object." } }, "72420e3bcb174abea9f744b0415b7acf": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rubber snake toy, which falls under the 'rubber animal toy' or 'rubber toy' category within the specified class 'rubber_ducks_and_toys'. The image quality is acceptable and shows a single object." } }, "7249b80f6230410da3119cf24a1fc005": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy animal (tapir). While not a duck, it fits under the broader category of 'rubber animal toy' or potentially 'plastic toy', which is related to the requested class. The image quality is acceptable and depicts a single object clearly." } }, "72522ee353fa41f1b4c40b5b14c1e77e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized toy duck, which fits the 'rubber_ducks_and_toys' class. It is a single object, well-lit, and clear, suitable for the dataset." } }, "727191f65108466f895224d5df23f5b7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright, making the object almost invisible and unrecognizable. It is of very low quality." } }, "735229b3e6874e26aaa6d994065d17ba": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-polygon wolf or dog, which does not belong to the 'rubber_ducks_and_toys' class." } }, "73bc095ec5ce4b86a5e8b53c551396f2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber/plastic animal toy, which fits within the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "73f8980894c44a4caae9f08f202ebc17": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what appears to be a plush or stuffed duck toy, not a rubber or plastic one as typically associated with the 'rubber_ducks_and_toys' class (like bath toys). Additionally, it includes a distinct ground surface, violating the 'one single object' rule." } }, "74d6f61c73fd4dcd9607694fc3241e06": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a realistic mallard duck, not a rubber duck or toy duck as specified by the class 'rubber_ducks_and_toys'." } }, "75c69a080ad9444aa9fbe35369c41015": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plush toy (stuffed animal), not a rubber or plastic toy like a rubber duck or bath toy, which is the target class." } }, "75ca600f8fdc47eabb2a088867f9619e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy gun with a suction cup dart, which does not belong to the 'rubber_ducks_and_toys' class." } }, "763f26633f964354bb93414906f72064": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a cowboy figurine toy, which does not belong to the 'rubber_ducks_and_toys' class. The class is specifically for rubber ducks, bath toys, and similar items." } }, "764d626bc12c4c33ab58c25c0e2dc3ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a toy duck, which belongs to the specified class. The image quality is adequate, and the object is well-represented for potential physics simulation." } }, "773afc67e8a944d289c1bb8bf6168587": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy rocket, which does not fit the specific class description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, rubber toy)." } }, "785687f1be3242dba8285cfd2941f714": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden toy race track with cars, which does not belong to the 'rubber_ducks_and_toys' class." } }, "78cb663c661e433fbd4f79a631be2754": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy truck, which does not belong to the 'rubber_ducks_and_toys' class which focuses on rubber ducks, bath toys, and similar items." } }, "790f91006d984b148fcf4e52c47dc34c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a crib with a mobile, not a rubber duck or similar bath/rubber toy." } }, "7b5d9462c0d24bb5ac5680a467d678f8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays abstract geometric shapes, not a recognizable rubber duck or toy." } }, "7b9206c30c774fe48ee3b80308043191": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a room layout or architectural model, not an object from the 'rubber_ducks_and_toys' class." } }, "7c9d688ecf95404a9f6a36b582fbd5b6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object from the 'rubber_ducks_and_toys' class. The potential object is very small and indistinct, and the image primarily shows a large block structure." } }, "7ce378d57c97482a91a27f5a765b9815": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a rubber duck or toy." } }, "7dbcc526eda046ffbc86d6dfb80ef58c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plush toy dog on a rug. This does not fit the 'rubber_ducks_and_toys' class, which primarily includes rubber or plastic toys, often ducks or bath toys. Additionally, the presence of the rug violates the single object requirement." } }, "7e06e5ffd22243f697a316bb35d2f7c4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy object that appears to be a rubber or plastic animal toy, fitting the description of 'rubber animal toy' or 'bath toy' within the specified class. The image quality is acceptable." } }, "7e572534e98c47c2b878773a23db1220": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a generic character figure without texture or color, making it difficult to definitively classify as a 'rubber duck' or 'bath toy'. While it might be a toy, its appearance is too ambiguous and lacks the typical characteristics associated with the target class." } }, "7f04d5e6050e4167b0d7d8b23a203302": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of armor or a monstrous arm, not a rubber duck or toy." } }, "7f0b6d3f7315438a8fd98319111455e8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed koala toy, which is a plush toy, not a rubber or plastic toy like a rubber duck or bath toy as specified by the class description." } }, "80737c80ba9043aa9fbceb085ab7c601": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is severely cropped, showing only the lower part of the object. It's impossible to clearly identify it as a rubber duck or toy from this view. Additionally, the texture appears more like stone or wood than rubber or plastic." } }, "80c5779fcb554f93b05264c8147dae9e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single plastic/rubber dinosaur toy, which falls under the 'rubber animal toy' or 'bath toy' categories within the requested class. The image quality is good and suitable for the dataset." } }, "80dd9bc124154686b648a8b4eaa27f8a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost invisible and impossible to identify as belonging to the 'rubber_ducks_and_toys' class. The quality is too low for training data." } }, "814f25dafe7b4b1a92b87f8d46e84c39": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects that are too small and distant to be clearly identified as belonging to the 'rubber_ducks_and_toys' class. The lack of detail makes it unsuitable for training." } }, "815554fb7f6e4293ba4b61d0629256dd": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a Sonic the Hedgehog figurine. While it is a toy, it does not fit the specific category of 'rubber ducks and toys' which typically includes bath toys, squeaky toys, or duck-like toys." } }, "81985841f78e42d8a5dbc3edf850baa9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct toy objects clustered together, not a single object. Additionally, the image quality is low, with blurriness and distortion, and the objects are quite small within the frame." } }, "81e1f81d7b594bf2bb936cb49167f9d3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a model of a house, not a rubber duck or similar bath/rubber toy as specified by the class description." } }, "81ec8558fa2346969d0138e2396ad4a3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy ship, which does not fit the specified class 'rubber_ducks_and_toys' which focuses on rubber ducks, bath toys, squeaky toys, etc." } }, "81f9788e120b4efb99a132390787ce8d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a teddy bear-like toy, which does not fit the specified class 'rubber_ducks_and_toys'. The texture suggests it might be plush or fabric, not rubber or plastic typical for bath toys or rubber ducks." } }, "821e1f2b7ea046109be9923eb6643d28": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an extreme side view of an object, possibly a toy in packaging, making it impossible to clearly identify if it belongs to the 'rubber_ducks_and_toys' class. The view is too narrow and does not clearly depict the object." } }, "8225fc44543e4b7a95b8887d6a84c9ac": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car, which does not belong to the specified class 'rubber_ducks_and_toys'. The class focuses on rubber ducks, bath toys, and similar rubber/plastic animal toys." } }, "82e476a7e17a4593adc8c2a3179b4fb2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a part of a ride-on toy or scooter, which does not fit the class description focused on rubber ducks, bath toys, and similar small rubber/plastic toys." } }, "83d6dd55e58742ebae186e9a5bf124d4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a toy, concrete blocks, ground) rather than cleanly depicting a single object from the target class. Additionally, the toy itself appears to be a stuffed animal rather than a rubber or plastic toy as specified by the class list." } }, "8409a2dbf230458784365b0a2005fcf5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to show a damaged or distorted furry stuffed animal (like a teddy bear), not a rubber duck or a similar rubber/plastic bath toy." } }, "849342eebf9b494da971f3ba9b864739": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is fragmented and does not clearly depict any recognizable object, let alone one from the 'rubber_ducks_and_toys' class. The quality is too low for training data." } }, "84963a4bdb4f46e8839fdf5643064479": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized rifle, which does not belong to the class 'rubber_ducks_and_toys'." } }, "84c94f4b200343a7af95c0a386122634": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a character figurine (Eric Cartman from South Park), which does not fit the specified class description of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "84ca7f756f26443aa8bd925ea6f13d77": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy train carriage, which does not belong to the 'rubber_ducks_and_toys' class. This class is specifically for rubber ducks, bath toys, squeaky toys, etc." } }, "84dc9e4f1a0745d8be7d81e63b018f5f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify any object. It is too bright and lacks detail, rendering it unusable for training." } }, "84f24339dcbe440ab90caeed6ecdb41c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality." } }, "855edf1a39da46fd823233f320474051": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a toy duck, fitting the requested class. The quality is good, and the object is suitable for physics simulation." } }, "8632a7f8c59d4af0b1c6c8e0068bd61c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making the object almost entirely invisible and impossible to identify. It is of very low quality." } }, "869960324fa447f780aabd4dd3da418f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the requested class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "8742f619ba6840e093cffff706be1808": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy gun, which does not belong to the 'rubber_ducks_and_toys' class that focuses on bath toys, rubber ducks, and similar items." } }, "874d78d8b3d74cda8cf8e8da680b2220": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden object, possibly a ladle or utensil, not a rubber duck or toy from the specified class list." } }, "87765915bcd34a1d963b80a401b2bc34": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy duck, which belongs to the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "877f8016f69d4f548a3a225ac0377091": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "88534344bca849d2a2565ff7d85f7e52": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed toy dog made of fabric, not a rubber duck or a rubber/plastic toy as specified by the class description." } }, "88b74919afe440c6a9213921817efa33": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that appears to be a rubber or plastic dolphin toy, which fits under the 'bath toy' or 'rubber animal toy' categories within the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "89e33a0b4f6045a0a62d8999b0905f3e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy (horse), which falls under the specified class 'rubber_ducks_and_toys' (specifically 'rubber animal toy'). The image quality is good and it's suitable for physics simulation." } }, "8b6d6ee79d824b33bb3bdf11f80973cc": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor. The object is very small and lacks detail, and the overall image is extremely bright, almost washed out, making it difficult to discern features clearly." } }, "8b8242021d5043efbc85f3282e2db77b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy, which falls under the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "8bd6eda897ec4f86816fbfe8616b041f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy truck, which does not fit the specified class 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "8c61126ab5034b19a8dfd24098f5c8cf": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy duck, but it has a long stick attached to its back, suggesting it might be a push toy or puppet rather than a typical rubber duck or bath toy. This additional element makes it not cleanly represent the core items in the 'rubber_ducks_and_toys' class (like bath toys, floating toys) and violates the 'one single object' guideline." } }, "8c68b5ffbf9844c9b628abf73785f324": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy bird, which fits within the broader 'rubber_ducks_and_toys' category (specifically 'toy duck' or 'rubber animal toy'). The image quality is good, and the object is suitable for physics simulation as a toy." } }, "8cc3efa1537a4f8bbbc477f847a44e74": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy spaceship/aircraft, not a rubber duck or a typical bath/rubber toy as described in the class list." } }, "8ce01f03c4c54c1bb69f6ba47a590586": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a rubber duck or any recognizable bath toy. It appears to be an abstract geometric shape or possibly a folded piece of paper, which does not fit the requested class." } }, "8ce1a6e5ce4d43ada896ee8f2d4ab289": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy dinosaur, which falls under the 'rubber animal toy' or 'rubber toy' categories within the broader 'rubber_ducks_and_toys' class. The image quality is good and it shows a single object." } }, "8d2143626e724161bfdbdfe755abbc4d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single toy duck/bird, which fits the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation as a bath toy or rubber toy." } }, "8dfebb55289c41a99593ccc678bcafd4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "8e0288f099bb418199e8896c19bed05e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'rubber animal toy' or 'bath toy' description within the 'rubber_ducks_and_toys' class. The quality is good, and it's suitable for physics simulation." } }, "8e24a6d4d15c4c62ae053cfa67d99e67": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "8e447aecf22b4ff38d59ad0e32438e57": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost completely invisible and impossible to identify." } }, "8e66555cf1564ed9a63b2d362e1eb779": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a duck-like object, but it has a large, foreign cylindrical object embedded in its back/neck area, which makes it not a clear or typical representation of a rubber duck or toy duck." } }, "8f5f101fcacf49a4b9730c89a500e358": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a toy that looks like a stuffed doll or figure, not a rubber duck or bath toy as specified by the class description." } }, "8fd5bc067af24c859ce8d077b13cdbc2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image resembles a stylized skull or mask more than a typical rubber duck or bath toy. While it might be a 'rubber toy', it doesn't clearly fit the intended class examples like 'rubber duck' or 'bath toy'." } }, "8ff7f1f2465347cd8b80c9b206c2781e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making the object very difficult to discern. It's unclear what the object is, and it doesn't clearly resemble a rubber duck or typical bath toy." } }, "9020e671781144da8ef99d7997248bd2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a fragmented duck toy and another unrelated object). Additionally, the rubber duck itself is incomplete and fragmented, making it unsuitable for training." } }, "914462422fc4471a8139fdc50ab70c38": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a wooden toy animal, which does not fit the class description 'rubber_ducks_and_toys' that typically includes rubber or plastic bath toys like ducks." } }, "9166765df5c741a1ad0d680c6964d36e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a realistic depiction of a bird (possibly a duckling or cormorant) surrounded by a water/ice effect, rather than a clearly identifiable rubber duck or bath toy. The surrounding effect also obscures parts of the object, violating the single clean object requirement." } }, "9190d6ecf7fe4a0eba7d9ff5fcbcf88c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden rocking dog toy, which does not belong to the specified class 'rubber_ducks_and_toys' (which includes rubber ducks, bath toys, squeaky toys, etc.). The material and type of toy are incorrect." } }, "91ad24ef2c3a4aa88adcc35fb4befcb5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single toy duck figure, which fits the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation as a toy." } }, "921b71922bbf488b9d525e799bfdf243": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the toy object but also a separate base/platform, violating the requirement for only a single object." } }, "92572c5ed9714024851b90ba1607e129": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a person in a costume, not a rubber duck or toy." } }, "9443ba8835cf41fc8f89249aabf2e38b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows alphabet blocks, which are toys, but they do not fit the specific class description of 'rubber_ducks_and_toys' which focuses on rubber ducks, bath toys, and similar items." } }, "94b9c98fafa041349d50aca5fc623e26": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very poor. The object is severely distorted and shown from an extreme angle, making it difficult to identify clearly as a rubber duck or toy. It appears to be part of a broken or incomplete 3D model rendering." } }, "94d256409efc4c7dbe28b104acab02a0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a toy duck, fitting the specified class. Although the style is blocky/pixelated, it is still identifiable and adds diversity to the dataset. The quality is good." } }, "957b33cd84664b728d558ca9916b18ec": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "95f6dba4d4b446afa57a7d9d679217d8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rubber animal toy (dinosaur), which falls under the specified class 'rubber_ducks_and_toys'. The image quality is good, and it shows a single object suitable for physics simulation." } }, "96c40e07d8ef46fca7bfa4b580813638": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low due to rendering artifacts (semi-transparent areas, blurriness). Additionally, the object, while a toy animal (rabbit), does not clearly appear to be made of rubber or plastic suitable for a bath toy, which is the focus of the class 'rubber_ducks_and_toys'." } }, "96faab7f4b8742028337e4460681aa66": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that falls under the category of 'rubber animal toy', which is included in the requested class 'rubber_ducks_and_toys'. The image quality is good." } }, "97e0e8238bbc47019eb4a4d07dca012c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden pull-along animal toy, which does not fit the specified class 'rubber_ducks_and_toys' that focuses on rubber/plastic bath toys, ducks, and similar items." } }, "9873fb0e64d943de9e8b38cea144a76b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that appears to be a whale-shaped bath toy, which falls under the 'rubber_ducks_and_toys' category (specifically 'bath toy', 'floating toy', 'rubber animal toy'). The image quality is good, and the object is suitable for physics simulation." } }, "992d048e7101405db422efbd59b90898": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "9a13e1cfa6cd4ecb855dbea11877a52b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in and cropped, making it impossible to clearly identify the object as a rubber duck or toy." } }, "9a9460010885486f93774384609fe24f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed corduroy fox toy, which is made of fabric, not rubber or plastic like the items in the 'rubber_ducks_and_toys' class (e.g., rubber duck, bath toy, plastic duck)." } }, "9af3e0a915004433993be6340d905306": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy box containing multiple different toys, not a single, clearly identifiable object from the 'rubber_ducks_and_toys' class as required." } }, "9af420be291c4d9b9b992017109831cb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and distant in the image to be clearly identified as a rubber duck or toy. It lacks sufficient detail for training purposes." } }, "9b475e12a0764847bae20f9047d18331": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects: the turtle toy and the base it is sitting on. We require images of only a single object." } }, "9b68449f93a04dc99c38327c04d3b39c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a 3D model of the character Donald Duck. While technically a 'toy duck' could refer to a character figure, the class description focuses on simpler objects like rubber ducks and bath toys. This is a character model, not a typical rubber/bath toy." } }, "9c0daf8f457d472ea83c3b29e24484df": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the toy turtle placed on a distinct base/surface, which violates the requirement of depicting only the single object cleanly." } }, "9c153703ee93473cb0c0aa67c862baa1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single whale bath toy, which falls under the 'rubber_ducks_and_toys' category (specifically 'bath toy', 'rubber animal toy'). The image quality is good, and the object is suitable for physics simulation." } }, "9c988dc70c714d019dea9d13efa4559b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple plush toys, not a single rubber duck or bath toy as specified by the class. Additionally, the requirement is for images depicting cleanly ONE SINGLE OBJECT." } }, "9cf99655e7424770b79ba702fe83e5c1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden toy car, which does not belong to the specified class 'rubber_ducks_and_toys' (which includes rubber ducks, bath toys, etc.)." } }, "9dad4f67042641efb17813d3f02c2812": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy flower garden construction set, not a rubber duck or similar bath/rubber toy as specified by the class description." } }, "9e3eff2ecf0842a3915931320fbd85c7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright/overexposed, making it difficult to discern details or texture. While the shape resembles a duck toy, the quality is too low for training data." } }, "9ea3d71b452946ef89f0ceb24af852c6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "9ff4ee5fd9354d82a256e9a72468c389": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object's shape is too abstract and the texture is unusual, making it difficult to clearly identify as a rubber duck or any specific type of toy listed in the class description." } }, "a103084e51fc4fc1ba799bf72c0b84c5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a toy shaped like a vegetable (radish/beet), not a rubber duck or a typical animal bath toy as described in the class list." } }, "a1719c21102c44e69b72234074c236c8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "a176b85217e44a8497038ca63ab0c659": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a baby rattle, which is a type of toy, but it does not fit the specific class description of 'rubber_ducks_and_toys' which focuses on rubber ducks, bath toys, squeaky toys, etc. This toy appears to be made of hard plastic/wood, not rubber, and is not a duck or typical bath toy." } }, "a239d06be60a41219c7e75333c284dfa": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object. It is of very low quality." } }, "a24d4c0db4e24a2e9c62cf2883a55136": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a model of a castle wall, not a rubber duck or similar bath/rubber toy." } }, "a26e1038c2e2439a881604a5fc975d1c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a mechanical clown toy, which does not fit the specified class 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "a3275806b3ed4715b83b2343b93ff8ba": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a toy robot, which does not fit the specified class 'rubber_ducks_and_toys' that focuses on bath toys, rubber ducks, and similar items." } }, "a33f6e51b82f48c6b5e318d48ad1e2c7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single yellow toy duck, which belongs to the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "a38e69bd31874d609d9f47ae6679e897": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "a423a257dd2d47e684c1944c6aab7bb6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'toy duck' category within the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "a53fe3d774bf4afaaa619d02d8cbb5bb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy knight figurine, which does not belong to the 'rubber_ducks_and_toys' class which focuses on items like rubber ducks, bath toys, squeaky toys, etc." } }, "a595c72f976b4d918f5e471c9443f47f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or its details. This is considered low quality." } }, "a5a7df4efab4484c8b8511c8a9704e1e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy tank, which does not fit the specified class 'rubber_ducks_and_toys' that primarily includes ducks, bath toys, and rubber animal toys." } }, "a7667ac2d4f34b008dff9f287d5134e7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains wooden building blocks, which do not belong to the 'rubber_ducks_and_toys' class." } }, "a7be60a14bd64d9a8a88f68b3aeb809d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky, abstract figure that does not resemble a rubber duck or any other toy listed in the class description." } }, "a7ce075eacb44bd38fc4dce2072c8a14": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a toy animal (possibly a duck or dinosaur) viewed from the top. While the texture is unusual, it fits within the broad category of 'rubber animal toy' or 'bath toy'. The image quality is good, and the object is suitable for physics simulation." } }, "a8231f8ae3474644b548846409c93a2c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden or stone sculpture of an animal, not a rubber duck or toy as specified by the class." } }, "a82424f5bb2944bcb7d8274807c149e3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object, a novelty rubber duck styled as a bee, which falls under the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation as a bath toy." } }, "a84cecb600c04eeba60d02f99b8b154b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "a8c3f064546c49bea5aa80e39f8701a5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, and the object is barely visible and cannot be identified as belonging to the 'rubber_ducks_and_toys' class." } }, "a8ce9d66d81e493a9fc8dcbc9e13487b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to identify the object clearly. The object itself is barely visible against the white background." } }, "a8f48711ad794604a35727788db7fdb9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that appears to be a rubber or plastic animal toy, fitting within the 'rubber_ducks_and_toys' class, specifically 'rubber animal toy' or 'bath toy'. The quality is acceptable for training data." } }, "a977283acd0e4fa3a089a6d4732086ec": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains fragmented and distorted objects that do not clearly depict a rubber duck or any recognizable toy from the specified class. The quality is too low for training data." } }, "aaf93394e80f465eb3c81a9910983187": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a broomstick or staff, not a rubber duck or similar bath/rubber toy." } }, "ab606fdfcb2a4cf482c60dd6dee81df4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized toy duck, which falls under the 'rubber_ducks_and_toys' class. The image quality is adequate, it shows a single object, and it represents an object suitable for physics simulation (like floating or being dropped)." } }, "ab6991af97114420a2c0fb7efcb6c188": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be a metallic or hard plastic figurine, not a rubber duck or a typical bath toy as described in the class list." } }, "ab84abb144de43288490b979f925c789": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost completely invisible and unrecognizable. It is of very low quality." } }, "ab9f1a653edc47a59c7e70ea845864bd": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "aba3100bbf7145a5a334f6da975481bb": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows Lego-like bricks, which are toys, but they do not belong to the specified class 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, rubber toy)." } }, "abd9f475ea184432ab8ddf964489bde5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object, a toy duck, which belongs to the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "ad17994f8dab4a13b3da7041593e3d67": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single toy duck (Daffy Duck), which fits the requested class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation as a toy." } }, "ae5cb304bf7d40f1977d9dbdf798a65f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy animal, which fits under the 'rubber animal toy' or 'rubber toy' subcategories within the requested class. The quality is acceptable and it's suitable for physics simulation." } }, "ae93791a51684372ad95fee08d7aebc1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a plush toy, not a rubber or plastic toy like a rubber duck or bath toy, which is the target class. The material appears to be fabric, not rubber/plastic." } }, "afef646c4bcb476393019c498aa504f8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plush/animatronic toy character (Springtrap/PlushTrap from Five Nights at Freddy's), not a rubber duck, bath toy, or similar item as specified by the class examples." } }, "b0748a76033d473fbad532c97589448b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely low quality, washed out, and the object is completely unrecognizable. It does not clearly depict any object, let alone a rubber duck or toy." } }, "b1dd2a425b784bbfbc20d2e64f3b61a8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plastic figurine (likely Funtime Foxy from Five Nights at Freddy's). While it is a toy, it does not fit the specific category of 'rubber ducks and toys' which typically implies softer, often bath-related toys like rubber ducks or squeaky toys." } }, "b1ef6268b20540ac93aadb08f38eb694": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy turtle, which falls under the 'bath toy' or 'rubber animal toy' categories within the requested class. The image quality is good and it's suitable for physics simulation." } }, "b1fd008ad5084be2ad71f810d4fb7a4f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The quality is good, and while the color is unusual, it adds diversity to the dataset as requested. The object is suitable for physics simulation." } }, "b2dcda63eda94b8a994f13f6c0f8c857": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden model, possibly of a historical invention, not a rubber duck or similar bath toy." } }, "b376a7cbe79b4871aa1347bdb1c5fa9c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a robot and a cactus, neither of which belong to the 'rubber_ducks_and_toys' class. Additionally, it contains multiple objects instead of a single one." } }, "b49b80f35ab148a782f4082d1dfad9c5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a floating island with multiple elements like trees, structures, and figures), not a single object belonging to the 'rubber_ducks_and_toys' class." } }, "b503242bacef43d59fff218d48fe6e2b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden building blocks, which do not belong to the 'rubber_ducks_and_toys' class." } }, "b6ebe649b5934e818f09876c42a02f51": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows a small, partial view of the object (appears to be just the head/face), making it difficult to clearly identify the object as a rubber duck or toy from the specified class. We need images that show the whole object clearly." } }, "b78442de2bc542ef9393608c40664aa1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in and cropped, making it impossible to identify the object. It does not clearly depict a rubber duck or any recognizable toy from the specified class." } }, "b7be7122b45447ddb2032ff5916de06f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fantasy monster figure, not a rubber duck or similar bath/rubber toy." } }, "b7e7b42461da46db9d9a429eeb6378d1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a gun-like object, not a rubber duck or related bath/rubber toy." } }, "b990ac5026f84aa5b7d7558d9d9924f5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that does not belong to the 'rubber_ducks_and_toys' class. It looks more like a board game piece or architectural element." } }, "b997d8f591904c028726ea8794e051f7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright/overexposed, making it difficult to see the details of the object. It also doesn't clearly depict an object from the specified class (rubber ducks and toys); it looks like a generic low-poly bunny model which might not be made of rubber or intended as a bath toy." } }, "ba414b2ffbfd4737bd5cde9718b13459": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plush toy (moose/reindeer), not a rubber duck or a toy made of rubber/plastic as specified by the class 'rubber_ducks_and_toys'. Additionally, there is an extraneous black object attached to the toy, possibly a mount." } }, "bc80c9fc687942089c7c8deead552cd2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a toy duck, which falls under the 'rubber_ducks_and_toys' category. Although the textures are unusual (wood-like head, green body), the overall shape is recognizable as a toy duck, and the prompt allows for diverse textures. The image quality is good, and it's suitable for physics simulation." } }, "bda7f77e18a44c539294a6830b6a4216": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three rubber ducks stacked), while the requirement is for images depicting only ONE SINGLE object." } }, "bdc9ff9778da47bdb04c61b7002d6672": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'rubber_ducks_and_toys' class, specifically resembling a floating toy duck or bath toy. The quality is adequate for training data, and its nature as a toy makes it suitable for physics simulation in a game." } }, "be39e6cc0b554cbb8598510b55f0090e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a stylized rubber duck or bath toy, fitting the requested class. The quality is adequate for training data, and the object type is suitable for physics simulation in a game context." } }, "be4e6cdac1ea4d07881af5fe9684942c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy tank, which does not fit into the specified class of 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "bf45701f7ae74078a3382cddcd364420": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple tiny, indistinct objects that do not clearly depict a rubber duck or any recognizable toy from the specified class. The objects are too small and lack detail, making the image unsuitable for training." } }, "bfee0f80067447f29cb96e2115df3fc9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy, which falls under the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "c0af7ea87389433cacff5d0f90c7ca53": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the requested class. The image quality is good, and the object is suitable for physics simulation (e.g., floating)." } }, "c0b7f175fa7d4509ab50708b5cb3a761": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is too abstract and does not clearly resemble a rubber duck or any recognizable toy from the specified class list." } }, "c0cd073d35104b33a98f21867bec8190": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that is recognizable as a stylized rubber duck or toy duck, fitting the specified class. The quality is good, and it's suitable for physics simulation purposes (e.g., floating)." } }, "c16434ae50404116940eca650e4a8c9a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a robot toy, which does not fit the specific class description of 'rubber_ducks_and_toys' (like rubber ducks, bath toys, squeaky toys)." } }, "c180ab3315ba4205af01d423f68ef949": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/too bright, making the object almost invisible and impossible to identify. The quality is too low for training data." } }, "c215384fe4f445c096c050dbf45f691c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object belonging to the 'rubber_ducks_and_toys' class. The shape is abstract and unrecognizable as a toy duck or bath toy." } }, "c289f3af1abb4084aa466476dce32e88": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized yellow duck toy, which belongs to the requested class. The image quality is acceptable, and it shows a single object suitable for training and physics simulation." } }, "c39a2b004e7c411fb5e8cd6e48b75327": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a plush toy, not a rubber or plastic toy as specified by the class list (rubber duck, bath toy, plastic duck etc.). Additionally, the object is partially cut off and includes an unclear secondary element on the left side." } }, "c4fab2a59fcb4c9daa575faf0bae8e44": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of wood, which does not belong to the class 'rubber_ducks_and_toys'." } }, "c6a928e2abcd47e195b8793d7b5affe0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the head of an animatronic character (Toy Bonnie from Five Nights at Freddy's), not a rubber duck or a typical bath toy as described in the class examples." } }, "c8f58c34099d4da49d0b491be5039025": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single floating toy resembling a duck, which fits within the specified class 'rubber_ducks_and_toys'. The image quality is good, and the object is suitable for physics simulation." } }, "c983b334cd214b99b01fb687255c24c0": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy object (a character on a throne) which falls under the 'rubber animal toy' or 'plastic toy' category within the broader 'rubber_ducks_and_toys' class. The image quality is adequate." } }, "ca0d73b34eea4aeda38bfaa6d4a03b64": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the toy along with its packaging/stand, not just the single object itself." } }, "ca9a9e3dfd5f407cac104529fd060632": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "cacd348a26d84d68954e90b9bcd7d226": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden chest, which does not belong to the class 'rubber_ducks_and_toys'." } }, "cb444316e5cd4b9498c98804e6daaafc": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden object, possibly a whistle, which does not belong to the 'rubber_ducks_and_toys' class." } }, "cc27ddfca2dd47259dc9a279137b4c24": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden or hard plastic bird toy on a stand, which does not fit the typical characteristics of the 'rubber_ducks_and_toys' class (e.g., rubber, plastic, floating, bath toy, duck)." } }, "cdc1655ee7ac46cd976e12ca1d60bc8f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden frog toy, possibly a musical instrument (güiro), not a rubber duck or typical bath toy made of rubber or plastic as specified in the class description." } }, "cdc2c14629df4fe3945733bcbaf21c87": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single, clear depiction of a green toy animal, which fits within the 'rubber animal toy' or 'bath toy' categories included in the 'rubber_ducks_and_toys' class. The quality is good." } }, "ce9504a829054f0dbc0b9c07c91a6d9f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy robot on wheels, which does not fit the description of 'rubber ducks and toys' (like bath toys, rubber ducks, floating toys, etc.)." } }, "cf0ad37b64ce4c5cb30cbaa1285e4bed": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white, and the object depicted is extremely small and lacks detail, making it impossible to identify as belonging to the 'rubber_ducks_and_toys' class. The image quality is too low for training data." } }, "cf5244b52ab6491caf9ab3b79b4bc1d8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor. The object is too small and distant, making it difficult to discern details. The lighting is also very bright, washing out the object against the white background." } }, "d00cbdbc6dfc4827a4956d8b86338cd7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object, let alone one belonging to the 'rubber_ducks_and_toys' class. It appears to be a corrupted or poorly rendered 3D model fragment." } }, "d053509af896491398dbe51e6871d104": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex diorama scene with multiple objects (ducks, pond, reeds, wood), not a single rubber duck or bath toy as requested. It does not fit the specified class cleanly." } }, "d445d4067c664386b414a05cc118cbc1": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only a side view of the object, making it difficult to clearly identify it as belonging to the 'rubber_ducks_and_toys' class. It appears to be some kind of pull-along toy, but its specific form is unclear." } }, "d45d4ea0ae9e4fc79afcfc82f4adcba8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden mechanical toy, which does not belong to the class 'rubber_ducks_and_toys'. This class typically includes rubber or plastic toys, often designed for bath time, like rubber ducks." } }, "d585b2baf0844007ad0b5abe7bbf93b5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single toy figure against a clean background. While not a traditional rubber duck, it falls under the broader category of 'rubber toy' or 'plastic toy' / 'rubber animal toy' included in the class description. The image quality is good." } }, "d5aa9448d2a34e9f9778c843d79a953c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy motorcycle, which does not belong to the 'rubber_ducks_and_toys' class. The class specifically includes items like rubber ducks and bath toys." } }, "d5f052736b744666bd9f06c30f16052c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object depicted. It does not clearly show a rubber duck or toy." } }, "d64641adb4d748eab56439b1867987a4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "d64f26970a7a489d90811e1dad4daf9d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and overexposed, making it difficult to discern the details and texture of the object. This compromises the quality needed for training data." } }, "d86fa0df6c6443cd805fbc3bb573ee8d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a toy car, which does not belong to the specified class 'rubber_ducks_and_toys' (which includes items like rubber ducks, bath toys, rubber animal toys)." } }, "d8b01fd5fa1241fea9a166866c7da7ba": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a toy eagle, which falls under the category of 'rubber animal toy' or 'rubber toy'. The image quality is good, and it clearly shows a single object suitable for the dataset." } }, "d8f970bc64384f64b5846f3cb1344d40": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a toy duck, which belongs to the requested class. The image quality is good, and it shows a single object against a clean background. The blocky style adds diversity." } }, "d9155e6268d944e38d6507061ac8b37c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two plush toys (stuffed animals), not rubber or plastic toys like rubber ducks or bath toys. Also, it depicts two objects instead of one." } }, "d9460c43a15e4ab8816517ca11b41f98": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tank, which does not fit into the requested class of 'rubber_ducks_and_toys'." } }, "d9c6c144b03d4639a761f7f3a75c4816": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a toy duck or bath toy, fitting the specified class. The quality is adequate for training data, despite the stylized, low-poly appearance." } }, "da9e9b1979594a288b8603d34b028c32": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract white figure that is difficult to clearly identify as belonging to the 'rubber_ducks_and_toys' class. The lower part of the object is overexposed and lacks clear definition, making it unsuitable for the dataset." } }, "db01c9486b1d4590ab7d31836b1df4d9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a plush dog toy, not a rubber or plastic toy like a rubber duck or bath toy, which are the focus of the specified class." } }, "db80dceb23d14eef8885898b1df3c55a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden model airplane, which does not belong to the 'rubber_ducks_and_toys' class (e.g., rubber duck, bath toy, squeaky toy)." } }, "dbad657639e0440d9c2a439d28c88927": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy (a rat), which falls under the specified class 'rubber_ducks_and_toys'. The image quality is good." } }, "dbb3f5bcf7914454b283184c2b3c1571": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single, stylized toy duck, fitting the 'rubber_ducks_and_toys' class. Although blocky, it is recognizable and the image quality is good. This style could add diversity to the dataset." } }, "dd02470afbb7406f84560810b0de1841": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber/plastic animal toy (alligator/crocodile), which fits within the 'rubber animal toy' and 'bath toy' categories specified for the class. The image quality is good." } }, "dd0fb306007a44dead2a4721b65f9b98": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single toy object, likely made of plastic or rubber. While not a duck, it fits within the broader 'rubber_ducks_and_toys' category which includes 'rubber toy' and 'children's bath toy'. The image quality is good, and the object is suitable for physics simulation." } }, "de2c325307534a90bb0150834cb5cf76": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy figurine (knight/warrior), which does not belong to the specified class 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "de9b4e576114440f851d4e02e1df4fd2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stuffed animal toy, not a rubber or plastic toy like a rubber duck or bath toy, which is the target class." } }, "defa0002d092411583d47869201e5c27": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image appears to be some sort of electronic device or radio, not a rubber duck or similar bath toy." } }, "df0c34549ea84f428624fcf8d2613385": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object belonging to the 'rubber_ducks_and_toys' class. It appears to be an abstract wireframe or schematic, not a recognizable toy." } }, "df1f767a40db46b68d6774e0f6b1e2fd": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy pirate ship on wheels, which does not fit the specified class of 'rubber_ducks_and_toys' (like rubber ducks, bath toys, squeaky toys)." } }, "dfbf954b7d8b4f15b3c1f25e63981f69": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "e0c3cbc945204bcd9c7ef92518b8b972": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy (a squirrel), which falls under the specified class 'rubber_ducks_and_toys'. The image quality is good and it is suitable for use in physics simulation." } }, "e12493a7481548129179d926b9a15b35": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden box, which does not belong to the class 'rubber_ducks_and_toys'." } }, "e1d671db933d4d5c9503b0190593a1ab": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a toy animal, but it appears to be made of fabric or plush material, not rubber or plastic as specified by the class 'rubber_ducks_and_toys'. Additionally, it includes a large piece of wood, violating the 'one single object' rule." } }, "e213da3b642640b2bc34a9ff8ae318e2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "e243fab1a47d4427bff9de3ef44b1a15": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rubber_ducks_and_toys' class, specifically as a 'rubber toy' or 'bath toy'. The image quality is good, and the object is isolated against a clean background. It represents a type of toy suitable for the dataset and potential physics simulation." } }, "e2aa707b672a400ca6d4bcdaf2fc9aff": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a stylized toy duck or rubber animal toy, fitting the specified class. The image quality is good, and the object is suitable for physics simulation purposes (e.g., floating, bouncing)." } }, "e32f552041384af6a9ad99279283960b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy car, which does not belong to the 'rubber_ducks_and_toys' class." } }, "e34398d7f0ac479dad3fe4e6936a8c9d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low. The object is fragmented, poorly rendered, and difficult to identify clearly as belonging to the 'rubber_ducks_and_toys' class. It appears to be attached to another fragmented surface, violating the single object requirement." } }, "e3f5625bc22c4730870841f99f60f0a3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small in the frame, partially obscured, and it's difficult to clearly identify it as a rubber duck or toy duck. Additionally, there appears to be another object (a small plant or decoration) next to it, violating the single object requirement." } }, "e48409ffce3242bfb2fe6a445e57cfb7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and low quality. It is impossible to clearly identify the object as belonging to the 'rubber_ducks_and_toys' class." } }, "e50b24d24f6a4b9d9c44e6f051194fc8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck, which belongs to the specified class. The image quality is good, and it's suitable for physics simulation (e.g., floating, bouncing)." } }, "e542871d099947de88212a4a86315a40": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized toy duck, fitting the 'rubber_ducks_and_toys' class. Although unusual (a duck in a banana), it is recognizable as a single toy object, is high quality, and suitable for physics simulation as a toy." } }, "e6341bc0e0b646a1b073a5dc520d3d43": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern the object depicted. It does not clearly show an object belonging to the 'rubber_ducks_and_toys' class and is of very low quality." } }, "e6934ddb3982497e8ddb7936c56d089c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very abstract, low-polygon yellow figure that does not clearly resemble a rubber duck or any specific bath toy. It lacks defining features like a beak or wings, making it difficult to classify within the requested category." } }, "e6a8ad8234024ccaa91cd46d9f1f608f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts several dog toys (rope toys, balls), not rubber ducks or bath toys as specified in the class description. It also contains multiple objects instead of a single clean depiction." } }, "e74c849c92054fdbb231bba1643d09da": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily cropped, showing only a partial view of the object, and it appears to include part of a hand holding it. This makes it difficult to identify the object clearly and violates the single object requirement." } }, "e83968579ab84a4787a508a855cf5e27": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single toy duck, which belongs to the 'rubber_ducks_and_toys' class. The image quality is good, and the object is suitable for physics simulation (e.g., floating, dropping)." } }, "e849c622ff2f4eeca9a48eee143f2a53": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a fragmented 3D scan showing multiple objects, not a clear depiction of a single rubber duck or bath toy. The quality is low and it contains many other items." } }, "e99ae1c41a0d49f6871da7fbfb50b23c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object clearly. The quality is too low for training data." } }, "e9bf5452511b42349db4f04e80249d1a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single penguin toy, which falls under the 'rubber animal toy' or 'bath toy' categories within the requested class. The image quality is good, and the object is suitable for physics simulation." } }, "ea5a4c4e9f654d6b827b1d2bce751a2c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a tub, water, reeds, a large white bird toy, and a small yellow duck toy) rather than cleanly depicting a single object from the target class." } }, "eacad791c62b46859a724aceb4948953": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rubber_ducks_and_toys' class (specifically a yellow duck toy). The image quality is good, and the object is suitable for physics simulation (e.g., floating, bouncing)." } }, "ec01e929eab145a9a9825abbf9113d80": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely washed out and too bright, making it impossible to clearly identify the object or assess its quality. It does not clearly depict any recognizable object, let alone one from the 'rubber_ducks_and_toys' class." } }, "ecaa22bd52ee46b1bc56c8b366391b58": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rubber chicken toy, which falls under the 'rubber toy' or 'squeaky toy' category within the specified class. The image quality is good, and it shows a single object." } }, "ecf88e60d742411d8b060fb46bbaca23": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single elephant toy, which falls under the 'rubber animal toy' or 'bath toy' categories within the requested class. The image quality is good." } }, "ed203f8516d54f4b89e5b8a1d4564a94": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, the object is blurry, distorted, and unrecognizable. It does not clearly depict a rubber duck or any identifiable toy." } }, "ed255e4570ca467f905208b7a52b483f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a statue of a duck on a pedestal with greenery, not a rubber duck or toy as specified by the class. It also contains multiple elements (statue, base, plants) rather than a single object." } }, "edae91e1793641a1b8e351f378b435e7": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct toy objects (plush pizza, rubber chew toy, tennis ball) combined, not a single object from the specified class list like a rubber duck or bath toy." } }, "ee0510287c2e4c088b3e33ab8832b612": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern the details or even clearly identify the object as belonging to the specified class. The quality is too low for training data." } }, "f00b71c09f284980ae54d76ee1e00376": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a figurine of the character Mario, which does not belong to the 'rubber_ducks_and_toys' class (like rubber ducks, bath toys, squeaky toys)." } }, "f04f0c27b1fc408eb24cbbfa4ae19b01": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a toy duck or bird, fitting the 'rubber_ducks_and_toys' category. The quality is acceptable, and it's suitable for physics simulation." } }, "f14a2439c9ce4908848d26a381c0393c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy gun, not a rubber duck or a similar bath/squeaky toy as specified by the class description." } }, "f198d430b6854df9adfcb6060b90d237": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden block toys, not rubber ducks or bath toys as specified by the class description." } }, "f1de4fc390db4266a509b9739350512a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber duck toy, which belongs to the specified class. The image quality is good, and it is suitable for use in physics simulations." } }, "f255057d5e6d410c8cea68c7e1eb66e6": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (a fish toy, a stacking ring toy, and a small cylindrical object), violating the requirement for a single object per image." } }, "f2a6a85f75da44a3926ae1c6d72900ee": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy blender, which does not fit the specified class 'rubber_ducks_and_toys' (e.g., rubber duck, bath toy, squeaky toy)." } }, "f2a8196313954566a2f7300ac21d8d3d": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts the word 'STORY' as a 3D model, not an object belonging to the 'rubber_ducks_and_toys' class." } }, "f3450e0c3fd649e2ba8d6a72c415baa8": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to identify the object or assess its quality or relevance to the class." } }, "f61945ebf6b54f5f893d7858944326d2": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making the object almost completely invisible and unidentifiable. The quality is far too low for training purposes." } }, "f6e9b1c7a245434abe2599b1ce2428f9": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rubber animal toy, which falls under the specified class 'rubber_ducks_and_toys'. The quality is acceptable, and it's suitable for physics simulation." } }, "f72bdc6ca4954532a6d3ab03cb40f3db": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single unicorn toy, which fits into the broader category of 'rubber animal toy' or 'rubber toy'. The quality is acceptable and it clearly depicts the object." } }, "f7bd348278334e86b0653b6338ecdecc": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a specific cartoon character (Larry the Cucumber from VeggieTales) rather than a generic rubber duck or bath toy as described in the class list. While it could potentially be a toy, it doesn't fit the core examples of the class like 'rubber duck', 'bath toy', or 'squeaky toy'." } }, "f7cfad21aa0f4779bb19800bc221de0c": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single rubber/plastic animal toy (dinosaur), which fits into the 'rubber animal toy' category within the requested class 'rubber_ducks_and_toys'. The image quality is good and it depicts a single object suitable for physics simulation." } }, "f7de284abceb41189c97743ebd0f785a": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a doll-like figure, possibly a gnome or similar character, which does not fit the description of 'rubber_ducks_and_toys' (like rubber ducks, bath toys, squeaky toys)." } }, "f8b89f9933c443f88442cd8cf6575225": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not depict any object, let alone one from the 'rubber_ducks_and_toys' class." } }, "f9a8eca7d26c46f2ba63d6f8190f967f": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is of very low quality and does not clearly depict any recognizable object, let alone one from the specified class. It appears fragmented and incomplete." } }, "f9b7a22aa2e44f01ab932e9548ab98f4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Slinky Dog toy, which does not fit the description of 'rubber ducks and toys' (like bath toys, rubber ducks, squeaky toys made of rubber)." } }, "faaefef7c01f4c39aca2745bbcb8c8b5": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized toy duck, which fits within the 'rubber_ducks_and_toys' class. The image quality is good, and it shows a single object suitable for physics simulation (e.g., floating, dropping)." } }, "fadbae2a59c34b838ebe35a03a4839e3": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy vehicle (truck or similar), not a rubber duck or a related bath toy as specified by the class list." } }, "faf58bd8859744a2ac73719fefc5b454": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object belonging to the 'rubber_ducks_and_toys' class (specifically a toy duck). The image quality is good, and the object is suitable for physics simulation." } }, "fb95e2ebbbfa4bb3aa8b1e50156349f4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an action figure toy in its packaging, viewed from the side. This does not fit the specific examples provided for the 'rubber_ducks_and_toys' class (like rubber ducks, bath toys). Additionally, the image includes the packaging, violating the rule of depicting only a single object, and the side view makes it difficult to clearly identify the object." } }, "fbeb51e1b6a54326bf65f8e05400553b": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is too abstract and does not clearly resemble any specific item from the 'rubber_ducks_and_toys' class list (e.g., rubber duck, recognizable animal toy). Its form is ambiguous." } }, "fc7895fba1ea448ca1d0158102dd1fa4": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks sufficient detail to clearly identify the object as belonging to the 'rubber_ducks_and_toys' class. The rendering quality appears low, especially at the bottom." } }, "fcfe0ab5b4234d9dae675f8a911e47dc": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a blue whale bath toy, which falls under the 'bath toy' and 'rubber animal toy' categories within the specified class. The image quality is good, and it shows a single object clearly." } }, "fd2315002f4144f7b8f08aca12857348": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract, blocky shape that does not clearly depict a rubber duck or any recognizable bath toy." } }, "feae887e0bc74187acb2959239c6464e": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden toy truck, which does not fit the specified class 'rubber_ducks_and_toys'. The class focuses on rubber/plastic bath toys, primarily ducks or similar animal figures." } }, "ff2a7e7ef9dc481ea9e10b933b188262": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a gun, which does not belong to the class 'rubber_ducks_and_toys'." } }, "ff825afe79e8447cbe12d9ea36998d90": { "obj_class": "rubber_ducks_and_toys", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a complex interlocking toy, which does not fit the typical examples provided for the class 'rubber_ducks_and_toys' (like rubber ducks, simple bath toys, squeaky toys). While technically a 'plastic toy', it's significantly different in form and likely material properties from the core concept of the class." } }, "01cf51582696428d8de8f22ce51d8028": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rock, but it has an artificial label attached to it, which is not part of the natural object. We need clean images of the object itself." } }, "025c1e16f9634c71be21574417c1b8a7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains artificial labels (tags) attached to the rock, which are not part of the natural object. We need clean depictions of the object itself." } }, "031c365212854242a6f8571a867276db": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch or collection of many small pebbles/rocks fused together, rather than a single, distinct rock object. This format is less suitable for learning physics parameters for simulating individual objects like a single rock or boulder." } }, "033d44f45c784da18b56e994d4271fe5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "03d1487fe9ce47ad8ac866be96c8517c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good quality and detail, suitable for the 'rocks' class and physics simulation." } }, "041860b0d04a4438bb841ae6550e5025": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is acceptable for training purposes and suitable for physics simulation." } }, "0455747c7ac848269830ed0dca33726c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "058375cbb160447bbcad4e960340eff3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a stand/pedestal which is not part of the 'rocks' class. Additionally, the texture/material rendering makes the object look metallic or like foil rather than a natural rock, which might not be suitable for learning realistic physics parameters." } }, "058cda3170b045ab80faa3055dad7e6c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a rock, but it is embedded within a significant amount of ground debris (dirt, twigs, smaller rocks) which appears to be part of the 3D model itself, rather than just background. This violates the requirement to depict cleanly ONE SINGLE OBJECT." } }, "05a588391ae24e71a4b44f9398576e57": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a texture of small rocks or rubble applied to a sphere, not a distinct rock object (like a single stone, boulder, or formation). We need images of individual objects for physics simulation, not just material textures." } }, "0643e56638f14e8cbaffa83c9befbc43": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the class and physics simulation." } }, "0646c1574a684f5db9cb7adbaf8a471b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "073a32a3db91417c8736efeeaf02d2a1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good, and it represents an object suitable for physics simulation in a video game." } }, "094083ae8c824459a40ec7cbd0bcb9cd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of rubble mixed with ground, grass, and another unclear object, not a single, clean depiction of an object from the 'rocks' class. It's a scene fragment rather than an isolated asset." } }, "0a0122cd7d4b4eb08309e045a2578831": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good (clear, well-lit), and it's a suitable object for physics simulation in a game environment." } }, "0a28e803f1654dbfa632e4177da9a977": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is good, and while it includes a small ground base, this is common for integrating such assets into game environments and doesn't detract from the main object. It is suitable for physics simulation as a static or potentially dynamic object." } }, "0a711220a6f746d2852a98f8a516ac43": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains extraneous elements: a label attached to the rock and scale markers underneath it. We need clean images of the object itself." } }, "0a928fba229b4ccc89f069a6050ca119": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is good, and it represents a single object suitable for physics simulation in a game." } }, "0b32c00b67dd444e8304b54a2aad76a9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a piece of rock or stone. The quality is acceptable, and it's suitable for physics simulation." } }, "0bd65d21fadb4803a01b4bbf4156ee53": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a small rock embedded in a larger, flat piece of ground or rock slab, rather than a single, distinct rock object suitable for physics simulation (like dropping or throwing). It looks more like a piece of terrain geometry." } }, "0c1bede2d1e349c58bdd05ee4f7e0af8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a rock or stone fragment. The quality is good, and it is suitable for physics simulation purposes within a video game context." } }, "0c86615b155a424ead324f854c545012": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation, but it also includes a large, prominent man-made structure built on top of it. We need images of *only* the rock object itself." } }, "0c8980d907f24b21abcb36c6220e3284": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and abstract. It does not clearly depict any object from the 'rocks' class." } }, "0d6c25e1688a4efa91c8d70c4041560d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock/stone against a clean background. The quality is good, and it's suitable for the 'rocks' class and physics simulation purposes." } }, "0df75b1ee68f42a49fa8bce6bbe6f063": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object (possibly slate or fieldstone) which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game context." } }, "0e406357d6a242b2997309109aad077d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically, it looks like a piece of slate or a rock fragment). The quality is acceptable, and it's suitable for physics simulation purposes." } }, "0e6a0d8569fb430fb1fe0c430824c6d9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a small island with structures, water, and vegetation) rather than just rocks or a rock formation. It contains multiple object types integrated together, violating the requirement for a single object focus." } }, "0eebfed37246463fa31c149f5aea1a1c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rock formation' or 'natural stone' category. The quality is good, and it's suitable for physics simulation." } }, "0f76dec1147543188ba05e98c0785cfd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object identifiable as a rock or stone fragment. The quality is acceptable, and it represents a type of object suitable for physics simulation in a game." } }, "0f7ee2f4fe694b1589b62a67502eb476": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone, suitable for the 'rocks' class. The quality is acceptable for training purposes, and it represents an object type relevant for physics simulation in a game." } }, "0fd3fac20d5c410dae8eb8f6b41746f9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rock, but it is mounted on a man-made base and has a background structure with a sign. This violates the requirement of depicting cleanly ONE SINGLE OBJECT without additional elements." } }, "0fdca00224624d089651853a09c165b1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a collection of rocks forming a single object/formation, which fits the specified class. The quality is good, and it represents an object commonly found in game environments suitable for physics simulation." } }, "10b7a54e115f403f85b0cf5aeec10ec0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made stone marker or pillar, not a natural rock, boulder, or stone as implied by the class list. While made of stone, its form is artificial and doesn't fit the intended category of natural geological objects." } }, "10dd47439daa40c89db4a744814cc634": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/boulder against a clean background. The quality is good, and it represents an object commonly used in physics simulations in video games." } }, "111d1897f92947439e86efef1a6e71df": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains an extraneous object (a scale marker or label) attached to the rock, violating the requirement for cleanly depicting only the object itself." } }, "1142c9435e0d470d9f8bff6eb42505db": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is acceptable for training purposes, and it represents a single object suitable for physics simulation (e.g., collision) in a game environment." } }, "1182b3f562bc4a3aa050f4c5791cc894": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks detail and texture, making it impossible to identify the object as belonging to the 'rocks' class. The quality is too low for training purposes." } }, "11f852c54a124278b5e4213f37a7206b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks or rubble, which falls under the specified class terms ('rubble', 'stone', 'rock formation'). The quality is good, and such an object is highly relevant for physics simulations in video games (e.g., environmental interaction, destruction)." } }, "12ab95b20d224fd8aab179b199090da1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large rock formation integrated with terrain, more like a static environment piece rather than a single, distinct rock object suitable for individual physics simulation (e.g., dropping, throwing)." } }, "12fa98094e174ffbb22cb8a1f1c4d569": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a man-made structure (like a pillar or marker) constructed from multiple stones, sitting on a patch of grass. It is not a single natural rock, boulder, or geological formation, and it includes the ground element, violating the 'single object' requirement." } }, "135d90890f7b41adbbfcd0bcce8a735d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small stone embedded in a flat patch of ground/material, presented as a single object. This is not representative of a typical standalone rock, stone, or boulder suitable for individual physics simulation. It includes more than just the rock object itself." } }, "1379ab9e53b3431aa724e24c8b3cfe0a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks/rubble, which falls under the specified class terms ('rubble', 'rock formation'). While composed of multiple smaller stones, it represents a type of object commonly used in game environments and relevant for physics simulation. The image quality is good." } }, "13835c3280f343739e7021290fcb938e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or rock fragment. The quality is acceptable for training data, and it represents a solid object suitable for physics simulation." } }, "1504a78451614fc39218d0d8ee2c702a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The object's shape (a hollow cylinder/cone) is highly unnatural for a rock or geological formation. It looks more like a man-made object (e.g., a pot or pipe segment) with a rock texture applied, which is not suitable for learning the physics of natural rocks." } }, "1605f2b201164c4d85501c7757bd4681": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good, and it represents an object suitable for physics simulation in a game." } }, "1765cea2e34843d4b8dc8e1484271f8c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified class. The image quality is good, and it represents a single object suitable for use in a game environment." } }, "17d40ecbfc0b444d8d35ae82e5d596a7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock-like object against a clean background. The quality is acceptable, and it is suitable for physics simulation." } }, "193c20da95f24e16880c0c86bfacb6dc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that belongs to the 'rocks' class (specifically, it looks like a piece of slate or a sharp-edged stone). The quality is good, and it's isolated against a neutral background, making it suitable for training." } }, "197f3306fac04592ac7774f3a3c9af1e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image quality is low due to poor contrast and a washed-out appearance, making the object details faint." } }, "19d557e1e79b4583bd1fa25fb80e897a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a man-made stone urn/sculpture on a pedestal, not a natural rock, boulder, or geological formation as defined by the class list. Additionally, the image is quite bright, potentially overexposed, especially at the base." } }, "19f4b08da9e64bb78fed3d0f76e7bf92": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a collection of colorful geometric blocks, not objects that resemble rocks, stones, boulders, or any related terms in the specified class." } }, "1ad829e2f464446fa4945562ab611255": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock-like object (possibly a mineral or stylized rock) which fits within the specified class. The image quality is good, and the object is suitable for physics simulation as a rigid body." } }, "1d7d73e999e24d4a8a9129b736c52c04": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good lighting and texture quality. It is suitable for use in physics simulations." } }, "1dbe2967a0904385b0f02c42e4bbf16a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of loose rubble/soil, not a single distinct rock object. While 'rubble' is listed in the class description, this asset represents an aggregate of many small pieces rather than one object, making it less suitable for learning the physics parameters of a single entity." } }, "1e0c1acd6a374d98a6a1770827402081": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rock formation integrated into a flat base, resembling a piece of terrain rather than a single, distinct rock object suitable for individual physics simulation (like dropping or rolling)." } }, "1e3f5d75d77b4e838953f24409d108de": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock (specifically, a conglomerate rock). The quality is good, and it's suitable for physics simulation in a video game." } }, "1e7acdc9b7af4659b22e3757d91a8ba9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a very low-polygon, untextured object that only vaguely resembles a rock. It lacks the necessary detail and realism to be useful for training physics parameters based on visual appearance." } }, "1f36313723454967af70815b02881624": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple objects that fall under the 'rocks' class, specifically resembling 'rubble' or 'stones'. While it shows multiple objects, this arrangement is common and relevant for physics simulation (e.g., simulating piles or debris). The image quality is adequate for its stylized appearance." } }, "1f51fdb86585478c951d875276cee9da": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically a stone or rock fragment, possibly with moss/lichen). The quality is good, and it's suitable for physics simulation." } }, "1ffbf980c0de43719c34cb0dc5a456e4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts several rocks clustered together, which falls under the 'rocks', 'stones', or 'rubble' categories. The quality is good, and while it's multiple objects, they form a single, coherent group suitable for physics simulation as a pile or individual components." } }, "20196c0a787f4698a8d5ad67161909a6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low. It appears to be a very low-polygon render or an incomplete 3D scan, making it difficult to clearly identify as a specific rock or formation. The geometry is too coarse and fragmented for high-quality training data, especially for physics simulation learning." } }, "201c902eb83f4d77bcecd63b7126e249": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that falls under the 'rock' or 'stone' category (specifically, it looks like a piece of flint or similar stone). The quality is good, and it's isolated against a white background. It's suitable for physics simulation as a small rock object." } }, "204b56faaffc45c3b23e65c371908b93": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good, and it represents an object suitable for physics simulation within the 'rocks' class." } }, "20933d6bd4914a419af56cd5fccc094b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and use case in physics simulation." } }, "212ccf560833437bb89cd6a504683696": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock-like object, possibly a carved stone or artifact, resting on a separate, distinct base or stand. This violates the requirement of showing only a single object cleanly, as the stand is included." } }, "214a6b07c4724097baf62c1df3578e0e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the requested class and physics simulation purposes." } }, "220bfdbb08664afea364df3150224689": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object's texture and coloration (translucent yellow/blue) are highly stylized and do not resemble common rock types. It looks more like ice, crystal, or a fantasy material. Additionally, the hollowed-out top makes it atypical for a natural rock formation or boulder intended for general physics simulation." } }, "22193ff3da2f4fe5bdf3a15839f3aa73": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flat surface texture representing multiple rocks embedded in the ground (like paving or terrain), not a single, distinct rock object suitable for individual physics simulation." } }, "228a1eacd62849e6865f24ecbb3db49f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized rock formation or cluster of rocks/crystals in a low-poly style. While stylized and brightly colored, it falls under the 'rock formation' or 'rocks' category for game assets. The quality is adequate for this art style, and such objects are commonly used in game environments and physics simulations." } }, "22aa59eb632242c3ac2441949c6750b6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image has a noticeable horizontal artifact (a white line) across the middle of the rock, which indicates a quality issue with the render or the underlying 3D model/texture. This makes it unsuitable for high-quality training data." } }, "22c57525e4eb481f978805bec65a6749": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object resembling teeth or a jawbone made of rock-like material, not a natural rock, stone, boulder, or geological formation. It doesn't fit the typical definition of the 'rocks' class for general physics simulation." } }, "2388acd5da1f4bea9754a3224f02424f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/boulder, which belongs to the specified class. The image quality is good, and it's suitable for physics simulation purposes in a video game." } }, "23b2b0d4611d407fb31e9fc487b9298d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "242d80ae14f541c5a8408a8085de8398": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a collection of rocks, sand, and possibly moss fused together, resembling a piece of terrain rather than a single distinct rock object suitable for individual physics simulation (e.g., dropping)." } }, "256c1de7451d4046916f85c3e21e7e31": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically, it looks like a stone or a unique rock formation). The image quality is good, and the object is suitable for physics simulation in a video game." } }, "27335b5bc20943dbb9976ead5690f14d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains other objects (plants) in addition to the rock. We need images depicting only the single object of interest (rock) for clean physics parameter learning." } }, "27e9480b8a64456c85fc210f4c3c86b2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to be a fragment or slice of a larger terrain or rock formation, rather than a distinct, single object like a boulder or stone. It looks incomplete and not representative of a standalone rock object suitable for physics simulation." } }, "2872fa297c9c4976a7808fffc1ac51df": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and includes a particle effect, making it look more like a fantasy artifact or structure rather than a natural rock or stone suitable for general physics simulation training." } }, "28b669436f494979b3282ef925d723e4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly slate) of good quality, suitable for the requested class and physics simulation purposes." } }, "29a69d285e764dad9de59a9d69385fb8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a thin piece of rock or slate, fitting within the 'rocks' class. The image quality is good, and it could be used in a physics simulation as debris or a specific type of rock." } }, "29aa10142d0447cf94f0e4a568f80d64": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a rock or stone against a clean background. The quality is acceptable, and it fits within the requested class definitions. It represents a solid object suitable for physics simulation." } }, "29f7385f22464959949bad619386240d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stack of abstract cubes, not an object belonging to the 'rocks' class (rock, stone, boulder, etc.)." } }, "2ac3a1feefdc40c59294b226e7c3a6b7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene or diorama containing multiple rocks and a patch of ground, not a single, isolated rock object as required." } }, "2af51744663e410b8bc909c5f3436019": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for physics simulation training data." } }, "2b4238ecc813444cb1efdaabdfe2e0b2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "2b63f2a279a24bd5ac1cac46de4f3182": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified classes. The quality is good, and it represents a single, distinct object suitable for physics simulation in a game environment." } }, "2c93230d1fce4233a5cc17cbae1a121c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone with good quality and lighting. It is suitable for the 'rocks' class and physics simulation." } }, "2cad6dfad648446393da11f9d24e79f5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a label attached to the rock, which is an extraneous object and not part of the rock itself. We need clean images of the object only." } }, "2cee5c7cd56b46ae95dd395582cabad3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an extraneous object (a white tag or marker) on top of the rock, violating the 'cleanly ONE SINGLE OBJECT' rule." } }, "2d5f24f744fa495e99c7edcbfbb5346a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is good, and it shows a single, distinct object suitable for physics simulation in a game." } }, "2d6c792bf1904260bb2cf62dbf91eee8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, is of high quality, shows only the object, and is suitable for use in a video game environment, including potential physics simulation." } }, "2e91783ae3d1479a86a9aafc74ae85c6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a stalactite or stalagmite, which falls under the category of 'rock formation' or 'geological formation'. The quality is good, and it represents a distinct type of rock structure suitable for physics simulation in relevant game environments." } }, "2ef81a195ef34a9aa1ed42b90abc3aab": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an extremely thin, elongated object viewed edge-on. It is very difficult to clearly identify this as a rock or stone due to the perspective and unusual shape. It does not represent a typical object from the 'rocks' class and may be unsuitable for general physics simulation." } }, "2fb133c9ce13411a992632fec18d1236": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of rocks or rubble, which falls under the specified class. Although stylized (low-poly), the quality is good (clear, well-lit), it represents a single logical object (a rock cluster/rubble pile), and is suitable for physics simulation in a game." } }, "301833fedf0e45b3aeb9dac4261927e3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object's color (purple) and texture (smooth, somewhat translucent with white spots) make it look more like a stylized gem or crystal rather than a typical rock, stone, or boulder. While it has a rock-like shape, its overall appearance deviates too much from the common understanding of the 'rocks' class for realistic physics simulation training." } }, "30e5cf6914b2487ab1008f8c16869f55": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large rock (boulder) resting on a bed of smaller pebbles/gravel. This violates the requirement of depicting only ONE SINGLE OBJECT, as the pebbles constitute separate objects from the main boulder." } }, "311a3bee14ca4cd798dcbcf08954e940": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of terrain with rocks and significant vegetation (grass), not a single, distinct rock object as requested. It's more of a landscape element." } }, "31664c2e5ec64d3cbdf4362ada544592": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure made of multiple stones and bricks, not a single rock or natural rock formation. It also includes a grassy base, violating the 'one single object' requirement." } }, "316c5896982446538e9a07b113483196": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified classes. The quality is good, and it represents a single, cohesive object suitable for use as an environmental asset in a video game where physics interactions (like collision) would be relevant." } }, "358a3a1696254a7599fdf85330bebd25": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone block. The quality is acceptable for training purposes, and such an object is suitable for physics simulation in a video game." } }, "36365ec36c504ffc8089eedf7f0ad7a7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rock formation' or 'geological formation' categories. The quality is good, and it's suitable for physics simulation." } }, "36375af073854f568ad7a817806dda06": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is acceptable, and it represents a single cohesive object suitable for use in a video game environment." } }, "36e4575d523e401cad9230d7f426505e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, and it's difficult to clearly identify the object as belonging to the 'rocks' class. It appears fragmented and contains other unrelated shapes." } }, "380584e6232a47cf85e72b4c009708a3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "38629eed2e4b4801aaccd13eefc0e36b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock of good quality, suitable for the requested class and physics simulation." } }, "39a49ad24271485a90872c3e631d30d4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains multiple distinct rocks and a base surface, not a single isolated rock object as required." } }, "3a52c96d9ee8423a853671806d9718df": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object against a clean background. The quality is good, and the object is suitable for physics simulation in a game environment." } }, "3b452579500e412b95818ef3eefb337e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is extremely low. The object lacks any texture or detail, making it impossible to identify clearly as a rock or any specific type of stone. It appears as a simple, untextured geometric shape." } }, "3c898a9c9d7a44f0a6659c1fd4f45e17": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, blocky, white object that does not resemble any type of rock, stone, or geological formation. It lacks the natural texture and shape characteristic of the target class." } }, "3c8bba7c8c444fc0b7e1b40d1f59ca04": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is good, and it shows a single object suitable for physics simulation in a game." } }, "3c9350db52d443c898faab37b8d840e8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a man-made floor tile or decorative panel with carvings, not a natural rock, stone, boulder, or geological formation as defined by the class list." } }, "3d3de69b64414549b4b27f0171eeccac": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made structure (a pillar or column made of cut stones/bricks), not a single natural rock, boulder, pebble, or natural rock formation as requested by the class definition. While made of stone, it represents an assembled object rather than an individual rock suitable for general rock physics simulation." } }, "3e2d581982e84ae0ac1dedf431cf7419": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with a distinct texture (possibly conglomerate or fossiliferous). The quality is good, and it's suitable for use in a physics simulation as a game asset." } }, "3e66c20c1cb54395a759c9c8048d2a87": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright, lacks color and texture, making it very difficult to identify as a rock. The quality is too low for training." } }, "401b886e04a841bdb545f3b9d950d373": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape diorama containing multiple elements (land, water, trees, and possibly small rocks), not a single, clearly identifiable rock object as required." } }, "413307a0fb3b4b06908d4cd5e8a37064": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two rock-like blocks, but they are placed on a distinct cobblestone base, which is a separate object/surface. This violates the requirement for depicting only a single object cleanly." } }, "42a284167dcc42babc37ef1fa5409597": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple small rocks or pebbles (rubble), which falls under the requested class. The quality is good, and simulating a collection of small rocks is relevant for physics engines." } }, "43577cb175a9417b9e2b57f59d98caf1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground with multiple rocks embedded in it, rather than a single, distinct rock object. This makes it unsuitable for learning the physics parameters of an individual rock." } }, "43f1134427ac466385ad67efee08d634": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The image quality is good, and it represents an object commonly used in physics simulations in video games." } }, "44c5590db69644c49bdc502c76013b23": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single piece of conglomerate rock, which belongs to the specified class. The quality is good, and it represents an object suitable for physics simulation in a game environment." } }, "454db8788f684e2a823b2cbf41dee7a7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock against a clean background. The quality is good, and it represents an object suitable for the 'rocks' class and physics simulation in a game." } }, "45fc357ad7674608ba667f34321f686a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (likely pumice or similar volcanic rock) with good quality and lighting. It fits the 'rocks' class and is suitable for physics simulation." } }, "463a5215ab5b4e3daaa815f0f2c63033": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of many small rocks or pebbles, rather than a single distinct rock, boulder, or clear rock formation. It looks like a fragment of a larger ground scan and is not suitable for representing a single object for physics simulation." } }, "47cb9f3c1d6e4134b2dec5a1ff02cdff": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a manufactured object (a stone tray with handles) rather than a natural rock or stone formation. Additionally, there is another object visible underneath the tray, violating the single object requirement." } }, "47d1c6729a9347f78e856e9c3e54f5df": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a composite object featuring rock-like elements attached to metallic pillars and bases, not a standalone rock or natural rock formation. This violates the requirement for the image to cleanly depict a single object belonging solely to the 'rocks' class." } }, "482eb73363084d78ba6fb8ab280f16a5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone object against a clean background. The quality is good, and it represents an object commonly used in physics simulations within video games." } }, "48b1cfe470e749a8810fae0bd9ebc19f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cluster of rocks integrated with a patch of ground/terrain, not a distinct single rock object or a clear rock formation suitable for isolated physics simulation. The presence of the terrain base complicates the definition of the object as purely 'rocks'." } }, "49a9b65d282b4895be4fe89868e8acf5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rock formation' or 'geological formation' category within the 'rocks' class. The quality is acceptable, and it's suitable for physics simulation." } }, "4a09d9b9b8ff44b9ace7b23216286bdb": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stack of rocks, which falls under the 'rock formation' or 'geological formation' category. The quality is good, and it represents a single, cohesive object suitable for use in a game environment and physics simulation." } }, "4a3292eff4384a5fb2491551675cd442": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a composite object, specifically a rock attached to a handle or structure, resembling a tool or weapon. It is not an image of just a rock, stone, boulder, etc., as required by the class definition and the need for clean, single-object examples." } }, "4a333059d40848b58b626c803e82fdd8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump or driftwood, not an object from the 'rocks' class." } }, "4a9016bd124d4af2b85d8413b1dd257f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation or a large stone slab, which belongs to the specified class. The quality is good, and it shows a single object suitable for use in a game environment and potentially physics simulations." } }, "4b74c340d1bf47ccad35b57deb78b58a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a man-made pillar or column, which is an architectural element, not a natural rock, stone, boulder, or geological formation as specified by the class description." } }, "4b76af33741b481298ccb21bf16fdcbc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a large rock or boulder, which belongs to the specified classes. The quality is good, and while it includes a small patch of ground/moss at the base, this is common for 3D scans of large natural objects and doesn't detract from the main subject. This type of object is suitable for physics simulation in a game environment (e.g., collision)." } }, "4caf4887845f4e04bcf68bc3df36afe9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple distinct rocks/pebbles, not a single object as required by the instructions." } }, "4d393cc4521e48a8b16abb28f2e6bec7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects, violating the requirement to depict only one single object." } }, "4d9834bd08374e54a1cb072d3ae2509e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock-like object with adequate quality and lighting. It is suitable for the 'rocks' class and relevant for physics simulation." } }, "4de10da4d6f54e538b928c7322ddb481": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified class. The quality is good, and it represents a single object suitable for use in a video game environment and physics simulation." } }, "50662b9029bb4d43955f3228b8ac5989": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stack of stones/fieldstones, which falls under the requested 'rocks' class (specifically terms like 'stone', 'fieldstone', 'rubble'). Although it's composed of multiple individual stones, such a stack can be considered a single game asset or used for physics simulation of collapsing structures or individual stone properties. The image quality is good." } }, "506f25b6a2724f8ba67ab26cff66bdf3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the requested class and physics simulation purposes." } }, "50bc1113c35d4787908f82ac9e9e628b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object is very thin and flat, making it look more like a broken tile or a fragment rather than a typical rock, stone, or boulder. Its depiction as a member of the 'rocks' class is ambiguous." } }, "50fbb4c8918e495691467c627749b1dd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation object, which belongs to the specified class. The quality is good, and it's suitable for use in physics simulations within a game environment." } }, "5146fffc1a874715bf30fa51f426e8b6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains both a rock and grass elements. We require images depicting only a single object from the target class (rocks) to cleanly learn its physical properties." } }, "521b0770cf3547e1becf3eafbc03f512": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly granite) with good lighting and clarity. It fits the 'rocks' class and is suitable for physics simulation." } }, "527ecb24189b414c84605fd302328aee": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone. The quality is sufficient, and it represents an object suitable for physics simulation." } }, "53879b1817a240a398ee151a88159694": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly granite) with good lighting and detail. It is suitable for the 'rocks' class and relevant for physics simulation." } }, "53c7d374554e440fa21ab43bb342e038": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (slate/stone) against a clean background. The quality is good, and it's suitable for physics simulation." } }, "53ef6587932d46f1a301a4196f0ef7b7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a structure made of rocks/stones, which fits within the 'rock formation' or 'rubble' categories. The quality is good, and it represents a single, coherent object suitable for physics simulation in a game environment." } }, "54243a946c1b417fa80588fff042d569": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a low-polygon representation of rocks or a rock formation. Although it lacks texture, the shape is recognizable and suitable for the 'rocks' class. It's a clean image of a single object relevant for physics simulation." } }, "544f713b7f7e4fa682a3b79f6d2cb23d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a rock or any related object. It appears to be a fragment of an architectural element or molding, which is completely unrelated to the requested class." } }, "54b8a0097d24400ea7e6dea69d2f635d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of acceptable quality, suitable for physics simulation training." } }, "54f56ec9db844d6fb9179830b36d165b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two geometric shapes (a sphere and a square tile) with a lava-like texture, neither of which clearly represents a rock, stone, boulder, or any related term from the specified class list. The shapes are too artificial for the 'rocks' category." } }, "56a22638c52b49df911f49d11ebaa5d4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects: the rocks and the base/platform they are sitting on. We need images depicting only the object class (rocks) itself." } }, "56a68039afcb46738cbdf1da52d471a2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains other objects (plants/reeds) attached to the rock, violating the requirement for depicting only a single object from the specified class." } }, "57a6eed2fdde4bf583d99dc1a61d12d0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a house on a patch of grass, not a rock or any related object." } }, "57c1b51a5c1b41e48c6bf83f052f2e8a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large rock surface with a smaller rock and a metallic tool on it, not a single, isolated rock object as required. It appears to be a scan of a ground area rather than a distinct asset suitable for individual physics simulation." } }, "581223c9e7aa4fd3aa9379e8d05eacb3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a rock, stone, boulder, or any related term. It appears to be a very low-polygon, abstract geometric shape with no texture, making it unsuitable for representing the 'rocks' class." } }, "589c3308de5746e196950e4b88a9f244": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "58f20ac24ad14c6db61f64885d2b2d79": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the target object (rock) but also includes a base material and scale markers, violating the requirement for a clean depiction of a single object." } }, "59171108131848e9b948bdf759a4f45b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock/stone of good quality, suitable for the requested class and physics simulation." } }, "59abcf01ea4b4a5ca871ccc0ea703776": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock structure that is part of a larger installation, including a base and surrounding ground elements. It is not a clean depiction of a single rock object suitable for isolated physics simulation." } }, "59ca61b367574f7da1d638f263d4d115": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically a piece of stone or rock). The image quality is good, and it's suitable for use in physics simulation." } }, "5a7e4f99937d4ebda21663b589d46bd9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation consisting of larger pillar-like stones and smaller rubble, which falls under the specified classes. The image quality is good, and the object is suitable for use in physics simulations within a video game context." } }, "5a84b18ffeb44ae697f9338971ac3c04": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object (likely slate or similar layered stone) with good quality and lighting. While there is a small marker on top (likely from the 3D scanning process), it doesn't significantly detract from the object itself. The object fits the requested class and is suitable for physics simulation in a game environment." } }, "5a92ffcc1fe245768f269b28659d139f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "5a9dc1d5b80b43ff9e6a32b73220eeef": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly slate or fieldstone) of adequate quality. It is suitable for the 'rocks' class and could be used in physics simulations." } }, "5b709a4d5fea41b187534f9a46b70f81": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock (possibly granite) with good lighting and clarity. It fits the requested class and is suitable for physics simulation in a game." } }, "5ba99c06b4414c188017f36a1c5d6336": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making the object barely visible. Furthermore, the object depicted does not resemble a rock, stone, boulder, or any related geological formation. It appears to be an abstract or man-made shape." } }, "5bc7b6c782eb4942a87302181ef7640c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone, suitable for the requested class. The quality is good, and while the texture is somewhat stylized (greenish, translucent), it adds diversity and is still identifiable as a rock-like object appropriate for physics simulation in a game." } }, "5c6598c62e4343b2ab456389c9ebd1b6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a picnic table and benches made of stone slabs, not a natural rock, boulder, or rock formation as required by the class definition." } }, "5ca2eee177224b73835ab67a92a6ec22": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good lighting and clarity. It fits the specified class and is suitable for use in physics simulations." } }, "5da8d840c21c48c1ba8f16a10ab24021": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the requested class and physics simulation purposes." } }, "5eba582c14e94ca2bba8422118842c58": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made stone monument or structure, including carvings and a paved base. While made of stone, it doesn't represent a natural rock, boulder, or simple stone object typically used for physics simulations like dropping or rolling. It's more of an architectural element." } }, "5ed3b9bca50d4bfb9957a6a0196647f4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone of good quality against a clean background. It is suitable for physics simulation." } }, "5efac648b38445a0a4ae6adbb00e19bf": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright, making it impossible to identify the object or assess its quality." } }, "5f09867f8eb84913affd02fade01080f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good, and it's suitable for physics simulation in a video game." } }, "5f217216db794c2a9575e11da30bf217": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flat, irregular piece that looks more like a scanned section of rocky ground or terrain rather than a distinct, single rock object (like a boulder, stone, or pebble). It lacks the volume typically associated with rocks used in physics simulations." } }, "5f2b7942fa11452ab248e0b553ba7037": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly slate or a similar type) with good lighting and quality. It is suitable for the 'rocks' class and appropriate for physics simulation." } }, "5f758866e6bd4d46a078408477679480": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock formation or geological formation against a clean background. The quality is good, and it fits the requested class." } }, "5fc842920aca4d3e86627674ef14e702": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a video game." } }, "6088546dc4854643a3b8ba92f5d4f7cc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains three separate objects, while the requirement is to have only one single object per image for clean data collection." } }, "61329dde575c4ef9b16426e2ae5c30b3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock against a clean background. The quality is good, and it represents an object commonly used in physics simulations in video games." } }, "6148e2c4dec04b549e8237989fab20b0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "626c0cf2440f4987bfea9ea64e072f00": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground covered in small rocks/pebbles (rubble), rather than a single distinct rock object (like a boulder or stone). This is more representative of a terrain surface or material than an individual object suitable for the intended physics simulation (e.g., dropping a single rock)." } }, "62ac253d10c441928aa5158b458ad7ef": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is very thin and elongated, and does not clearly resemble a rock, stone, boulder, or any of the specified related terms. Its appearance is ambiguous and could be mistaken for other materials or formations. It is not a good representation of the 'rocks' class for training data." } }, "6315f08c031449108de85707ff2d35ed": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a perfect sphere with a rock texture applied. This is not representative of a natural rock, stone, or boulder, which typically have irregular shapes. While the texture fits, the geometry is unsuitable for learning general rock physics." } }, "64cdb28feb954610aed658364b1112ff": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a type of rock or stone (specifically a flat stone or pebble). The quality is good, and it's suitable for physics simulation in a game environment." } }, "650152baa6dd4d0da784483fb431d6b5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects, whereas the requirement is for images depicting cleanly ONE SINGLE OBJECT." } }, "658ebf60afef49ddbe9b75ca1c4fce64": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically, a rock fragment or stone). The quality is acceptable, and it's suitable for physics simulation purposes in a game." } }, "66832dd71eb24e0491c5226baa8738d7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation or a small rock wall, which falls under the 'rocks' class. The quality is good, and it represents a single cohesive object suitable for use in a game environment and potentially physics simulation (e.g., as a static obstacle or destructible element)." } }, "6a0917d9871e479797e5f3ed1510384f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flat surface or texture representing multiple stones fitted together (like paving or a ground texture), not a single, distinct object like a rock, boulder, or pebble that would be suitable for individual physics simulation." } }, "6a8e8be9cfb940c18ccbfbd1e17606eb": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low due to rendering artifacts, distorted textures, and what appears to be incomplete or broken geometry, especially in the lower section and the side flap. It doesn't clearly depict a well-formed rock." } }, "6bf936d1a014437584c77adc5ffdb4c5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows floor tiles made of stone (possibly slate), not a natural rock, boulder, pebble, or rock formation. While the material is related, the object itself is a man-made construction (tiling) and doesn't represent the intended class of objects for physics simulation." } }, "6c1ee8ad4e5142e3b080d328f6fa0421": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it is suitable for physics simulation purposes in a video game." } }, "6cce919c70ce424baeb39c4a88b84fe4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the rock object placed on a distinct base or surface, along with some small marker-like objects. It does not depict cleanly ONE SINGLE object belonging to the 'rocks' class." } }, "6e2d81d9a8c648e3978e8cf4775f81da": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object with good quality and texture, suitable for the 'rocks' class and physics simulation purposes." } }, "6e7601c510c545e496e8d4fb38c462d4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the rock object placed on a distinct tiled ground surface, which violates the requirement of depicting only the single object cleanly." } }, "6f5f6f5276454a4198132662b67f57a7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a perfect sphere with a rock texture applied to it, not an actual rock, stone, or boulder with a natural shape. This geometric shape is not representative of the object class for physics simulation purposes." } }, "6f70b410d3b14132930fe6c7aa817a97": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The object's texture is extremely smooth and uniform, lacking the typical characteristics of rock or stone (like grain, cracks, roughness). It looks more like polished amber, resin, or a stylized representation rather than a natural rock suitable for learning realistic physics properties." } }, "6f737cbf6bd64a2d98b070c6dec65cf7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that belongs to the 'rocks' class (specifically, it looks like a stone or small boulder). The image quality is good, and it's suitable for use in physics simulations." } }, "70e5b9f0955245c398d37c8218582230": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large rock formation or landscape segment, which is typically treated as static terrain in games rather than a dynamic physics object. It's not suitable for learning the physics of individual, interactable rocks or boulders." } }, "712cbe5352d74a1990f263db6c238e3c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single piece of rock (slate or similar) against a clean background. The quality is good, and it represents an object suitable for physics simulation in a game." } }, "726e8563eb634c529410f4e00857bbb3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stack of rocks (a rock formation/cairn), which belongs to the specified class. The quality is good, and the object is isolated against a clean background. While composed of multiple rocks, it forms a single conceptual object relevant for physics simulation (e.g., stability, collision)." } }, "734e0f691e004fd3bbf204c87f5205aa": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts three separate sections of what appears to be stone paving or wall sections, not individual rocks, boulders, or pebbles as defined by the class. These are likely static environmental assets rather than single dynamic objects suitable for physics simulation." } }, "73ab493efe74416a8e09ac88cbb83850": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock embedded in a patch of ground, including a hole. This is not a clean representation of a single rock object, but rather a small environmental piece." } }, "748be9e15b2d411883b3d176cecb3b97": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made pillar or pedestal structure, not a natural rock, stone, boulder, or geological formation as specified by the class list." } }, "769cb0c7fcb047b79da72485a7d395bc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to discern the object's details and texture clearly. This low quality makes it unsuitable for training." } }, "770c320c04d843b8aeadb33e7dec4c29": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The 3D model appears fragmented and incomplete, with visible holes or missing geometry, suggesting a low-quality asset that might not be suitable for high-quality game development or reliable physics simulation." } }, "7711b2e600fe4658890ba8c1ddc157c3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically, it looks like a stone or perhaps a fossilized shell, which is a type of rock formation). The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "7741407764284794bec24ced52270e93": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good (clear, well-lit), and it's a suitable object for physics simulation in a game." } }, "77c9527f7b1d4d248616b096ca63b8dd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple rocks placed on a distinct patch of ground/rubble, which is part of the 3D model. This violates the requirement for a single, clean object, as it includes the ground base along with the rocks, making it less ideal for learning the physics parameters of individual rocks." } }, "781b996d764b455ab65399b2413309e5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which belongs to the specified class. The quality is good, and it represents a single, distinct object suitable for use in a game environment and physics simulation." } }, "781e3bb90e0f4c1ca81ab9aafab2bf76": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock/stone against a clean background. The quality is good, and it's suitable for physics simulation." } }, "78265e5eeca249f1805f1e00bb931dfc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "7849d9d1d18a4bf39c921c3bce202c2f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fragmented and incomplete object. It doesn't clearly represent a whole rock, boulder, or stone, making it unsuitable for training purposes as it looks more like a rendering artifact or a partial scan rather than a distinct object." } }, "796f0fb16de1495c9fe09077fb82e949": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the target object (a rock), but it also includes a patch of ground/base material and scale bars/rulers, violating the requirement for a clean depiction of a single object." } }, "7a09ea1c56474fb48e5c546f2a1c5eb4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a sticker with a number on the rock, which is an extraneous object not part of the rock itself. We need clean images of the object only." } }, "7aa1a1c3aebd40c982ac2e3cd201e7a8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of small rocks or rubble, which falls under the specified class list ('rubble', 'stone', 'pebble'). While it's multiple objects, a pile like this is a common entity in game environments and relevant for physics simulation (e.g., scattering). The image quality is good." } }, "7ae9bd3e40d145988d6b3fa587e5958d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good lighting and detail. It is suitable for the 'rocks' class and relevant for physics simulation in a video game." } }, "7b1db3670f1a41e388f9bbb77468f5d4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rocks' class (specifically, it looks like a piece of slate or a flat stone). The image quality is good, and it's suitable for use in physics simulations as a rock object." } }, "7b44341e5f18445e9a7d2f814273b308": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized rock formation, which falls under the specified class 'rocks'. The quality is good, and it represents a single object suitable for use in a video game and potentially physics simulation (e.g., collision)." } }, "7b633ad64f5d482aa963953543361a8a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the dataset and physics simulation." } }, "7d070c4e6ea148018286f4e87a80371b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation, which falls under the specified class. The quality is good, and it represents an object suitable for physics simulation in a game environment." } }, "7d374d120b594824b6e39211a9802266": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fragment of a 3D model, likely a piece of terrain or a cliff section, rather than a distinct, single rock object. Large parts of the model are untextured and appear as simple geometric shapes, making it unsuitable as a clean representation of a rock for physics simulation training." } }, "7d93e58500aa45d98b2fbf0dda711693": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone of reasonable quality, suitable for use in physics simulations within a video game." } }, "7dad50f3a29e4d9f93b55b901de4bafe": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made structure (like a planter or pillar) constructed from stones, not a single natural rock, boulder, or geological formation. While made of stone, the object itself is a composite structure, which is not ideal for learning the general physics properties of individual rocks." } }, "7dcf564c7f0b4a6a9b5c590500f9e5b9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically, it looks like a blocky stone or fieldstone). The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "7e662113fa254040a36546719ec80add": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (likely flint or chert) which belongs to the specified classes. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "7e90a03ffde044ee9cf06375ad809a15": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large-scale geological formation (mountain range/terrain) rather than individual rocks, stones, or boulders suitable for typical physics simulation interactions (like dropping or throwing). While 'rock formation' is listed, this asset represents landscape/environment rather than a distinct, interactable object. Additionally, the image quality is somewhat low (blurry)." } }, "7fa93a917d1c487c91add08c34a5fe6f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified classes. The quality is good, and it represents a single, cohesive 3D model suitable for use in a game environment, potentially for physics simulation (e.g., collision)." } }, "7fb30f7dfe3e43e8a723481eaa6b8ae8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a rock, but it is rendered on a significant patch of ground/sand which appears to be part of the same 3D model. We need images of the object itself, isolated, for clean physics simulation data." } }, "7ff644bea1e543b185ad67dcc9565f06": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground covered in many small pebbles and dirt, rather than a single, distinct rock object. This is more suitable as a terrain texture than an individual object for physics simulation." } }, "80ec5a0f7f13418db720fffcd5b2c8dc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a man-made pillar or column, which is a distinct architectural object, not a natural rock, boulder, stone, or rock formation as specified by the class list." } }, "815cbcc123a54199a86bc1328fa65a7c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears fragmented and incomplete, especially around the base. It looks like a low-quality render or a broken object, which is not suitable for learning general physics parameters for a solid rock." } }, "81a547bd0c2f4cdab8974c8759a79c4d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely washed out and too bright, making the object almost invisible and impossible to identify clearly as belonging to the 'rocks' class. The quality is too low for training data." } }, "81cb3c8d116d4361b56a34674e63db4e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very low-poly, abstract shape that does not clearly resemble a rock or any related terms. It lacks the natural texture and form expected for this class, making it unsuitable for training purposes, especially for physics simulation." } }, "838da78852c34bf3bd835b86da2a2309": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low. It lacks texture and detail, and the object blends significantly with the white background, making it difficult to clearly identify as a rock or discern its full shape. It appears to be an untextured or poorly rendered 3D model, not suitable for high-quality training data." } }, "841d3f6a252e4dcd9a6a37aa2a648a60": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of rocks, but it also includes other distinct objects like foliage, a blue tarp/plastic, and another pile of smaller gravel/pebbles with netting. This violates the requirement for depicting cleanly one single object or a cohesive formation belonging to the target class." } }, "856611573ed042ddbb14758d85e712dc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a stone/rock. The quality is acceptable, and it represents an object commonly used in video games and suitable for physics simulation." } }, "876b888a389d4e469299d731a5f3cb84": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation integrated with a significant amount of ground/terrain, rather than a single, distinct rock object. This violates the 'ONE SINGLE OBJECT' rule, as it's more of an environmental piece than an isolated rock." } }, "879e695327e3465d9e649267909202ff": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cut block or core sample of rock layers. While it is technically rock, its artificial, cut shape is atypical for general-purpose rock assets used in game physics simulations, which usually feature naturally shaped rocks, boulders, or pebbles. This object looks more like a scientific specimen or display piece." } }, "87ad4c3e669a47a4becb208f456e5d96": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of acceptable quality against a clean background. It is suitable for physics simulation." } }, "8890cd94da0b43e1aec3eef5b6c3f05e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a rock or stone. The quality is adequate, and it represents an object suitable for physics simulation in a game." } }, "891197ddc3da4306ad88ccf12e02144b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object's shape is highly artificial and symmetrical, resembling a manufactured item or a test specimen rather than a natural rock, stone, boulder, or other geological formation listed in the class description." } }, "891b4eeb816f4b879f90a6777f6167ed": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object belonging to the specified class. The image quality is good (clear, well-lit, not blurry). The object is suitable for physics simulation." } }, "898088e1de204eafa593ac5aafb7bca0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (display trays with many small rocks, a larger rock, and a cloth) rather than depicting cleanly ONE SINGLE rock object." } }, "8aba025d37e7477da73e24f267cd48e5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified class. The quality is good, and it represents a single, cohesive object suitable for use in a game environment and relevant for physics simulation (as a static collider with rock material properties)." } }, "8af28114776f401ebde6b921eeab9f70": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays abstract geometric shapes, not an object that belongs to the 'rocks' class (rock, stone, boulder, etc.)." } }, "8b8d9bfa88d44538a0bbe9f5e8712797": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains three separate spherical objects, not a single rock or stone. While the texture resembles pebbles, the shape is unnatural for the 'rocks' class and it violates the 'ONE SINGLE OBJECT' rule." } }, "8da42a5347504da3a6307f13c73c3801": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, likely granite, with good texture and quality. It is suitable for physics simulation." } }, "8e1daff699ed44e39ba808c8d0325032": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains both a rock and blades of grass, violating the requirement to depict only ONE SINGLE OBJECT." } }, "8ed55e2fb76a4c2a99699429a0fee918": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three rocks), whereas the requirement is for images depicting only a single object." } }, "8ed6cd99834b4c6eb107a47d3ae92415": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a pile of many small pebbles or gravel, not a single distinct rock object. While it contains rocks, it doesn't fit the requirement of representing one single object for physics simulation purposes." } }, "9020af4538d24453b10d973ad91a3c39": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks (rubble), which fits the requested class. The quality is acceptable, and while it's multiple objects, a pile of rocks is a common and useful configuration for physics simulation in games." } }, "90afa9c59c10419ab9aa08a2e6732bc4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good, and it's a suitable object for physics simulation in a game environment." } }, "90b511f3ed624a7096da6a0291c7cbdf": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture, making it difficult to identify the object as a rock or determine its material properties. The contrast between the object and the background is very low." } }, "9123b2be54734f0d8ae50113649dd016": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects (a sphere and a flat piece), not a single object as required. The shapes also appear somewhat artificial for the 'rocks' class, especially the perfect sphere." } }, "916dba30a5b641b088539ba785c1df3f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified class. The image quality is good, and it shows a single object suitable for use as an environmental asset in a game where physics simulation might be relevant (e.g., collision, stability)." } }, "91cc6361837249a8b5e265e220fd002b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation or stack of stones, which fits the requested class. The quality is acceptable, and it represents a single object suitable for physics simulation in a game." } }, "93467d6534cb403ca0c083b396d2dbce": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a rock. It is unusable due to being too bright or potentially corrupted." } }, "935f9b6bc42144d4a1a5df6749ac4a41": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is acceptable for training purposes and the object is suitable for physics simulation." } }, "94112f1c65d34ec79cd59813dea247f8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly slate or obsidian), which belongs to the requested class. The quality is good, and it's suitable for physics simulation training data." } }, "946b521e27184b73b50e70a5c8994028": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a constructed pillar made of stone/brick, not a natural rock, boulder, stone, pebble, or geological formation as defined by the class list." } }, "948de57d4f7c439686d83cc26fb83c79": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains multiple objects (rocks and plants) rather than cleanly depicting a single rock object." } }, "94a4036264384748b21707d65815ccba": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good (clear, well-lit), and it contains only the target object. It is suitable for physics simulation." } }, "94c54803bbc0458c8406ca70baccd3e9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a low-polygon representation of rocks or a rock formation. It is well-lit, not blurry, and shows a single object suitable for the requested class. While low-poly, it is recognizable and could be used in stylized game environments or as a base for physics simulation." } }, "963c2a84130e487ab89157fb647d0a2f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large geological formation which includes not only rocks but also significant vegetation (trees) and a building. This violates the requirement for depicting cleanly ONE SINGLE OBJECT. Furthermore, such large formations are typically static environment elements in games, not objects subjected to dynamic physics simulations like dropping or swaying." } }, "96669da4fe0f4ca7a6ea649af4f0f2ac": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large geological formation (a cliff/hillside) with significant vegetation (trees, bushes). While it falls under 'rock formation', it's more like a piece of terrain than a single discrete object suitable for dynamic physics simulation (like dropping a rock). It also contains multiple elements (rock, soil, vegetation), not just a clean representation of a rock object." } }, "9716e7726ce04bdc83dfd4990842e663": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows paving stones or bricks arranged into a path section and individual pieces, not natural rocks, boulders, or pebbles as defined by the class. It represents processed construction materials rather than natural geological formations." } }, "972cca32466c4871ac57edd9037e5372": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene or terrain section with multiple pebbles/stones forming a ground cover and a wall structure, not a single, distinct rock object suitable for individual physics simulation as requested." } }, "9853a5ee75074ea8b7a7d18e6228ea52": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large terrain segment or landscape piece, not a single, discrete rock object like a boulder or stone. This scale of object is generally not treated as a single entity for dynamic physics simulations (like dropping or material deformation) in game development." } }, "986a18899dcf4122a7aa0d202fd20914": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation, which belongs to the specified class. The quality is good, and such formations are common in game environments where physics simulation might be applied (e.g., collision, destruction)." } }, "9886c9a09e3440818532f93b21c50344": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good lighting and resolution. It is suitable for the 'rocks' class and appropriate for physics simulation training." } }, "98cfb014188245a984d174c294a494b7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "997f9775ee1d475abf22a51aed61c1b2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "9bbaace22d4b491784cce5e641301351": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (specifically resembling granite) against a clean background. The quality is good, and it's suitable for physics simulation purposes." } }, "9c42ca8140994bfca5029cf61b431214": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object of good quality, suitable for the specified class and physics simulation purposes." } }, "9e1db6e63e2a4f9abea841c18334ff09": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flat terrain surface or texture, not a distinct, single rock object (like a boulder, pebble, or stone). It's unsuitable for training physics parameters for individual rock objects." } }, "9e3435fd17f3454e929395a7eba14f54": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single stone/rock against a clean background. The quality is good, and it's a suitable object for physics simulation." } }, "9eeb255ab3e041678ff66f52fb51128d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (the rock, the base it's sitting on, a coin, and paper) instead of just the single rock object." } }, "9f149f722412421eb07fabd66b9a521a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a significant patch of grass attached to the base of the rock, violating the requirement to depict only ONE SINGLE OBJECT cleanly. While rocks are often found on grass, for physics simulation data, we need the isolated object." } }, "9f63c64b2c27411d98ea442b78546451": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects arranged in a grid, not a single object or a natural formation. We require images depicting cleanly ONE SINGLE OBJECT." } }, "9fa361cea69d4c3681e3a518661c5712": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image includes a significant portion of the surrounding ground (dirt, roots, debris) integrated with the rock, making it not an image of a single, clean object as requested for physics simulation training." } }, "9fa7eca826b34a87aefaa121d8356109": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The object depicted does not resemble any type of rock, stone, boulder, or natural rock formation. It looks more like a stylized vase, goblet, or pedestal." } }, "a0ae20ffa1fe4baca80d8f9eec673a08": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified class terms. The image quality is good, and the object is suitable for use as an environmental prop in a video game and potentially for physics simulation (e.g., as a static collider or destructible object)." } }, "a19877953c284d5690f8a17ca9cd9ccf": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a man-made object (bollard or pillar), not a natural rock, stone, or geological formation as specified by the class description." } }, "a2121e984fc143849389daed9cd3b68b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a shard or fragment of rock (like slate or part of a larger formation). The quality is good, and it fits within the requested class 'rocks', especially considering terms like 'rubble' and 'rock formation'. It's suitable for physics simulation as a piece of debris or a small environmental element." } }, "a297586cb2e14f46922085b5a6058a69": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "a29f3c59028a49d5bad6c3d00ee65370": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object identifiable as a piece of rock or stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "a3c40d02b0c54cd5adc6788af69c2c10": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation, which falls under the specified class. The quality is good, and it's suitable for use in a game environment where its physical properties (like collision) would be relevant." } }, "a3cad7e414d0491b890153f316fd7c0a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock with good lighting and clarity. It fits the requested class and is suitable for physics simulation." } }, "a3db6dd1c31b4c63a8ce372d470bdf5d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects, not a single object as required." } }, "a4064bb86a5d468b9293656ceefeea31": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains significant rendering artifacts or texture stretching at the bottom, making it low quality for training." } }, "a470d6acb10547c39d7c59663ee6fc17": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two rocks and a patch of ground) rather than a single, isolated rock object, which is preferred for learning individual object physics." } }, "a478022f6bd04c65ae5d1761a28f8336": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock or stone fragment, which belongs to the specified class. The quality is acceptable, and the object is isolated against a clean background (ignoring the small artifacts which are separate from the main object). It represents a type of rock suitable for physics simulation in a game." } }, "a47f75feda314a418e5228a1a4df35be": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of rocks/boulders, which falls under the 'rock formation' category within the specified class. The quality is adequate, and it represents a common object used in game environments and physics simulations." } }, "a4f45addb72548dd9eded3f6e4a42661": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "a5f2261e60b44cdc840a558052f9fd66": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "a680f332c42543f68d679fa593082a53": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be interpreted as a stylized rock or stone, suitable for a game asset. The quality is good, and it fits the class definition, allowing for diverse textures." } }, "a80b36a2f84749ba99f45de4f8220309": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is adequate, and it's suitable for physics simulation purposes." } }, "a8109c02067d46409ef4f2c6abc130e9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The object's shape is too regular and artificial, resembling a man-made pillar or bollard rather than a natural rock, stone, or boulder, making it less suitable for the general 'rocks' class." } }, "a854931cd87f443ab24c0f9cfbf01dd8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (likely granite) with good texture and lighting. It is suitable for the 'rocks' class and appropriate for physics simulation training." } }, "a8aa352a1c8342a6bd3d8fd0d7e34581": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a rock." } }, "a9f41ef93a0642fba3f972851bd80368": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a structure made of stone blocks, which falls under the 'stone' or 'rock formation' category. The quality is good, and it represents a single object suitable for physics simulation." } }, "aa01956c0060427a98d010ca6b595e58": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation of acceptable quality, suitable for the specified class and potential use in physics simulations." } }, "ab69b6eb968244ad8d16a6f04c6bdbd9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a sticker with numbers on the rock, which is an extraneous element not suitable for training data representing natural rocks." } }, "ab7c523c027640fca2df756915384e0f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fragment of a larger rock formation or landscape scan, rather than a clearly defined single object like a rock, boulder, or stone. It looks like an incomplete piece of terrain, making it less suitable for representing a distinct object for physics simulation." } }, "ac4a7e9ac5804bcba7d43945aec18d6c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone formation. The quality is good, and it is suitable for physics simulation." } }, "ada7f063d34548338ed477c825054685": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object identifiable as a rock or stone, fitting the specified class. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "adbc195285d7469e9d51bd088003659c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "ae1fd1caa7654592a4a9cfff9decc957": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation integrated with a patch of ground covered in many smaller pebbles and sand, rather than a single, isolated rock object. This violates the 'ONE SINGLE OBJECT' requirement." } }, "ae89a3a1755844cab669229ef6e5e442": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object. It appears to be either blank or extremely overexposed." } }, "aea4db45fb944e799f19c6428e014637": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects, not a single object as required by the instructions." } }, "af242934b2324ff6afd77eb2660940ca": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is ambiguous. While parts of it might resemble rock (especially the ends), the central section looks more like wood or a branch. It does not clearly depict an object solely belonging to the 'rocks' class." } }, "af4de0c78f15414195c3754cb5957800": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the rock object along with a significant patch of ground/terrain attached to it, violating the requirement to depict only a single object from the specified class." } }, "b03c15db5f004893ae91cf203b1ed778": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of rocks (rock formation), which belongs to the specified class. Although there are small tufts of grass, they are minor additions and the primary object is clearly identifiable as rocks. The image quality is good, and rocks are suitable objects for physics simulation in games." } }, "b1ea917a0cab4fc9abf56aea51bd569e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good quality and lighting. It is suitable for use in physics simulations." } }, "b278690b3e824f368ed0c22991c9a471": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone object against a clean background. The quality is good, and it's suitable for the 'rocks' class and physics simulation purposes." } }, "b36fc9f64e6e4e4f879c51f251c939c0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, featuring numerous visual artifacts (pink lines/wireframes) that obscure the object. The color and texture are highly unrealistic for any type of rock, making it difficult to identify the object class clearly and unsuitable for physics simulation training." } }, "b3b5c9781b59481fb96946583449ce87": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes." } }, "b3e40cfb2095482b87dfce4a18e02017": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image has a rendering artifact or texture issue on the lower part of the rock, appearing as a semi-transparent overlay or incorrect texture application. This compromises the quality and clean depiction needed for training data." } }, "b417a759eb26437fab1d64e72bf5a766": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object of acceptable quality, suitable for the specified class and physics simulation." } }, "b41836aa047048ad80035ecb5f8a8ef6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a collection of rocks/pebbles forming a single chunk or piece of rubble/ground. The quality is good, and it represents a type of object commonly found in game environments that would require physics simulation (e.g., collision, gravity)." } }, "b45a40fd145c4b9ba7bc5351d344db17": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects, whereas the requirement is for images depicting only a single object." } }, "b570650c1c274444853aba290ada0fc6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone of appropriate quality and isolation, suitable for physics simulation training." } }, "b571ade4a4ca4a15b578029745d3cd64": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a rock or stone. The quality is good, and it is suitable for physics simulation purposes in a video game." } }, "b5a88f1c92f54d389ba67a132cb34c47": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image includes the rock object but also a significant portion of the ground (grass/dirt) it is sitting on, which is part of the 3D model. We need images of the object isolated for physics simulation training." } }, "b63391e583d04a2aadb218db3e1e8687": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a block representing stone, which falls under the 'rocks' class. Although stylized and pixelated (like from Minecraft), it represents a single object suitable for physics simulation within games using a similar art style." } }, "b6d703647beb45b58a54dd4bb3999453": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a rock formation, grass, and a bird) rather than cleanly depicting a single object from the 'rocks' class." } }, "b6d97cfec8464046ac9c64f726f44b41": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a piece of rock or stone. The quality is adequate, and it represents an object suitable for physics simulation in a game environment (e.g., rubble, debris)." } }, "b740cfea80f24b38920039d72ea13b9d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks (rubble), which belongs to the specified class. The image quality is good, and a pile of rocks is a common object type used in game environments and physics simulations." } }, "b74b4a44837644a3bba5d02fa3ca59c3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image displays multiple separate rock objects, not a single object as required." } }, "b7ccc1907d2f468a87c0fc7868b4330f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single rock/stone against a clean background. The quality is acceptable, and it represents an object suitable for physics simulation in a game environment." } }, "b8a31a762f544d04ae2dd3514ef0fe54": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat plane textured with pebbles/rubble, representing a ground surface or material texture rather than a single, distinct rock, boulder, or stone object. We need images of individual objects for physics simulation training, not surface textures." } }, "b8d7ea9d15bc4ef287904de12f1d4466": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a rock or related item." } }, "b98a595b53834521925101f6d01d4086": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object with good quality and lighting. It is suitable for physics simulation training." } }, "bad36a83f09047538bae66c1b8115538": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically looks like slate or a flat stone). The quality is good, and it's suitable for physics simulation." } }, "bb5c2170a9b7423abfb8f3f162c8c8de": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a hammer resting on the rock, violating the rule of depicting only ONE SINGLE OBJECT belonging to the target class." } }, "bbc4cba22a32429e99d7e539b21b928f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple blocky, geometric objects that resemble man-made construction debris or cut stone rather than natural rocks or stones. It does not clearly depict a single object representative of the 'rocks' class in a natural form." } }, "bc19ae33bed8429bb386f5d47912d31b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality against a clean background, suitable for the requested class and physics simulation purposes." } }, "bc2dab45170346719a87effce5f8d232": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, especially around the base and background, making it difficult to clearly discern the details of the object. This compromises the image quality needed for training data." } }, "bca05a88c6d243bfab9494468045156b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a main rock object, but it is presented on a base composed of many smaller rocks and pebbles, violating the requirement for depicting cleanly ONE SINGLE OBJECT." } }, "bcc398878b2b4808a77691f8915b0b1a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock against a neutral background. The quality is good, and it's suitable for representing a rock/stone in a physics simulation." } }, "bd20d8072df34b37a88c7447ca2ddbc3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of terrain with grass and two rocks embedded in it, not a single, isolated rock object. We need images of individual rocks for physics simulation training." } }, "bd6b1dbc179448479ae2c4c27879f219": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good (clear, well-lit), and it represents an object suitable for physics simulation in a game environment." } }, "bd72e7eeeba5469989d0d1ce49f18c2d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made structure (a section of a pillar or wall) constructed from stones, rather than a single, natural rock, boulder, or stone formation. While composed of rock material, it doesn't fit the typical definition of the requested class items for individual object physics simulation." } }, "bd7ae3c82a294b67b95510bc78b9cbc0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is adequate, and it's a suitable object for physics simulation in a video game." } }, "bdeb4bf143a94fc783001673573916a2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very simple geometric shape that does not resemble any object from the 'rocks' class (rock, stone, boulder, etc.). It lacks natural texture and form." } }, "be1693f490754ecfafd39b03be0854b0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a structure made of rocks/stones, which falls under the 'rock formation' or 'rubble' aspect of the class definition. While it's not a single natural rock, it is a single, distinct asset composed primarily of rock material, suitable for representing ruins or environmental elements in a game. The image quality is adequate." } }, "be2707a6e2f745ff9fd5d336e8295854": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene, possibly an archaeological site or landscape feature, containing earth, grass, and some rock structures integrated into the terrain. It does not show a single, distinct rock, stone, or boulder as required for the dataset. This is more of a terrain piece than an individual object suitable for physics simulation." } }, "be48ce63441244789d48bddb9d21a6b4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object belonging to the 'rocks' class (specifically, a stone or piece of rock). The quality is good, and it's suitable for use in physics simulations." } }, "be6f60278434439b84e4453b8522a1df": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "bf3dbbd47dac4fb68feb899abcbf2dac": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden object (possibly a crate or part of a mechanism), not an object belonging to the 'rocks' class." } }, "bf74935f5934465c97b4d4014fa39e30": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone. The quality is acceptable, and it's suitable for use in physics simulations." } }, "bfed36b638984a978fe1c833030f89f6": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone with good lighting and texture detail, suitable for the specified class and physics simulation purposes." } }, "c01527384d4e4037a71cd257931f2711": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of pebbles/small stones, which falls under the 'rocks' category (specifically 'pebble', 'rubble', 'stone'). The image quality is good, and while it's multiple objects, a pile like this can be treated as a single entity for physics simulation purposes (e.g., simulating granular material)." } }, "c029549f93a84426921be507cee9d6d1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct rock objects, violating the requirement to depict only ONE SINGLE OBJECT per image." } }, "c05511b5db234ec79e35d29b7eb370d0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the 'rock' or 'stone' description within the specified class. The quality is good, and it's isolated against a neutral background, making it suitable for the dataset." } }, "c0a550e692ac441faac5f0142f5133f1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation, which belongs to the specified class. The quality is good, and it is suitable for use in physics simulations as a static or potentially destructible environmental object." } }, "c117f1923cad4ecf9df61b6e3d633374": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks (rubble), which falls under the specified classes. The image quality is good, and this type of object is suitable for physics simulation in a game environment (e.g., scattering, collision)." } }, "c1a5080b4b904d8abb7b25e51a7655f3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the requested class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "c1dc407c7db74103b93f6348996fd5f1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The 3D model render appears fragmented and incomplete, with jagged edges and missing parts. This indicates a low-quality asset not suitable for training." } }, "c29fbdd8a8f341c4a395c6eae746d438": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock-like object shaped like a skull or fossil, not a generic rock, stone, or boulder. This specific shape makes it less representative of the general 'rocks' class." } }, "c2c36e6434214e12ba7833c55e8599fa": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock, but it has additional, non-rock elements (glowing crystals) attached to it. This violates the requirement for the image to cleanly depict ONE SINGLE OBJECT belonging to the specified class (rocks)." } }, "c2fe1ed9da13430389424af3541d4afd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a section of terrain or landscape, not a single, discrete rock, stone, or boulder. While it contains rocky elements, it represents a piece of ground rather than an individual object suitable for typical physics simulations like dropping or rolling." } }, "c314145427674c9dbd53018e1381dfbd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of ground with various elements (soil, moss, small rocks, potentially wood/pipe) rather than a single, distinct rock, boulder, or rock formation. It looks more like a terrain scan, which is not suitable for learning the physics of a single object from the 'rocks' class." } }, "c389f766b289442ab787dd97c02b6e20": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fragment of terrain or landscape, not a distinct rock, stone, boulder, or rock formation as required by the class definition." } }, "c42924a36a904ba69769b38f903fbe3e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely washed out and too bright, making it impossible to clearly identify the object or its details. It does not provide useful visual information for the 'rocks' class." } }, "c4ca60d37cd448ee8c1206f4ad31bece": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rock' or 'stone' class. The quality is good, and it's suitable for physics simulation purposes." } }, "c58949d0e11c482f9e2fe4f07f88667c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground covered in small pebbles/rubble, rather than a single, distinct rock, boulder, or stone object suitable for individual physics simulation. It also contains an ambiguous, potentially man-made object. The overall quality is also somewhat washed out." } }, "c67ef906331c438384f96c85a397c065": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a section of pavement made of stones, not a single rock, boulder, or natural rock formation. This is not suitable for simulating the physics of an individual rock object." } }, "c68d700c74f24e69ae4a73b8146f7fd8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good quality and texture, suitable for physics simulation." } }, "c7081adaf7f1436ab22d9f71f9912981": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made pillar or column constructed from stone blocks, not a natural rock, boulder, pebble, or geological formation as specified by the class list." } }, "c775885695c44936ad00ca6ac54f4cc0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an architectural pillar, which is a man-made structure, not a natural rock, stone, boulder, or geological formation as defined by the class list." } }, "c7bc16708bf94eb98d56fe90ae9ac0e7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized pillar or column, which is a man-made structure, not a natural rock, boulder, stone, or geological formation as specified in the class list." } }, "c7d3a3a246fe456bbd228cdd4a490465": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large terrain piece or landscape section, not a single, distinct rock, boulder, or similar object suitable for individual physics simulation as requested. It represents static environment geometry rather than a dynamic object." } }, "c7e7d88fbb564489a01d3b5e0053c776": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/boulder, which belongs to the specified class. The quality is adequate for training purposes, and it represents an object commonly used in physics simulations." } }, "c7e9384d01e544c0ae11d06938bb3a4c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made pillar or pedestal, which is a structure made of stone, not a natural rock, boulder, or stone as defined by the class list. It does not fit the category of natural geological formations or simple rocks." } }, "c8b6d80ece6f46e6b763939d4f3f8f0b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a polished stone or pebble. Although it's egg-shaped and smooth, it falls under the 'stone' category and is suitable for physics simulation (e.g., rolling, dropping). The image quality is good." } }, "c8d3ffe1917a471aaa8cdc3f7888d6a0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks/rubble, which falls under the specified class. The image quality is good, and this type of object is suitable for physics simulation in a game environment." } }, "c92daf65f88c437aa8094f8163340a8f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a section of stone pavement or flooring, which is a structure made of multiple stones, rather than a single discrete object like a rock, boulder, or pebble. While it contains stones, it doesn't represent a single object suitable for learning the physics of an individual rock." } }, "c992f1f7638f4fb49f5a5ee40f956f1b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains stickers/labels attached to the rock, which are extraneous objects and not part of the natural rock itself. We need clean representations of the objects." } }, "cb2b61bcba2e4c33bf707a51576987c9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a game." } }, "cd56279e12d242f9a962bcd603a02a26": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a rock or stone. Although the texture is very basic and dark, the shape is recognizable and suitable for the class. It is appropriate for physics simulation." } }, "cd83730bd4944fbf918d7f712ed026eb": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, washing out details, especially on the white objects. Additionally, it depicts multiple stylized objects (potentially crystals rather than typical rocks) on a base platform, not a single clean object from the 'rocks' class." } }, "cd97675c2c7e47a0826622a68750d85e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "cdd642c6d7f94733a1a2be728c6cebdb": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly slate or a similar type) against a clean background. The quality is good, and it is suitable for physics simulation purposes." } }, "ce0e8eec24e64d6e9f39b227db40f750": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts very low-polygon shapes lacking any texture or detail, making it difficult to definitively identify as rocks and representing a low-quality asset unsuitable for training." } }, "ce108b4403a348679ecc5661740569c2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the dataset and physics simulation." } }, "ce32116968e54f1d8c5adb1acac8035a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The image quality is good (clear, well-lit) and it represents an object commonly used in physics simulations within video games." } }, "cea1b61f14e34588b33196de72af8983": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation, which falls under the specified class. The quality is good, and it represents a single, cohesive object suitable for use in a game environment and physics simulation." } }, "cf4828d135704058b69e9727f7f4c967": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "cf9544d1da0c40729a6583d02260b376": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically a rock or stone, possibly containing a fossil). The image quality is good, and it is suitable for use in physics simulation training." } }, "d0176b4c899d449cb8f91ed52f356b1c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white space and does not clearly depict any object, making it impossible to identify if it belongs to the 'rocks' class or assess its quality." } }, "d020c6228d6f4c44b6b46478b82f9bb7": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains multiple distinct rock objects, not a single object as specified in the instructions." } }, "d07e551992d34f98a74242c6c8fd66b3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "d08dc73787974841ad8ab3e7b2ad3c0b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple very small, low-detail objects that are not clearly identifiable as rocks or any related class. The image quality is poor due to the lack of detail and small size of the objects, and it violates the single object requirement." } }, "d0b960ffa78d429cb9fdb13412406126": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts rocks/a rock formation, which belongs to the specified class. The quality is acceptable and it represents an object suitable for physics simulation in a video game." } }, "d0c5a297eff04e35b3c49ca6b4b0a740": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that belongs to the 'rocks' class (specifically, a stone or rock, possibly with snow/ice). The quality is good, and it's suitable for physics simulation." } }, "d0dbfb23e9e748429b181eb19ead5e85": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of rocks, which falls under the specified classes. The quality is good, and it represents a single cohesive object suitable for use in a video game environment and physics simulation." } }, "d152f2ea2940414e9aafb0e9d65e784a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object made of stone, resembling a stylized pillar or block. While not a natural rock, it falls under the 'stone' or 'rock formation' category in a broader sense suitable for game assets. The quality is adequate, and it represents an object commonly used in physics simulations within games." } }, "d1f5788227684084a6a591486cd4e005": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks (rubble), which falls under the specified class terms. The image quality is good, and a pile of rocks is a suitable object for physics simulation in a game environment, either as a static prop or potentially destructible." } }, "d2bdda6a4b9c4a70a02c3412ed5cb6ba": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (granite) with good quality and is suitable for physics simulation." } }, "d2f4782380a34c3fb01544cadb5f391e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a carved stone monument or stele, which is a man-made object. While made of stone, it does not represent the natural forms like 'rock', 'boulder', 'pebble', or 'rock formation' typically associated with the class." } }, "d5190b2aa7ec4cbf8d13df86f82a7e99": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object looks more like a crystal formation or mineral cluster rather than a typical rock, stone, or boulder. The shapes and colors are highly stylized and not representative of the general 'rocks' class for physics simulation purposes." } }, "d5603cfcc8d0427a912520077dbda3b4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rubble/broken rocks (slate), which falls under the 'rocks' category. The image quality is good, and the object is isolated. A pile of rocks is a suitable object for physics simulation in a game environment." } }, "d575c4abbbfb4f07883a3f91031bd298": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation with moss, which falls under the specified classes. The quality is good, and it represents a common type of object found in video game environments suitable for physics simulation (e.g., as a static obstacle or potentially movable object)." } }, "d5dab993eafe48cd8e83535d35eebc88": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a large rock, but it has a base of smaller pebbles and dirt attached, which means it does not depict cleanly one single object." } }, "d742b51375904ac1b48a0e4b8265e86f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, futuristic pillar or pedestal, not a natural rock, stone, boulder, or any other item listed in the 'rocks' class definition." } }, "d76e83f2446e4a07a0a620f2ee0d821b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a large stone/rock formation, which belongs to the specified class. The quality is acceptable. While it includes a small patch of ground at the base, this is integral to how such a large stone would naturally sit and does not detract significantly from the main object. It represents a common type of object used in game environments and suitable for physics simulation." } }, "d81ccf4255d949cfbdc14695d2dfa990": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains the target object (a rock), but it also includes a distinct ground patch underneath it and a small white object (possibly debris or a label) on the patch. This violates the requirement to depict cleanly ONE SINGLE OBJECT." } }, "d82c30f897914892a645c8bdd6e68b8e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a man-made stone pedestal, not a natural rock, boulder, or geological formation as described in the class list. While made of stone, it's a specific architectural object rather than a general representation of the 'rocks' class for environmental assets." } }, "d8da0015419140a58662a7b3b750145f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted in the image appears to be a piece of wood (like driftwood or a root), not a rock or stone. It does not belong to the specified class." } }, "d8ff1bbe54d9405bb70d9da6c4940187": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone against a clean background. The quality is good, and it fits the 'rocks' class. It represents an object suitable for physics simulation." } }, "d93706647a3c472798b20d7c11292844": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that is recognizable as a rock or mineral, fitting the 'rocks' class. The quality is good, and it's suitable for physics simulation." } }, "d94e028aa26b46e7a07dc3074bfe153c": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits within the 'rocks' class (specifically resembling coal or obsidian). The quality is good, and it's suitable for use in physics simulations within a game." } }, "d9a7f67b0da142649d8f8e1d66d30a7f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of pebbles/small stones, which falls under the 'rocks' class (specifically 'pebble' or 'rubble'). The image quality is adequate, and it represents an object configuration relevant for physics simulation in games." } }, "daa45aac70ef48f3ab679abb9ad35840": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it represents an object suitable for physics simulation in a game." } }, "dab8b7b2c7d44eff903a95cc6537b502": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains significant vegetation growing on the rock formation, violating the requirement to depict only a single object class (rocks)." } }, "db693c07512d4d2d8b6bc944b23b1591": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple distinct rocks/pebbles, not a single object as requested by the guidelines." } }, "dcb0a3dfd3164694ab34565253965a23": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains additional elements besides the rock, specifically a base platform and small markers/supports, which are not part of the rock object itself. We need clean images of single objects." } }, "dd34f06465d9432ca2876a74253263d1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of rocks/rubble, which falls under the 'rocks' category (specifically 'rubble', 'pebble', 'stone'). The image quality is good, and it represents a single cohesive object suitable for a game environment and physics simulation (e.g., as a static collider or destructible object)." } }, "ddbfa7aa632b4186a1cd2a04845fbba5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several rocks and a patch of ground), not a single, isolated rock object as required for training." } }, "decefdf38ccd473e8005c21d71973ae2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains the target object (rock) but also includes a wooden block underneath it, which is an extraneous object not belonging to the 'rocks' class. We need images depicting only the target object." } }, "defc2a19f3b54507b1579dfd5b966b58": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it very difficult to clearly identify the object or its details. It does not clearly depict a rock or related object." } }, "df6174edd31a439f874d1fc54a3adf77": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple rocks displayed on shelves, along with parts of the surrounding structure (shelves, wall, floor). We need images depicting only a single rock object." } }, "dfb6533fbe6e4df8ada0c2312a07be01": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rock formation or pile of rubble, which falls under the specified class terms. The quality is acceptable, and it represents a single cohesive object suitable for use in a game environment and potentially physics simulation as a static or partially destructible object." } }, "e11180c2d4624333862b2314f00b0101": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "e133f6d43eea43ed8fe8951118622c70": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (possibly flint or chert) with good quality and lighting. It fits the requested class and is suitable for physics simulation." } }, "e1d8c2eac6774e818d7609637feab615": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (a rock/stone, possibly slate) belonging to the specified class. The quality is good, and it's suitable for physics simulation in a game environment." } }, "e287a5dadfaa4af7ae5c8deb64360d93": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object (possibly slate or a flat piece of rock) against a clean background. The quality is good, and it fits within the 'rocks' class. It could be used in a physics simulation." } }, "e2a0314f8b8b4bfca59010d98984860b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains additional, unrelated objects (three grey squares) besides the main rock object." } }, "e2f3025bc1a54d2391e156dbd65c5bd1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "e3ff46eac4d247d287f36a3115f52bed": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows very low-polygon, untextured shapes that lack the detail and realism expected for rocks or stones in a game asset. They look more like placeholder geometry than actual rocks." } }, "e42e9b723b3f4c74bc4bd5810d772a4e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "e489759082084c8d8dd1be32ac60edc4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor (appears washed out/overexposed) and the object's texture and pure white color do not clearly resemble any type of rock or stone. It looks more like styrofoam or plaster." } }, "e820660d824045d28befc8d03bbbbabd": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the specified class and physics simulation purposes." } }, "e852e1f3b508441aa9aeac0031c59d2b": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it's suitable for physics simulation training data." } }, "e8b06f63b882483bbc20a6e56f181fee": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The object is very low-poly and lacks any realistic rock texture. It appears overly smooth, almost like plastic or untextured metal, and has a distinct horizontal line artifact across the middle, making it low quality and not representative of a rock for physics simulation training." } }, "e935a568f9af46ddafbfe31ed1c360bf": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object resembling petrified wood, which falls under the category of rock/stone/geological formation. The image quality is good and it is suitable for physics simulation as a rock-like object." } }, "ea11069c86ce410d8c8e7423d87344de": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex rock formation or a piece of terrain/environment, not a single, distinct rock object suitable for individual physics simulation as requested." } }, "ea23d674b9ab4dab9b46ba7af34b3563": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (three rocks), while the requirement is for images depicting cleanly ONE SINGLE OBJECT." } }, "eaa11fada6db408d9fc50da5d498ae26": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple rocks integrated with a patch of ground (grass and leaves), not a single, isolated rock object. This makes it unsuitable for learning the physics parameters of an individual rock." } }, "eac8c3841acf4fe5959d5977639cd6ed": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone object against a clean background. The quality is good, and it fits the requested class. While there is some writing on the rock, it doesn't significantly detract from its identification as a rock and its suitability for physics simulation." } }, "eb5e8153c59c4b659fbf231450918e1e": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "eb83d3a9c8ce4b04a7237a05735c3de3": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the 'rocks' class and physics simulation." } }, "ecccc01a892340bdbf1c9fb629aa8d6f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a rock formation or a piece of rock. The quality is good, and it fits within the specified class definitions. It could represent a unique geological formation, adding diversity to the dataset, and is suitable for physics simulation." } }, "ecef3acb23d748f69bb7f9ce19064d12": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and does not clearly depict any object, let alone one belonging to the 'rocks' class. It is unusable for training." } }, "ecfc671832d34bd9a315643b7c3fcd25": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, the objects depicted are very small, blurry, and lack detail, making them unsuitable for high-quality training data. It doesn't clearly depict a single object or a well-defined group." } }, "ed9c5bac7f234222971ced832c478cfc": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rock, but it is placed on top of another object (a textured surface resembling a map or ground patch), violating the requirement for a single, clean object depiction." } }, "eda7cdacdb0849b398569bdaf3a8cf07": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single stone/pebble, which belongs to the 'rocks' class. The image quality is good, and the object is suitable for physics simulation." } }, "eea799245f0a45aba7b69bf7488a8372": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes in a video game." } }, "eecff4b887d244809c3a2e69a0f65ad4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains artifacts from the 3d model rendering process, specifically a ruler-like object and some ground/base elements attached to the rock, which are not part of the rock itself. We need clean images of only the object." } }, "efd657fb409b4649bdf7adfdebb9ea8a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains extraneous objects (stickers/labels) attached to the rock, which are not part of the object itself." } }, "efecc83b6845421ba172df253de731ed": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone with good lighting and clarity. It is suitable for physics simulation training." } }, "f003c25ec482479b9a305d25ac655c07": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fragment or a surface scan of a rock formation rather than a distinct, standalone rock object. It appears incomplete and too thin, making it unsuitable for representing a typical rock object in a physics simulation." } }, "f0bbc6a1d1ed4d05a20ecb28b4a5bbf1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a texture applied to a cube, not a distinct object like a rock, boulder, or stone. It represents a surface material rather than a single object suitable for physics simulation." } }, "f16422ecd1864b3daa3228eab5de4d9f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object from the 'rocks' class. It appears to be a fragment of an unrelated 3D model, possibly architectural, and is not recognizable as a rock, stone, or geological formation." } }, "f1776a04f9fc4ed8b65335e126b44b9a": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a staircase or ramp structure, not an object belonging to the 'rocks' class (rock, stone, boulder, etc.)." } }, "f1a218ca7a044309975c24932c3be81f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation." } }, "f1bde4f6a8784280948700c00adfdc20": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of good quality, suitable for the requested class and physics simulation purposes." } }, "f1cfbe1e98cd4584882d8b1e534ae6d0": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock or stone. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "f222406dcfd14df6857fa5769c4b4f06": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a structure made of rocks (fieldstone/rubble), which fits within the requested class 'rocks' and its related terms like 'rock formation' or 'rubble'. The quality is good, and while it's composed of multiple stones and includes some grass at the base, it represents a single cohesive object relevant for game environments and physics simulation (material properties, collision)." } }, "f234923b17d244c4a85c4deaa67fc9d5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of terrain with multiple rocks embedded in it, rather than a single rock object. Additionally, some of the rocks have stylized cartoon eyes, making them unsuitable for learning realistic physics parameters." } }, "f387432baf8c4e5b8e713a94b1c12d33": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'rocks' class (specifically, it looks like a mineral or a type of layered stone). The image quality is good, and it is suitable for use in physics simulations." } }, "f3b8914d4e4145d6aee509d91d4659c1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock object against a clean background. The quality is good, and it is suitable for use in physics simulations." } }, "f44e739e19094236abec653e8fa70a8d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a man-made object (possibly a stool, table, or planter) covered in stone tiles, not a natural rock, boulder, stone, or geological formation itself. It represents a composite object rather than a single object from the 'rocks' class list." } }, "f5000f45f7f14140b3258a7b6c2e1d49": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a rock/stone. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "f5d6a8aa1a164348aba8110261427a70": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock or rock formation with good texture and lighting. It is suitable for the 'rocks' class and appropriate for physics simulation training." } }, "f607a0790d394d4b8f7962e5e5b2f3f2": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a sphere with a tile texture applied to it. While the tiles might be made of stone, the object itself is not a rock, boulder, pebble, or natural stone formation. It represents a material texture rather than an object belonging to the 'rocks' class." } }, "f63da49ec506459fb3da095dcf4f3e45": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a man-made structure (pillar/marker on a base) made of stone or concrete, not a natural rock, boulder, pebble, or geological formation as requested by the class description." } }, "f664b6d999094a179da3a94eb0b6507d": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock of acceptable quality, suitable for physics simulation." } }, "f7e4461d94b14abd9cd4aa94ceee47b4": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains significant non-rock elements (plants/cattails) alongside the rocks, violating the requirement to depict only a single object from the specified class." } }, "f8e9ac11cd244db6845d4fb8e0cc48d8": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "fa015203576b44dd9743d24d6c34b5e1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of terrain or a diorama containing multiple rocks, dirt, and small vegetation elements, not a single, distinct rock object as requested. It represents a collection or a ground surface rather than an individual item suitable for learning the physics of a single rock." } }, "fa2d189ffe174cc9b76ed4651a1ad426": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains labels/stickers attached to the rock and some scale markers next to it, which are not part of the natural object. We need clean images of the object itself." } }, "fa6e7102ab1f4d32b619ea1357548625": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock formation (possibly slate or a similar layered rock) against a clean background. The quality is good, and the object is suitable for representing rocks or geological formations in a game environment and could be used in physics simulations." } }, "fbb61efa400e435ca70ea9688b56d848": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple rocks arranged into a formation. While not a single rock, 'rock formation' is listed as an acceptable class, and this structure is suitable for physics simulation (e.g., stability, being knocked over). The image quality is good." } }, "fd1b21398b20498ebb460d55f613caed": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good lighting and detail, suitable for the requested class and physics simulation purposes." } }, "fd3f20982b244a138700f65c83f2e0e5": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock with good lighting and texture detail. It fits the 'rocks' class and is suitable for physics simulation." } }, "fdb21f6a67464dc88e7707ddad21e5b1": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (a large boulder, two stacks of smaller stones/cairns, scattered pebbles, and a sandy base) rather than depicting a single, clean rock object." } }, "fe36b8f958cb4d89810784b339054c3f": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock (likely volcanic/pumice) against a clean background. The quality is good, and it represents an object suitable for physics simulation in a video game." } }, "feba4a4b232e4e848df6a5a775eb26cb": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/stone, which belongs to the specified class. The quality is good, and it's suitable for physics simulation purposes." } }, "ff2abd47ba324c5ea0d6187696bd5581": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of rocks, which falls under the 'rock formation' or 'rubble' categories within the specified class. The image quality is good, and it represents a typical object that would be used in a game environment and could be subject to physics simulation." } }, "ff4cb7c8725b47648a031b5c61e5c6d9": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (five pebble-like items), not a single object as required. Additionally, the objects have a very low-poly, artificial appearance and unnatural colors, making them poor representations of natural rocks or stones for physics simulation training." } }, "uyL2NeSCFfWKOcCgDxb0lMNosJW": { "obj_class": "rocks", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rock/boulder belonging to the specified class. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "004746f9a00342298c89eab88c5203c5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground with visible roots and mud/dirt, fitting the 'snowy ground', 'snowy terrain', and 'snow patch' descriptions within the 'snow_and_mud' class. The quality is good and it represents a surface type relevant for physics simulation." } }, "007846cc3c3942239e7250bc2e90b5ab": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mountain range covered in snow, which does not fall into the specified classes (tree, ficus, fern, or grass). It's also not a single object, but rather a landscape." } }, "00bd5bc9e6204ae0bed45285cc369e7b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains other prominent objects (fire hydrant, signpost) in addition to the snow, violating the requirement for depicting primarily a single object class (snow/mud terrain)." } }, "0189846e10e04c1db0c11199b64b7582": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized, flat snowflake object, not actual snow or mud as a ground cover or terrain feature. This is not suitable for learning the physics of snow/mud materials as intended for the class 'snow_and_mud'." } }, "029c99a07b0942d894e63902ce8c6b86": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a vehicle (possibly an airboat or snowmobile) resting on a patch of mud. The focus is on the vehicle, not the mud itself, which violates the requirement of cleanly depicting an object from the 'snow_and_mud' class." } }, "033e9356487346dabbf2ac61134bf236": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a small hut or structure, not snow or mud or any related terrain type." } }, "0353d5024d2d435695536283ca1e9bee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict snow or mud. It appears to be a very thin, possibly corrupted or side-view rendering of a character model, which is irrelevant to the requested class." } }, "03aa327834ad426fa012221b73c964cb": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a muddy ground surface with puddles, which fits within the 'snow_and_mud' class (specifically 'muddy ground', 'muddy surface', 'mud puddle'). The image quality is good and it represents a surface type relevant for physics simulation in game development." } }, "0519589338e94a61af200ec4d3ccf52c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a wooden fence, not snow or mud as the main subject. While there is some snow present at the base of the fence, it's not the focus and doesn't represent the class 'snow_and_mud' cleanly as a single object or terrain type." } }, "0526b7534a00488c85c52b43361eb8c0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a terrain map with mountains and valleys, but it does not depict snow or mud. It appears to be a grassy/rocky landscape." } }, "05e2c9ebe0eb47a9abf6937668502044": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden ramp, not snow or mud. It does not belong to the requested class 'snow_and_mud'." } }, "06199abc515d4850ade002767c980256": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy surface or terrain, which falls under the 'snow_and_mud' class. The quality is acceptable for a 3D render and suitable for physics simulation purposes (e.g., interaction with characters or objects)." } }, "063b9dd9de154b2ba57eebd7b34a9766": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dry, rocky/sandy terrain, not snow or mud as required by the class description." } }, "063f43d785d3454b96221f9d25875639": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which falls under the 'snow_and_mud' class. The quality is good, and it represents a type of surface relevant for physics simulation (e.g., character movement, object interaction)." } }, "0652a5e6a97647358e5c9e624593ce1a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image displays a texture that clearly resembles packed snow or a snowy surface, which falls under the requested 'snow_and_mud' class. The quality is good, and representing the material on a sphere is acceptable for texture/material evaluation." } }, "0713df01c3fe4e29a0505824d129f894": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of dirty snow or slush, which falls under the 'snow_and_mud' category. The quality is good, and it represents a terrain type relevant for physics simulation (e.g., interaction with characters or vehicles)." } }, "0776c1d02a78485cb84493262538af37": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pot or container, not snow or mud or any related item from the specified class list." } }, "07c40079b4554a6cbfda45733b9e6d51": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts patches of snow on grassy ground, which falls under the 'snow patch' or 'snowy ground' categories within the requested class. The quality is good and it represents a common ground surface type relevant for physics simulation in games." } }, "07db419ee00f413f8199d8a1b25b586a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy/slushy ground, which fits the 'snow_and_mud' class. The quality is acceptable, and it represents a terrain type suitable for physics simulation (e.g., character interaction with the ground)." } }, "08b4443a71c94647a1298346a1ea1203": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snow globe, which contains artificial snow as part of a decorative scene. It does not depict natural snow or mud in a way that would be useful for learning the physical properties of snow/mud terrain for simulation purposes. The primary object is the snow globe itself, not the snow within it." } }, "09545e8908f0490e95717a592cbb8d81": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract geometric structure, not snow, mud, or any related terrain/landscape feature." } }, "09f5325b362b47dea38689945d2b0776": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mechanical object, possibly a motor or part of a vehicle, not snow or mud or any related terrain feature." } }, "0a5d1788e96e44cd95b23d27dabbad4d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized terrain patch using contour lines and grayscale shading, resembling a topographical map rather than a realistic representation of snow or mud. It lacks the necessary visual texture and color cues to clearly identify it as belonging to the 'snow_and_mud' class." } }, "0a7fb227e2c147178c576bdb6c1c5ea7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman, which is an object made of snow, not snow or mud as a terrain feature or material patch as described in the class list (e.g., snowy ground, mud puddle). Additionally, the image is very bright and low-poly, making it low quality." } }, "0a8857e486ef4653a9caf7708725737c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (cars, wall, street sign) in addition to the snow, making it unsuitable for isolating the properties of snow itself for physics simulation." } }, "0b27facccf43428eaf1b15565bd48395": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a texture representing muddy ground or terrain, which falls under the 'snow_and_mud' class. The quality is good and suitable for representing a surface material in a physics simulation." } }, "0c3c3c319e5745d9aae8e785828763c2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a valid class. The image is also of good quality and suitable for physics simulation." } }, "0d4e92809c37470db7ea1875d83e6dbb": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a distinct object (a cube with a snowflake symbol) sitting on the snow patch. We want images that depict only the 'snow_and_mud' class cleanly." } }, "0d8a08ab332b4c05bb57b3b9592cc3c4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to depict a chunk of ice or a small glacier fragment, not snow or mud as defined by the class list. While related, ice has different physical properties than snow or mud, making this image unsuitable for learning the physics parameters associated with the 'snow_and_mud' class." } }, "0db8319e21d64a9bad999dcf8c417cc8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a segment of terrain covered in what appears to be dirty snow or slush, potentially mixed with mud or bare earth. This fits within the 'snow_and_mud' class, specifically aligning with terms like 'snowy terrain', 'slush', or 'dirty snow'. The quality is acceptable for training purposes, and representing ground surfaces like this is relevant for physics simulation." } }, "0e28d3c6a40a4d24ae05a60167ff9068": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of terrain that clearly resembles wet mud or a muddy surface, which falls under the requested class 'snow_and_mud'. The quality is good, and it represents a surface material relevant for physics simulations (e.g., interaction with characters or vehicles)." } }, "0fd731b5ef0f410db5f9acfa1f459255": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a suitcase, which does not belong to the 'snow_and_mud' class." } }, "1003dc5d4f9848c8ac69496fc3525db6": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of dirt/sand with grass and a concrete border, not snow or mud." } }, "14273570277c4c7ab3520893616746f6": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground with some exposed muddy or rocky terrain, fitting the 'snow_and_mud' class. The quality is good, and it represents a surface type relevant for physics simulation (e.g., friction, deformation)." } }, "14dd2d57e5b64e94ae3e1c6e9709c180": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch or drift of snow, which falls under the requested class 'snow_and_mud'. The quality is acceptable, and it represents a material relevant for physics simulation." } }, "151bc74cf9f74da8b9eebd11ac87d5ee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple small, unrelated objects (like a tree, candles, parts of a snowman) rather than focusing clearly on snow or mud as a surface, patch, or terrain feature suitable for physics simulation." } }, "169e182f2acd47a7b38f3ca364929a3e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a brick structure, possibly a chimney, which does not belong to the 'snow_and_mud' class." } }, "16a4927c7d7d4b959168b2015901bdda": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized scene with multiple objects (trees, obelisk, star) on a flat white ground. While the ground might represent snow, it's extremely simplistic, lacks realistic texture or detail, and is not the primary focus. The image contains too many other distinct objects and is not suitable for learning the physical properties of snow or mud." } }, "180270cff5ed49bb97f6694111667a49": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a terracotta pot, which does not belong to the 'snow_and_mud' class." } }, "180e8abf2eb74be9911aab55859cc2f3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dog model, not snow or mud or any related terrain." } }, "18369f6bf09e4ae8b9b778b3e9eb5e68": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract purple shape, not snow or mud or any related concept." } }, "1a2c754e5f8a4a54af051873ec1541c4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with multiple objects (building, trees, rocks, furniture) covered in snow, rather than focusing solely on snow or snowy ground as a distinct object or material for physics simulation." } }, "1a425660710f455db6f616be7c164ec5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized, low-poly object that vaguely resembles a tree or a layered pile. It does not clearly depict snow or mud, and the green elements are inconsistent with the requested class." } }, "1a877e3516ae49638cbea4f0ccbf8618": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict snow or mud. It shows a very thin, almost invisible object against a white background, making it impossible to identify as belonging to the target class." } }, "1b100dd021124e718046779f1df8574f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any details or clearly identify it as snow or mud. The quality is too low for training data." } }, "1b2d4949a5d44bbf87e6471e989cf8ee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground/terrain, which falls under the 'mud' category within the 'snow_and_mud' class. The quality is acceptable and it represents a surface relevant for physics simulation in games." } }, "1c1eed8caa7345b489257b0d8b2523b9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts muddy ground, but it also contains significant amounts of other objects like broken concrete slabs and small pieces of trash. This makes it unsuitable for representing the 'snow_and_mud' class cleanly, especially for learning the physical properties of just the mud material." } }, "1caf38367d4445a2b0c3206eef84662c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or determine if it belongs to the 'snow_and_mud' class. The quality is too low for training data." } }, "1ccffb343f174056ae1ee92ca92a7334": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground, which falls under the 'snow_and_mud' class. The quality is acceptable and it represents a surface relevant for physics simulation (e.g., friction, deformation)." } }, "1da6b4df2cf642baa6a28eade1ecba8c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks detail and texture, making it impossible to clearly identify as snow or mud. The quality is too low for training data." } }, "1df32f49a62348f2bac1e00cc459488a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone snow or mud. It lacks any visual information or detail." } }, "1f437196e8124a0d8b11a8e03c95b261": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which falls under the 'mud' and 'muddy terrain' categories within the snow_and_mud class. The quality is sufficient for training." } }, "1fdf0421cc6a407e9107ac0fdc22a1ee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and too bright. It does not clearly depict snow or mud, or any discernible object." } }, "2107b98652024775a083e97a80f5747c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of ground that resembles snow or light-colored mud, fitting the 'snow_and_mud' category (e.g., snowy ground, snow patch). The quality is adequate, and it represents a type of terrain relevant for physics simulation." } }, "21e72e4a405144efbcf9d879907bfdd2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone snow or mud." } }, "223f98e7e0b44e9e94f420140f6244bc": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, fragmented piece of what might be a path or ground, but it doesn't clearly depict snow or mud. It looks more like a distorted scan of a generic dirt surface with some other small objects attached. It's not a clear or representative example of the 'snow_and_mud' class and is of low quality for physics simulation purposes due to its fragmented nature." } }, "23de5f8d88ee42308d53eaae4accaf43": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which fits within the requested 'snow_and_mud' class (specifically 'muddy ground', 'muddy terrain'). The quality is acceptable, and it represents a type of surface relevant for physics simulation in games." } }, "23e801f96ce24d46804b493af9edf7be": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a spear or arrow, not snow or mud or any related terrain/surface." } }, "24cd15da71ca4cdcb18956c2682bda34": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a patch of snow ('snowy ground', 'snow patch') which belongs to the requested class. The quality is good, and it represents a common natural scene suitable for physics simulation (e.g., interaction with the snow surface)." } }, "24e4855891cc455bb37582f9bdf0b3ec": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict snow, mud, or any related terrain or substance. It appears to be a stylized object, possibly a handle or part of a character model, which is completely unrelated to the requested class." } }, "24f22ac22dab4acfa0af78cf6aed6b77": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a segment of rocky or dirt terrain, possibly with some sparse vegetation. It does not clearly show snow or mud, which are the defining characteristics of the target class." } }, "2530da77ab5644bf8e8cf8f2869bf035": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which falls under the 'mud', 'muddy ground', or 'muddy terrain' categories within the requested class. The quality is acceptable and it represents a surface type relevant for physics simulation (e.g., friction, deformation)." } }, "25383877adab48a4927f535b586241f7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of ground that resembles mud or muddy terrain, which fits within the 'snow_and_mud' class. The quality is acceptable and it represents a surface relevant for physics simulation (e.g., character movement, object interaction)." } }, "2653916e77c342baaca317f4327a7711": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, and it does not clearly depict either snow or mud. It looks like a distorted patch of ground, possibly grass and soil, but not distinctly mud or snow." } }, "269e5c5fd2bf44f48f180f76d2d77439": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a tree covered in snow, not just the snow or snowy ground itself. The request requires images focusing solely on the 'snow_and_mud' class elements like snow patches, muddy ground, etc., without other dominant objects like a full tree." } }, "26bd555e74734bb2860e36d7a9d87dee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tire, which does not belong to the 'snow_and_mud' class." } }, "26f69cc44cb24f679487700c368260bf": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snow globe, which contains a miniature snowy scene. This is not a depiction of snow or mud as a natural terrain element suitable for learning physics parameters for game environments. The primary object is the snow globe, not the snow itself in a relevant context." } }, "28cb5ffebb6b49698227432bbc0a6c64": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a concrete or stone structure, possibly a wall or barrier, not snow or mud." } }, "2927e9af6c404aaa9f948a8ff015070c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a backyard patio with fences, stairs, tarps, etc.) that happens to have snow patches, rather than focusing primarily on the snow or mud itself as a material or distinct object/terrain feature. It contains too many other objects unrelated to the target class." } }, "295db3e6392049909b1e1029292c80f0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts snow or snowy ground around a tree stump. While a stump is present, the snow is a prominent feature and fits the 'snow_and_mud' class. The image quality is good and suitable for training." } }, "29fdf3ea9a82450797fefaae20c1a80f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (snow/ice formations, a character figure, an axe) rather than cleanly depicting only snow or mud terrain as required." } }, "2a5e3e74aeb7494f80aa9db7c66cfb9f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman, which is a constructed object made of snow, not a natural formation of snow or mud. It also includes other objects like a hat and scarf, violating the single object rule for this class which focuses on terrain/natural features." } }, "2a62c7a2a940457c95e070b21827d9ca": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden planter box containing dry, cracked earth. It does not clearly depict snow or wet mud as the primary subject. The focus is on the planter box structure rather than the mud/snow material itself, which is what we need for physics simulation of terrain." } }, "2bfd0614770a446e90af80e954bfa4ad": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a highly stylized, cartoonish object that vaguely resembles a snowball or icy planet. It does not realistically depict any form of snow or mud as found in nature or typical game environments. Therefore, it is unsuitable for learning realistic physics parameters for the 'snow_and_mud' class." } }, "2c0386dd36124ad78f37dbf6432eac21": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky or cobblestone surface, not snow or mud." } }, "2dd9c454863841ad99e92332c347eb8a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a block with a texture resembling a night sky or galaxy, not snow or mud." } }, "2de202dfe8014b6cac6ea23ebbbb55ad": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a muddy ground texture, which falls under the 'muddy ground' or 'muddy terrain' categories within the requested class. The quality is good, and ground surfaces are relevant for physics simulations." } }, "300b9bae5fc04871852e26d1bd3b43c8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of a stone or concrete wall, not snow or mud." } }, "309a2236c1e847e1817e58a3c8fc6a2d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image displays a texture that clearly resembles snow, potentially packed or slightly dirty snow, applied to a sphere. While the shape is abstract, the material representation is relevant to the 'snow_and_mud' class (specifically 'snow', 'packed snow', 'snowy surface') and could be useful for learning material properties for physics simulation." } }, "32156410551241f8bb5c57cccc8cd6ef": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized ice crystal or shard, not typical snow or mud formations like ground cover, patches, puddles, or drifts, which are the focus of the 'snow_and_mud' class for physics simulation." } }, "32a468b3946044f48f5746c5ccf9ad91": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and possibly muddy ground, fitting the 'snow_and_mud' class (specifically terms like 'dirty snow', 'snowy terrain', 'snow patch'). The quality is good, and this type of terrain patch is relevant for physics simulations in game development (e.g., character interaction with the ground)." } }, "32bf7c8cf6554535901260e1fcad33d5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not snow or mud. While the texture might appear slightly muddy, the primary object is incorrect for the requested class." } }, "3332e0baabd147378a1845233c704ba9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object or texture, let alone snow or mud." } }, "33ac619f7ae547cdb61c595fc171bd8e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snowmobile, which is a vehicle used on snow, not snow or mud itself, which are the target classes." } }, "34552b94eea54ad4a1acbd50a16284ba": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a boot, which does not belong to the 'snow_and_mud' class." } }, "34965e49f21d4158a4bcd03fa3c4c81d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rocky terrain with some dirt and a small tree trunk, not snow or mud." } }, "387f392ce11941468c27c9076e409e31": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image quality is poor due to the lower half being extremely bright/washed out, obscuring the texture details. While the texture on the top resembles snow somewhat, the overall quality is not suitable for training." } }, "38df5fccb0804294a9f5e85da791968b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with multiple objects (structures, figures, tent) placed on a snowy surface, not just the snow itself. We need images focusing primarily on the snow or mud material/terrain for physics simulation learning." } }, "3a0e4dec66154901bf905384622183dd": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts rocky terrain, not snow or mud. While there might be some dirt, it doesn't clearly represent the 'snow_and_mud' class." } }, "3abff9eadb5e4933be2e4c75454d8f8a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized, individual snowflakes. While technically 'snow', this representation is not suitable for learning the physics parameters of snow as a material (like snow cover, snowdrifts, or slush) typically used in physics simulations for terrain or accumulation." } }, "3b001f6498674bc3bbc6bec088a8e2b9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of dirty snow or slushy ground, which falls under the 'snow_and_mud' category (specifically 'dirty snow', 'slush', 'snowy ground'). The quality is acceptable and it represents a surface type relevant for physics simulation (e.g., friction, deformation)." } }, "3b92b90ddc124ff8b87ca80dd377e59b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a surface covered in snow ('snowy ground' or 'snow patch'), which falls under the specified class 'snow_and_mud'. The quality is acceptable, and while it shows snow on another material (ground/rock), this combination is inherent to terms like 'snowy ground' and is relevant for simulating interactions with such surfaces in a game environment." } }, "3b9c6a8c345a455db08b78dd2da5fb40": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making it impossible to discern any details or identify the object. It does not clearly depict snow or mud." } }, "3d1a1709e1d44ebcafbbadd93a8671a8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tire or wheel, possibly with some mud texture on it, but it does not depict snow or mud as the primary object (e.g., ground, patch, puddle). The main object is the tire, which does not belong to the 'snow_and_mud' class." } }, "3d36624d4b68466fb56677d9c6c68747": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of ground that fits the 'snow_and_mud' category (possibly snowy or muddy terrain/surface). The quality is good, and it represents a type of surface relevant for physics simulations in a game environment." } }, "3d8f7fe0921049a1b75d90492cce6047": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains prominent objects (a person on a bicycle, a fence) in addition to the snowy terrain. We need images focusing primarily on the snow/mud itself for physics simulation training." } }, "3e842f3b368d41baac8c6523e5df78d3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rock covered in snow, not just snow or mud as the main object. The physics simulation would likely be dominated by the rock's properties rather than the snow itself, making it unsuitable for learning snow/mud physics parameters." } }, "3fea88ff72514ccab4c6dcd01a8ebf6b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a terrain patch, but the texture does not clearly resemble snow or mud. It looks more like rocky ground or dry earth, making it unsuitable for the 'snow_and_mud' class." } }, "401e293e23844dd68cc297b6c2ac21e2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky or desert landscape with a building and trees, not snow or mud." } }, "405b32a1e1674c7f937d57bfc5e9412c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very abstract, low-detail texture that does not clearly resemble snow or mud. It looks more like a generic patterned surface and lacks the visual characteristics needed to identify it as belonging to the target class, especially for physics simulation purposes." } }, "410dd5b85a564f3dad645029043ee699": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and stylized. It depicts a low-polygon landscape that doesn't clearly or realistically represent snow or mud suitable for physics simulation training." } }, "4190941cfaa64418866bdb2dc46e6f7e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an artificial structure, possibly made of concrete, with a snow-like texture applied. It does not depict snow or mud as a natural ground cover or formation, which is the focus of this class for physics simulation (e.g., deformation, accumulation)." } }, "41cc30a2cb5843b0b708bd74ffe17ed4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which falls under the 'snow_and_mud' class (specifically 'muddy ground', 'muddy terrain', 'mud patch'). The quality is acceptable, and it represents a material relevant for physics simulation." } }, "42f358bbacae4684bb995bbf2f779e8d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a complex scene with multiple elements (terrain, stylized trees, a building) rather than focusing clearly on snow or mud. The terrain itself is abstract and doesn't realistically depict snow or mud suitable for learning physics parameters." } }, "42fff0069a2b435ca7a6133df2694a6c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (pillars, road-like structure, green shapes) and does not clearly or primarily depict snow or mud. The potential snow/mud elements are minimal and ambiguous." } }, "446add02f37741be8698d2f76ced875b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts patches of snow and small snowballs resting on a surface, which falls under the 'snow', 'snow patch', and 'snowy surface' categories. The quality is good and it represents a scenario relevant for physics simulation (snow interacting with objects/surfaces)." } }, "44f41039246a4df59027c38023d5a576": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict snow or mud. It shows abstract shapes (a white sphere, a brown cylinder, black specks) on a white background, which are unrelated to the requested class." } }, "49f6e4837f10487fb9a2986d874f292a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a boot on a container, not any object belonging to the snow_and_mud class (like snow, mud, snowy ground, muddy ground, etc.)." } }, "4a6c0e6df840449a9769cb241ddfb1b2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and muddy terrain, which fits the requested class 'snow_and_mud'. The quality is acceptable, and this type of ground surface is relevant for physics simulations in game development." } }, "4c9e2fb2278142f4b0ea56e1f1beb063": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a patch of material that resembles packed snow or possibly ice, fitting within the 'snow_and_mud' category. The quality is good, and it represents a distinct object suitable for a game asset." } }, "4db23a37aa91426eb1ba4b18e35b20ce": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a patch of ground with what appears to be wet mud and small patches of snow, fitting the 'snow_and_mud' class description. The quality is acceptable for training data." } }, "4e2528365b7b480ab867c15ebebb4b59": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent stack of logs in addition to the snow. We are looking for images that primarily depict snow or mud, not other significant objects." } }, "4ed7e3e3aabf4f30aa13821225e85f3c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright, almost completely white and overexposed, making it difficult to discern any details of the snow texture or terrain features. This low quality makes it unsuitable for training." } }, "5030020c061c434aa711f9dc4236a07d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a green cube, which is not part of the 'snow_and_mud' class. The snow/mud patch is secondary and partially obscured by the cube, violating the requirement to depict only the target object class cleanly." } }, "5113824b649d4867987ff02b956d915f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of mud, which falls under the 'snow_and_mud' class. The quality is good, and the object is isolated, making it suitable for training." } }, "512f7a551b2d488696eb2516c41393b3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of what appears to be mud or muddy ground, which falls under the requested class 'snow_and_mud'. The quality is acceptable and it represents a material relevant for physics simulation (e.g., interaction with characters or vehicles)." } }, "52735ffb60a44244a3ba87bdc1a0885b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and the object is too small and indistinct to be clearly identified as snow or mud. It does not provide enough visual information for training." } }, "52b2faaf84ff4300b64195757976509a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a baseball glove, which does not belong to the 'snow_and_mud' class." } }, "531e9184e6e14ebb9d84c8fa65adb0d8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden mug or mallet, which does not belong to the 'snow_and_mud' class." } }, "53545055434248429d2f6d170a7a02c9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plain white, geometrically shaped object. It lacks any texture or form that would clearly identify it as snow or mud. It looks more like a piece of manufactured material or a placeholder asset rather than a natural ground surface." } }, "5437dd4787b14759a438bd5455b5510e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to discern any details or recognize it as snow or mud. It does not clearly depict the object class and is of very low quality." } }, "5584c588b0f9490998f6deadf6d3091b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too stylized and lacks texture. It does not clearly depict snow or mud, making it unsuitable for learning realistic physical properties for the 'snow_and_mud' class." } }, "560cd42324a5420bac9a6eb2b537524e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid block of dried mud with a paper label artifact on top. While technically mud, it doesn't represent the typical use cases for 'snow_and_mud' (like terrain, puddles, deformable surfaces) in game development and physics simulation. The label is also an unwanted extraneous object." } }, "5655d79a7a334953a04584e411ec4b6d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, highly pixelated, and noisy texture that does not resemble snow, mud, or any related terrain type. The quality is poor in terms of realism and it does not clearly depict the object class." } }, "56950782989b4f648ee8834ea91dfeec": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground with puddles, which fits the 'muddy ground', 'wet mud', 'mud puddle', and 'muddy surface' descriptions within the snow_and_mud class. The quality is good and it represents a relevant surface type for physics simulation in game development." } }, "5775930339854f44911240abe24e1810": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image texture depicts gravel or small rocks, not snow or mud as required by the class description." } }, "577f5dbb376f4f35a0649e61ede115da": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of dry, possibly rocky ground or dirt, not clearly identifiable as snow or mud (especially not wet mud or snow)." } }, "57871ecaa6b9453f9916f057d71020b0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a formation that resembles mud or very dirty snow, fitting the 'snow_and_mud' class. The quality is good, and it represents a material relevant for physics simulation." } }, "578f991e44e646bdb3ab4e7995204978": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a lantern-like object, not snow or mud or any related terrain/surface." } }, "57d50e8c71844f1e986c1a6a52ed5ed6": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and muddy ground, which fits the 'snow_and_mud' class. The quality is acceptable and it represents a terrain surface suitable for physics simulation (e.g., character interaction, vehicle tracks)." } }, "588dbe24daa14549b6b66b2c2c88c4fb": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone snow or mud." } }, "5919bdb25f794362a76dc963be283592": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a broken wooden fence or barrier with some dirt/mud texture on it, but the primary object is the wooden structure, not snow or mud itself. It does not fit the definition of the 'snow_and_mud' class which focuses on ground cover, patches, puddles, etc." } }, "59b30b40650a4ce19208bccb7a1fe935": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract white structure that does not resemble snow, mud, or any related terrain features listed in the class description. It appears to be an unrelated 3D model." } }, "59ba68b286fb4f75b7dd8421294df55d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low. It is too bright, washed out, and lacks detail, making it unsuitable for high-quality training data. It looks more like a sketch than a realistic render." } }, "5ad3a2784f10401fb34592a7f9d70578": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a snowy ground/surface, which falls under the requested class 'snow_and_mud'. Although it includes a road and trees, the snow covering the ground is the prominent feature and relevant for understanding the material properties in a physics simulation." } }, "5c2eca11cddf4a33b76094968ad617db": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very small, isolated, and abstract shape. While the texture might vaguely resemble snow or slush, it doesn't clearly depict any recognizable form of snow or mud (like a patch, drift, puddle, or ground cover) that would typically be relevant for physics simulation in a game environment. It's too ambiguous and not representative of the class." } }, "5ded2cc06f744e5cb18fb92cffc1e0bf": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a surface that resembles muddy tracks through snow or light mud, fitting the 'snow_and_mud' class (specifically terms like 'muddy path', 'snowy ground', 'muddy ground', 'dirty snow'). The quality is good, and it represents a ground surface relevant for physics simulations." } }, "5fa69ebe12654c64b04575778cd347a1": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an untextured 3D mesh of a terrain segment. It does not visually represent snow or mud, lacking the necessary color and texture information to belong to the 'snow_and_mud' class." } }, "61757ef42f3741d2a617d3cd0d13fc99": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a creature, which is not part of the 'snow_and_mud' class. We need images focused solely on snow or mud textures/terrains." } }, "61836296296347c4adf2b8358f8a840b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to show a mound of sand or dry earth, not snow or mud. It does not fit the requested class." } }, "6201fac9181240dfb046763602637d2d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (trees, rocks, campfire symbol) on a snowy ground, rather than focusing solely on the snow or mud itself as the primary object." } }, "6207382f60ae4f17a49d5ba0c5e4d05a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic, untextured 3D terrain model. It lacks any visual characteristics (color, texture) to identify it as snow or mud. It appears to be a base mesh or heightmap rather than a representation of a specific surface material like snow or mud." } }, "621f3e9bca7a42f4bd289c7c438c974c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of rock or stone, not snow or mud or any related concept from the provided list." } }, "62dc7db392f34dacb4c07bfcb4faf14e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, side-view slice of what might be muddy terrain, but the perspective and fragmentation make it difficult to clearly identify as such. It doesn't represent a typical view or usable asset for the 'snow_and_mud' class in a game environment or for physics simulation." } }, "65447750e2a94304bd6a58a47465ccd2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy terrain, which falls under the requested class 'snow_and_mud'. The quality is acceptable, and it represents a single object type relevant for game development and physics simulation (ground interaction)." } }, "661e3cc4b4324d63a3af4e146d220d2e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (snowy ground and trees), not just a single object representing snow or mud. We need images focused solely on the snow/mud material itself for physics simulation training." } }, "6689809ba4744f16bd70b30819237c05": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts patches of snow or a snowy surface, which falls under the requested class 'snow_and_mud'. The quality is acceptable, and it represents a type of terrain relevant for physics simulation." } }, "68478cc107e7468cae53c985d81367c7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, which does not belong to the snow_and_mud class." } }, "68a23d0248b04efa84fae1c2827e09e7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a car covered in snow, not the snow or mud itself as the main subject. We need images focusing on the snow/mud terrain, patch, or puddle, not other objects covered by it." } }, "6a92c9c3db254defa8bc31d240ebe1f2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground with a puddle, which falls under the 'mud', 'muddy ground', 'mud puddle', and 'muddy water' categories within the snow_and_mud class. The quality is good, and it represents a terrain feature relevant for physics simulation (e.g., character movement, object interaction)." } }, "6ab7c0070cae418480d2832e4f0372f3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, patterned surface that does not realistically represent snow or mud. It looks more like a decorative tile or a game board than natural terrain." } }, "6b0573c76fcc40a0a7efee12c751eb5f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy terrain or landscape, which falls under the requested class 'snow_and_mud'. The quality is acceptable, and it represents a surface type relevant for physics simulation (e.g., friction, deformation)." } }, "6b932284e57a4e198286d1628b447bcc": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and lacks any discernible features or textures. It does not clearly depict snow, mud, or any related terrain. The quality is too low due to extreme brightness/overexposure." } }, "6d5d67db73bc40999e16b14b3aae93dc": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a snowy village/landscape) with many different objects (trees, buildings, etc.), not just snow or mud. We need images focused primarily on the snow/mud material itself for physics simulation training, not entire game levels." } }, "6dbbee10d5f84a9c942da483e5d0b6b1": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pixelated block that resembles dirt or wood, not snow or mud. The texture and form do not align with the requested class 'snow_and_mud'." } }, "6dccb5e143f640e49d3cd32d3331e1f7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an axe, which does not belong to the 'snow_and_mud' class." } }, "6e3314061c504d619d804450b61b21a8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone path or ground cover, not snow or mud. It does not fit the requested class 'snow_and_mud'." } }, "6f5eb3257f124213b4601ec2dcce557d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a lump that can be interpreted as a snowdrift or a patch of packed/wet snow. While the texture is somewhat stylized and shiny, it falls within the broad category of 'snow_and_mud' (specifically snow). The image quality is good, and it shows a single object suitable for physics simulation (e.g., deformation, interaction)." } }, "7039d3a2698e483083bff4a42c67e791": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground with some rocks, which fits the 'snow_and_mud' class (specifically 'snowy ground', 'snow patch'). The quality is good, and it represents a terrain element suitable for physics simulation in a game environment." } }, "706a0368fff549d28ea2f86ff9460331": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (cabin, trees, rocks) in addition to the snow. While snow is present, it is part of a larger scene and not the primary focus, violating the 'cleanly ONE SINGLE OBJECT' guideline, even considering the context of landscapes." } }, "715f6b08d53c43e9a03eb6d9bb729b25": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a terrain patch with features resembling both muddy ground and snowdrifts/snowy peaks, which fits within the 'snow_and_mud' class definition (e.g., 'snowy terrain', 'muddy terrain', 'snowdrift'). The quality is good, and this type of terrain is relevant for physics simulations in games." } }, "7217487913e74513b06b4fa221233b79": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, flat, artificial-looking slab. It does not clearly depict any recognizable form of snow or mud (like a patch, drift, puddle, or terrain) as defined in the class description. It is too abstract and doesn't represent a natural occurrence suitable for physics simulation of snow or mud." } }, "725803e919df44d7a945a7de03a3e226": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a highly stylized, grayscale representation of terrain, possibly a heightmap visualization. It lacks realistic textures and colors, making it impossible to clearly identify as snow or mud. It does not provide useful visual information about the material properties needed for physics simulation." } }, "727efaaeae7947d18f42f8470788db03": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict snow or mud. It is too bright and lacks sufficient detail to be useful for training." } }, "72e3acdc5f1147eab161b837af57f427": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict snow, mud, or any discernible object. It lacks any content or texture." } }, "73a0a779dc4b43929bbd3d3d4f323ae8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized texture applied to a cube, representing snow or ice patches. While related to the class, it's presented as a texture block rather than a natural formation of snow or mud suitable for learning physics simulation parameters like deformation or interaction. It's more of a material swatch than an object/terrain element." } }, "742ad64dfa7e45909d2e67b1ad35cd74": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very small, indistinct object that is difficult to identify clearly as snow or mud. It lacks context and doesn't represent a typical form of snow or mud (like ground cover, terrain, patch, puddle) suitable for physics simulation training." } }, "75dcd17bdf4c49bbac606c27bf2186fe": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (ground, bridge, and a white substance that might be snow). It does not cleanly depict only snow or mud. The potential snow element is not the primary focus and lacks detail." } }, "763ca6587c4846d2a3b4b2cc5c0ec209": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a texture of gravel or small rocks, not snow or mud as required by the class description." } }, "76619a9fb77d465b863b1e69ce03f947": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to clearly identify the material. It looks more like a rocky outcrop than clearly defined snow or mud terrain." } }, "76dd7b03864a4812a005b7fadd09a9ee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snow or snowy ground, which falls under the requested class 'snow_and_mud'. The quality is acceptable, and it represents a material relevant for physics simulation in games." } }, "776b40408fd74424831b10ce7e1db70a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character model, not snow or mud as an environmental element or terrain feature. It is not suitable for representing the 'snow_and_mud' class for physics simulation purposes." } }, "792416146dfc43a28d7dbeca66dd117d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone snow or mud. It lacks any detail or texture." } }, "7bd96987e8f34e79bef996df293b1a78": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized landscape diorama with trees and water, not a clear depiction of snow or mud. The ground texture is uniform and dark, and the white particles are too abstract to represent snow effectively for physics simulation purposes. The image also contains multiple objects besides potential snow/mud." } }, "7be1b98ec4e94722b3b6046ac08adc1b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an extraneous object (a small pillar) attached to the muddy surface, violating the requirement for depicting only the target object class. Additionally, the isolated patch format is not ideal for representing terrain like mud or snow for physics simulation." } }, "7c7028be31b34679ba8ae953eb6beafd": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of wet mud or possibly slush, which falls under the 'snow_and_mud' category. The quality is acceptable, and it represents a surface material relevant for physics simulation (e.g., interaction with characters or vehicles)." } }, "7cb5a50d9bdb46119813ea7e09384035": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snowman, which is a specific object made of snow, not the general material or terrain feature 'snow' or 'snowy ground' as intended by the class 'snow_and_mud'. We are looking for images of snow/mud as a material or ground cover, not anthropomorphic figures." } }, "7d2623d4a2384be5a663dc499ac69bcb": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with multiple objects (statues, structures, debris) rather than focusing clearly on snow or mud as a primary object or terrain. Additionally, the image quality is low, appearing blurry and overly bright, making it difficult to discern details relevant for physics simulation." } }, "7d92104cf66946e692a7da923da668a3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, abstract vertical shape that does not clearly resemble snow, mud, or any related terrain features. It's difficult to identify the object, and it doesn't represent a useful instance for physics simulation within the 'snow_and_mud' class." } }, "7e5a3aefba274aa1977d06a7aa710c76": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a muddy ground surface, which fits within the 'snow_and_mud' class, specifically terms like 'muddy ground' or 'wet mud'. The quality is good and it represents a surface type relevant for physics simulation (e.g., friction, deformation)." } }, "7e8250c7ef174c708355e930f46a93f6": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a circular object, possibly cardboard or a coaster, with writing and a barcode. It does not depict snow or mud or any related terrain/surface." } }, "7ec6d956393f44ddbb69a42196659732": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dry terrain model, possibly sand or rock, not snow or mud as required by the class." } }, "7f40b2e189234d8cb9ccaadf8e92b844": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a section of terrain that clearly includes areas identifiable as muddy ground or muddy terrain, which falls within the specified class. The quality is adequate, and terrain pieces like this are commonly used in physics simulations for environment interaction." } }, "7f4cd032cb0940329844438ff0dd4d95": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a single, stylized snowflake, not a representation of snow as a material or ground cover (like snowy ground, snow patch, snowdrift) which is the focus of the 'snow_and_mud' class for physics simulation." } }, "826c41844d4243599649c07caac5112f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with a river, grass, and potentially rocks, but it does not clearly show any snow or mud, which are the defining characteristics of the target class." } }, "82fa6b235d53487c952d3da1120ddf10": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts cracked dry earth or dried mud, which doesn't fit the typical characteristics of 'snow' or 'wet/muddy' ground intended for the class. The physics properties would be significantly different from snow or wet mud." } }, "832871e06b52450da85616c31176401c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a segment of snowy terrain or landscape, which falls under the requested class 'snow_and_mud'. The quality is good, and terrain surfaces like this are relevant for physics simulations (e.g., friction, deformation)." } }, "8360dc6dfc0949eea7973472634add4c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a concrete surface with a fire hydrant and some wet patches, not snow or mud." } }, "846d7fdd1fa7416cafe01d5e85fd9c92": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a texture that looks more like soil or dirt with leaves/debris, not clearly identifiable as sand or sandy terrain." } }, "8473ab8b9e524f7281378e35ef233076": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts robotic or mechanical structures, not snow or mud or any related terrain/surface." } }, "849774c99ccd43e09088aa9b571525e1": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a low-poly 3D model that vaguely resembles a rock formation partially covered. However, it lacks textures and realistic details to clearly identify it as snow or mud. The quality is too low and abstract for the intended purpose." } }, "84a1c4e564d349648be05653d60c7fa0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dry, rocky, or desert-like landscape, not snow or mud. It also contains other objects like a building and trees." } }, "84d28c4420e24fd7917b6f29a15062f9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a section of a paved road, which does not belong to the 'snow_and_mud' class." } }, "873c9a3f7426462595fee1f809ca90c7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and the object in the center is barely visible and does not clearly depict snow or mud or any related concept. The quality is too low, and the object is unrecognizable." } }, "895167f1d1714744838906ee1b2fcdc4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized block of grass on top of dirt/soil, not snow or mud as required by the class definition." } }, "89d201870c954d16ba8f6e7d1745852c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely small and low resolution, making it impossible to clearly identify the object. Additionally, the object depicted does not appear to belong to the 'snow_and_mud' class; it looks more like a miniature building or scene." } }, "8a2296b30b7b4be9b2dfa30a9f387820": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an icicle, which is ice, not snow or mud. While related, it doesn't fit the specified class terms like snowy ground, muddy terrain, snow patch, mud puddle, etc., and has different physical properties relevant to simulation." } }, "8bd4bd5dc01340b5ada09cc5dc8c1103": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (trees, a blue structure) in addition to the snowy ground. It depicts a scene rather than focusing solely on the snow/mud material or terrain itself, which is required for isolating its physical properties." } }, "8c52c224335d4b598a60b42598c84d21": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy terrain/landscape, which falls under the specified class. The quality is good, and it represents a single object type suitable for physics simulation (e.g., ground collision, character interaction)." } }, "8d16b9d28b1841ada0c3c3595feccf52": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky cliff face with some vegetation, not snow or mud as required by the class description." } }, "8da1e16793cb4f99830388e7decd0613": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-polygon, untextured model. It lacks the necessary detail and texture to clearly represent either snow or mud. It is too abstract and low quality for the purpose of learning physics parameters." } }, "8f6c45d163b24b02a845dd47561a6efe": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which falls under the 'snow_and_mud' class. The quality is good, and it represents a surface type relevant for physics simulations in a game." } }, "925fa0a3410c49c89d07d7b7425de51f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of textured material that resembles packed or dirty snow, fitting the 'snow_and_mud' class (specifically 'snow patch' or 'snowy surface'). The quality is good, and it represents a single object suitable for physics simulation as ground cover." } }, "937141c4a58e44f980b9d175ca0afcfe": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a diorama) with multiple objects like trees, rocks, and a snowman, not just snow or mud as a primary focus. We need images focusing solely on the snow/mud material or terrain itself for physics simulation learning." } }, "937322a709c04195bda8ece3258cf213": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized creature or robot, not snow or mud or any related terrain/surface." } }, "939d059c7a43424f93c3e8e44e1d5489": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a few very small, indistinct snowflake-like shapes on a completely white background. It does not clearly depict any of the listed concepts like snowy ground, mud, snowdrifts, etc., in a way that would be useful for learning physics parameters. The image quality is poor due to excessive brightness and lack of detail, and it doesn't represent a substantial object or surface suitable for physics simulation." } }, "93d88993a102495392b0022d0bebfd87": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sculpted figure or creature, not snow or mud or any related terrain/surface as specified in the class list." } }, "9432d6397ea64c328f2cdf1109e30ad2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and muddy terrain, which fits the 'snow_and_mud' class description. The quality is acceptable and it represents a surface relevant for physics simulation (e.g., interaction with characters or vehicles)." } }, "94421df4506e4737b6bc2ea9ea369dff": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a snowman, which is a specific object construct made of snow, and includes accessories (hat, pipe) not belonging to the 'snow_and_mud' class. We are looking for images representing the material properties of snow or mud itself (e.g., patches, ground cover, puddles), not composite objects like snowmen." } }, "94ba55c6ecbb431f8b47484cf55940b0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, which does not belong to the 'snow_and_mud' class." } }, "94e5677333674fea9bb68f23dbdd73ce": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized, geometric snowflake object, not natural snow or mud formations like snowy ground, mud puddles, or snowdrifts, which are the intended subjects for the 'snow_and_mud' class for physics simulation." } }, "9541aaf266a14389ae41f7c123cad403": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a vehicle (snowplow/tractor), not the snow or mud itself. The amount of snow/mud present is minimal and not the focus of the image." } }, "96415b43d3ef4e5a82e714b8d4a155a5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of what appears to be packed or dirty snow, fitting the 'snow_and_mud' class (specifically terms like 'packed snow', 'snowy surface', 'snow patch', 'dirty snow'). The quality is good and it represents a material relevant for physics simulation." } }, "96745d38c42c4ec8a7bca594dfe6aad3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks more like a rock or a clod of earth rather than sand. It does not show the characteristic granular texture or form (like a pile, dune, or surface) associated with sand." } }, "969ca256e8694c9e8affe6f220c56de8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of ground that resembles dirty snow, slush, or muddy ground, which fits within the 'snow_and_mud' class. The quality is acceptable for training." } }, "97323eb95fe343d897cf396e50c500b1": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a snow globe or a similar decorative object, not snow or mud as a natural ground cover or terrain feature. It does not fit the class description." } }, "975cf3eab73a41898c5e0b9787868d68": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pair of boots and a connected device, not snow or mud or any related terrain/substance." } }, "9a013332f9394bffbe3e3c33f0c2dfee": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict snow or mud. It shows a blue textured surface, possibly representing water or ice, with several unrelated objects placed on it." } }, "9a74f4f1313449b78f68f7231c1c1a31": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy terrain, which falls under the requested class 'snow_and_mud'. The quality is adequate for training purposes and represents a surface relevant for physics simulations." } }, "9a951e48bc11409da031371a5adbfb3c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rock formation. While there are some white patches that could potentially be interpreted as snow, they are not the main focus and are not clearly defined as snow. The dominant object is rock, not snow or mud." } }, "9b99a8d5ef584ddc88cd7b648abcbe6e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snowman, which is a constructed object made of snow, rather than representing snow or snowy terrain in a more natural state as listed in the class description (e.g., snow patch, snowdrift, snowy ground). While made of snow, it includes other elements (hat, scarf, sticks) and its specific form is less suitable for learning the general physical properties of snow material for simulation compared to images of natural snow formations or ground cover." } }, "9c45d1ad17ab4a1d90d49cac232811af": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized landscape diorama containing multiple elements (mountains, trees, river, earth cross-section) rather than focusing specifically on snow or mud. The snow representation is very minimal and abstract (white caps on low-poly mountains) and doesn't clearly show any specific type of snow or mud from the list provided." } }, "9c4a1e459e7a44f5b00a0feb1719db52": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized green patch of ground, possibly representing grass or a game board element, not snow or mud. The colors and textures do not match the target class." } }, "9d00e0a63ba54cbb931825c420f49dd7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (deer, structure, trees) rather than focusing clearly on snow or mud as the primary subject. The representation of the ground is very minimalistic and lacks the detail needed for physics simulation training." } }, "9d1f2152db4543998db917c9cae6ceb1": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a paved surface, possibly cobblestone or tiles, with some graffiti. It does not depict snow or mud." } }, "9dfb684196cc420ba9987e5395fb5ddd": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized weapon or tool, not snow, mud, or any related terrain feature." } }, "9e50dbca87944b00931e9d249e11e47b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a color checker card, which is an extraneous object not part of the 'snow_and_mud' class itself. We need images depicting only the intended object class." } }, "9f6e71156ea8409b8337312a879bafe4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which fits within the 'snow_and_mud' class (specifically 'mud', 'muddy ground', 'muddy terrain', 'muddy surface'). The quality is acceptable for training purposes, and ground surfaces are relevant for physics simulations." } }, "9fa3c56fd32746bcb0e06cd2c4229ca0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a grayscale terrain model, possibly representing mountains. While it could conceptually be covered in snow, it lacks the specific texture and visual detail to clearly depict 'snow' or 'mud' as materials. It looks more like a heightmap or untextured terrain mesh rather than a representation of snow or mud surfaces suitable for learning physical properties." } }, "a0367cab2ee54e288f2c2e5065da90d4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a surface that reasonably represents muddy ground or a muddy surface, which falls under the 'snow_and_mud' category. The quality is adequate and it represents a single object type relevant for physics simulation (ground material)." } }, "a103182d35e7425c9e96e9ccb3dd650d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snow or snowy ground, which falls under the requested class. The quality is good, and it represents a single object type relevant for physics simulation (e.g., terrain interaction)." } }, "a1809e675ef14ea5a3fce59e640fd5be": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees, snowman, ice patch) in addition to the snow, and the focus is on the entire scene rather than just the snow material itself. We need images focusing primarily on the snow/mud surface/terrain for physics learning." } }, "a324e2627f3e46a086906ecaff906c1e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized low-poly landscape with multiple elements (trees, river, ground). While there are white patches that might represent snow, they are highly abstract and part of a larger scene, not a clear depiction of snow or mud suitable for learning physics parameters. The image does not focus on the target class." } }, "a4a62326c72b4953b393ae1edb505d43": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image is extremely faint and low contrast, making it very difficult to discern the object. It does not clearly depict snow or mud and lacks the visual information needed for quality training data, especially for physics simulation purposes." } }, "a5287a933a7548adbbf18f431556b0b4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a green, rocky island terrain, not snow or mud." } }, "a5ed41b6b74f4077b8a1415f5dfd6c36": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a terrain patch, but the texture does not clearly represent snow or mud. It looks more like grassy or rocky terrain." } }, "a63110eb31f84cbdb74d0aede7c160b8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground with a footprint, which falls under the 'mud', 'muddy ground', or 'muddy terrain' categories within the requested class. The quality is acceptable and it represents a surface relevant for physics simulation (e.g., deformation, friction)." } }, "a67cf5076494490aa12b23a131d71626": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized creature (resembling a pig covered in frosting and possibly mud/chocolate) from a block-based game like Minecraft. It does not clearly represent any of the items in the 'snow_and_mud' class list like snow patches, mud puddles, or snowy/muddy terrain." } }, "a6d8831589f14c378184f2a79c49ad37": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a muddy ground surface, which falls under the 'snow_and_mud' category (specifically 'muddy ground', 'muddy terrain', 'muddy surface'). The quality is good and it represents a type of terrain relevant for physics simulation." } }, "a87ceed6770944cbbd182156a53f514b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a lump that could reasonably be interpreted as wet snow, slush, or a snow patch, which falls under the requested class. The quality is acceptable and it represents a single object relevant for physics simulation (e.g., interaction)." } }, "a92a08461d244873a88a0b77d1c47d7c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of terrain, but it does not clearly depict snow or mud. The texture appears to be mostly green vegetation and brown/grey earth or rock, not fitting the 'snow_and_mud' class." } }, "a953218836004ffdb4004bfb65d33c98": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cobblestone path with grass, not snow or mud." } }, "aa57bdd463f145e3a585a4c8604a44ae": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy terrain, which falls under the requested class 'snow_and_mud'. The quality is good, and it represents a single type of object relevant for game development and potentially physics simulation (e.g., ground interaction)." } }, "aacac87a28b34d20be44e5ee75b3decd": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of terrain with areas resembling snow and mud, fitting the 'snowy terrain' and 'muddy terrain' descriptions within the class. Although it includes green areas and has a low-polygon style, it's recognizable and represents a type of object relevant for physics simulation (ground surface)." } }, "ac0587b7cbb64274be31dd3219e3c06f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a snowy landscape/terrain, which falls under the requested class 'snow_and_mud'. While other objects like trees and figures are present, the primary element is the snowy ground, and this representation is suitable for understanding the properties of a snowy surface in a game environment." } }, "ac58f4b45338463f95f7f80b70ded5ce": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a topographical map or a digital elevation model, not actual snow or mud textures or surfaces. It represents terrain elevation with color gradients, which is not suitable for learning the physical properties of snow or mud." } }, "ad2b9fd45215429aaf0488834b0c0ca9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman character, which is an object made *from* snow, but it does not represent snow as a material or terrain feature (like snowy ground, snowdrift, snow patch) as intended for learning physics parameters for the 'snow_and_mud' class. It also includes non-snow elements like a hat and stick arms." } }, "aeee0519987b4688b3f4c7a390edf32c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its texture. It does not clearly depict snow or mud due to the poor image quality." } }, "b0eefd5a60c14097a8db2fa0283b883b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains many other objects (blocks, tracks, sword, rug) besides the small patch of snow. It does not cleanly depict snow or mud as the primary subject." } }, "b1377c297cb84a48ad6d3f2f91d1d3bf": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized landscape model with mountains, ground, and small patches of snow. It does not clearly focus on snow or mud as a primary material suitable for physics simulation, and it contains multiple elements (rocky mountains, green ground) besides the snow." } }, "b246ac9a53224b3b97ae68f6320ac3bd": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized creature or object, not snow or mud or any related terrain/formation as listed in the class description." } }, "b40e99e80497499aa8ece91de7daf929": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify any object, let alone determine if it belongs to the snow_and_mud class. The quality is too low for training purposes." } }, "b47a6f545a934f6f9f91b6d5fd30b267": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-polygon, untextured grey shape. It does not clearly depict snow or mud. It lacks the necessary detail and texture to be identifiable as belonging to the 'snow_and_mud' class." } }, "b546b952a33f48188a5ab688b6d08f2c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict snow or mud. It shows a stylized green object, possibly a small tree or bush, under a dark rectangle, which is irrelevant to the requested class." } }, "b7375e6d81894550b741de26946285df": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and potentially muddy ground, fitting the 'snow_and_mud' class. The quality is acceptable, and it represents a surface suitable for physics simulation in a game environment." } }, "b81bd95d551e473484944987ee192578": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent trash can in addition to the muddy ground. We need images that primarily focus on the snow or mud itself, without other significant objects." } }, "b846f22295d540e2b3d362dbce117ae2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized island scene with water and possibly sand, not snow or mud." } }, "b884fcae69bc44af9114e827ce680dbc": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts patches of snow on what appears to be muddy or earthy ground, fitting the 'snowy ground' or 'snowy terrain' aspects of the class. The quality is good, and this type of surface is relevant for physics simulations (e.g., character movement, object interaction)." } }, "b8ba85f5a200471ea380c17e28cfd1da": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized, blocky object that appears to be a creature or robot head. It does not depict snow, mud, or any related terrain features listed in the class description. The light blue dripping texture is part of this unrelated object and not representative of the 'snow_and_mud' class for physics simulation purposes." } }, "b8fbec68d48040038397540c32121b30": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stylized snowman, which is an object made of snow, but it does not represent the general class 'snow_and_mud' (like snowy ground, mud puddle, snowdrift) needed for learning the physics of the material/terrain itself." } }, "b97c9e994c074cba83d0c00814f59dd4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman, which is an object made of snow. However, the request is for the general class 'snow_and_mud' focusing on materials like snowy/muddy ground, patches, drifts, puddles, etc., to learn material physics properties. A specific, constructed object like a snowman is less suitable for representing the general physical properties of snow as a material/terrain compared to images of snowy landscapes or snow patches." } }, "ba32004af290480d8e997f8c6e489e9f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and muddy ground, which fits the 'snow_and_mud' class. The quality is acceptable and it represents a terrain feature relevant for physics simulation (e.g., ground interaction)." } }, "bb02368fcf69489ea1fb43471a52ca5e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows abstract geometric shapes with unnatural green colors, not snow or mud." } }, "bb1d75d971de467fa9f3c26f3d8b4eef": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman, which is a constructed object made of snow, not a natural formation like a snow patch, snowy ground, or snowdrift as listed in the class examples. We are looking for images representing the material properties of snow or mud itself, not specific objects built from them." } }, "bb948580959142809b55b81d26e65f1b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any details or determine if it actually depicts snow or mud. The quality is too low for training." } }, "bc265510f24244c0893d9d4c8018d6b4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows bags of earth/soil stacked on a pallet, not snow or mud in its natural state as required by the class description (e.g., snowy ground, mud puddle). We are interested in the raw material for physics simulation, not packaged goods." } }, "bce20d03c0a44d8285fa566c9fb3fbde": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a texture representing wet mud or muddy ground, which falls under the requested class 'snow_and_mud'. The quality is good, and it's suitable for representing the material properties needed for physics simulation." } }, "bdde6dad0f1f4069b8cf3ed2453b9097": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground with tire tracks, which fits the 'muddy ground' or 'muddy path' categories within the 'snow_and_mud' class. The quality is adequate and it represents a common type of terrain asset useful for game development and potentially physics simulation (e.g., vehicle interaction)." } }, "bdfe648359894f5eb8b8967c554c75a9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a damaged truck. While there is some muddy ground beneath it, the focus is not on the mud itself, and the truck is the dominant object, violating the 'single object' rule for the 'snow_and_mud' class." } }, "bea1d9d44c4247a3a62d7a25c4ec7da9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict snow or mud. It shows a section of a road, some pillars, and bushes." } }, "bfe22bf2de04486187246a7e361e5b88": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of dirty snow or slush, which belongs to the 'snow_and_mud' class. The quality is good, and it represents a surface material relevant for physics simulation." } }, "c26fcf160ecb4b9cb412b25a4f763774": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, with noticeable rendering artifacts (red outlines/ghosting). It depicts a stylized scene with multiple tree-like objects on a white plane, rather than focusing clearly on snow or mud textures or terrain suitable for physics simulation learning. The representation is too abstract and lacks the detail needed for the intended purpose." } }, "c2892f05cbc34304927d1cf2d95a189a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman, which is an object constructed from snow. While related, it does not represent the 'snow_and_mud' class in the sense of terrain, ground cover, or natural formations (like snowdrifts or mud puddles) which is the focus for physics simulation of materials." } }, "c347cf0db97043c9bfda825c059f9f4e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a low-polygon, untextured 3D model that does not clearly resemble snow or mud. It looks more like a generic rock or terrain piece and lacks the necessary detail and texture to be useful for the 'snow_and_mud' class." } }, "c3b1d5e87cf544298bf7361a3edc8563": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts snow-covered trees, not snow or mud as a ground surface or material itself, which is the focus of the class. The objects shown are trees, not the snow/mud material intended for physics simulation." } }, "c442760f5abe4ec5907cead971ff4c41": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which belongs to the 'snow_and_mud' class. The quality is good, and it represents a terrain surface suitable for physics simulation." } }, "c451008b961c4501ad73c3d829d03105": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and too bright, making it impossible to identify any object, let alone determine if it belongs to the 'snow_and_mud' class. The quality is too low." } }, "c51f6772b18847b9ae9eaf6ead1ba93b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears more like a rock or a crystal fragment rather than snow or mud. Its shape and texture do not clearly align with the typical characteristics of snow or mud formations relevant for the target class." } }, "c521a1d1817a4ca79d26f2263657c799": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and lacks any discernible features or texture. It does not clearly depict snow, mud, or any related object from the class list. The quality is too low for training data." } }, "c58c66a33da24f509668be3ee1bf0c95": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground that looks more like dry earth, rocks, and possibly broken paving stones rather than clearly identifiable snow or mud. It does not strongly represent the core characteristics of the 'snow_and_mud' class." } }, "c5d761a2f1b7483e91ee270a3de305f8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy mountain terrain, which falls under the 'snowy terrain' and 'snowy landscape' categories within the snow_and_mud class. The quality is adequate and it represents a surface type relevant for physics simulation." } }, "c692badaf050481dbf4d4e1fbac84c62": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a vehicle, not snow or mud or any related ground cover." } }, "c707ca737f66439f919449c1cab03619": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stylized snowman character, not a representation of snow or mud as a material or terrain feature (like snowy ground, mud puddle, etc.). We need images of the material itself for physics simulation learning, not objects constructed from it." } }, "c754d2ffef3c4d9d88ed2df4d2780b80": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a stylized sphere with a texture that vaguely resembles snow and dark rock/mud. It does not clearly depict a recognizable object from the 'snow_and_mud' class (like snowy ground, mud puddle, snowdrift) in a realistic or game-ready context. It appears more like an abstract material sample rather than an object suitable for physics simulation or typical game use." } }, "c75721b6b0724aaaaf537ff13a95d38c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase, which does not belong to the 'snow_and_mud' class." } }, "c7d27193b435484887892bad5270a70d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, smooth, blob-like shape that does not resemble snow, mud, or any related terrain/feature listed in the class description. It lacks the characteristic textures and forms associated with snow or mud." } }, "c86a4e9d981d4f029cc9261fde52cb7c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of dry dirt and rocks, not snow or mud, which are the defining characteristics of the requested class." } }, "c9c36e9cfdc64f22b7199940af434092": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snow or a small snowdrift, which falls under the 'snow_and_mud' class (specifically 'snow patch', 'snowdrift', 'snowy surface'). The quality is good, and it represents a material relevant for physics simulation in a game environment (e.g., interaction with characters/vehicles)." } }, "c9efe87148504381a9b5be7f354ae347": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of terrain that appears to be rocky or dry earth, not snow or mud. It does not fit the requested class 'snow_and_mud'." } }, "c9f365dccca8439eaa566c2dfb73e3f3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays abstract green and blue shapes, which do not resemble snow, mud, or any related terrain features from the specified class list. It lacks the necessary textures and visual cues." } }, "ca340e2fd8764274849fe7e4a8d345a9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground covered with snow patches, which fits the 'snow_and_mud' class and its associated terms like 'snowy ground', 'muddy ground', and 'snow patch'. The quality is good, and it represents a type of terrain relevant for physics simulations (e.g., friction, collision)." } }, "ca396ba4973d48a0bad937459be66426": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a paved surface with a herringbone pattern, not snow or mud." } }, "cb67aa1b701b4f2d993982ad32239b81": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and faint. It doesn't clearly depict snow, mud, or any related concept in a recognizable way suitable for training data or physics simulation." } }, "cb9210e705d040d79a61e40c51c1cae4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of snow, which falls under the 'snow patch' or 'snowy surface' terms within the 'snow_and_mud' class. The quality is acceptable." } }, "cbd2bfb51f47463880a65e96fc5df46c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely faint and too bright, making it very difficult to discern any clear object or texture. It does not clearly depict snow or mud." } }, "cca92aee71f34b52af361cc68e9418bb": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows tires, not snow or mud." } }, "ccc6b8db791544319c4f40e1575cd715": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a generic terrain model with what appears to be rock, grass, and possibly dirt textures, but it does not clearly depict snow or mud, which are the defining characteristics of the requested class." } }, "ccf65abc89194007bf4fe4de27f717a0": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy terrain patch, which fits the 'snow_and_mud' class (specifically 'snowy terrain', 'snow patch', 'snowy surface'). The quality is good, and this type of terrain model is commonly used in game development and relevant for physics interactions (e.g., character movement, object collision)." } }, "ce02d2ba1f4d4323af2e64b143e55812": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of wood or driftwood, not snow or mud. It does not belong to the requested class 'snow_and_mud'." } }, "ce25041d56394aa19da32e411df16c18": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized floating island with grass, rock, and water, not snow or mud." } }, "ce6c6af8eec04c7f97044891cd1cc9c7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very low-detail, untextured patch of ground. It does not clearly depict snow or mud; the texture and color are too simplistic and lack the characteristic features of either material (e.g., wetness, granularity, snow-like texture)." } }, "cf10898212014441a73282caa5d9e800": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor, with large black areas and unclear textures. The representation of snow (the white cones) is highly stylized and unrealistic, not clearly depicting any of the listed snow types. It's difficult to determine if the darker area represents mud. Overall, the image does not clearly depict the 'snow_and_mud' class in a useful or realistic way for training or physics simulation." } }, "cfd3d3e0ade248c5bca9e6b54b1cc1e3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (deer, structure, trees) on a snowy ground, not just the snow itself. The representation of snow is also very stylized and lacks detail, making it unsuitable for learning physics parameters." } }, "d02db2af08dd42bcb38eb29a7b7a1316": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a thin vertical object, possibly a stick or pole, not snow or mud or any related terrain/substance." } }, "d055f30b25bf4826aa44b73d6e868886": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (snowy ground, tree stump, wooden walkway, markers) rather than cleanly depicting just snow or mud." } }, "d2490859ff444e9b858034dff715a679": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a vehicle (tractor/loader), not just snow or mud. While there is snow present, the primary focus is not on the snow/mud class itself, violating the 'cleanly ONE SINGLE OBJECT' rule." } }, "d3be01490cbf41bcbf4daf37b3278f78": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object or texture related to snow or mud." } }, "d41726a4aff64dab83bd860aea49570b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a complex scene with multiple elements (trees, snow, earth layers, rock) rather than focusing cleanly on snow or mud as a primary object or surface material. While snow is present, it's part of a larger terrain chunk, making it unsuitable for learning the specific physics properties of just snow or mud." } }, "d4a0f6cf021e46569ccc0b8eb6b7c4f8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman, which is a constructed object made of snow. While it uses snow, it does not represent the class 'snow_and_mud' in the intended context of natural terrain, patches, or material properties for physics simulation (like snowy ground, mud puddle, snowdrift). The focus is on the material itself, not objects built from it." } }, "d4c7890990c54d028e5417d9549023fe": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of snow, which fits the class, but it also prominently features a large rock and a red stain (possibly blood) on the snow. This violates the requirement of depicting cleanly ONE SINGLE OBJECT class, as the rock is a significant element not belonging to the 'snow_and_mud' category." } }, "d5d4afbc8d9f419c8680ba3be8e1471e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains abstract pink shapes that do not resemble snow, mud, or any related terrain or features described in the class list." } }, "d6f6fb4341f64ee1abe0974d350b0d32": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground, which fits within the 'snow_and_mud' class (specifically 'snowy ground', 'packed snow', 'snowy surface'). The quality is good, and it represents a surface type relevant for physics simulation (e.g., interaction with characters or objects)." } }, "d777e65f3adb4a7fa1dba5f455847953": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows abstract green geometric shapes and does not depict snow, mud, or any related terrain type." } }, "d7a6cde33a304dc4ba3a7b38b7c5b844": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict snow, mud, or any related object. It lacks any visual information or texture." } }, "d87fd353cf604345967156ee3679c5b2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy and muddy ground, which falls under the requested class 'snow_and_mud'. The quality is good, and it represents a surface type relevant for physics simulation (e.g., interaction with characters or vehicles)." } }, "d9011ff17db3485b8ecbab74af463538": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent object (a tire) that does not belong to the 'snow_and_mud' class, violating the requirement for images depicting only a single object from the target class." } }, "d91bab62bfe4480dbce9fbb3371fb038": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a shipping container, with only a layer of snow on top. It does not cleanly represent an object solely belonging to the 'snow_and_mud' class (like a snowdrift, mud puddle, or snowy terrain patch)." } }, "d9e44e1d21f4484fb8fb3d4a6dbb945b": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a snowy landscape with trees, a building, and ice) rather than focusing solely on snow or mud as a material or distinct object. We need images that cleanly depict the target class for physics simulation training." } }, "da124c4dad764edbbcb3d02fae3ece73": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of mud and snow, but it includes an unnatural green pattern ('JB') on the surface, which is not representative of the requested class and detracts from the depiction of natural snow and mud terrain." } }, "db68f114feac4f9d801a2c4de0b8ba39": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rocky or dry landscape from an aerial view. While there might be tiny patches of white that could potentially be snow, it is not clearly identifiable as snow or mud, and these elements are not the main focus of the image. The image does not clearly represent the target class 'snow_and_mud'." } }, "db9b47537a3d4f0e9b0a591af2ed06f8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snowplow truck, which is a vehicle, not snow or mud itself. It does not belong to the requested class 'snow_and_mud'." } }, "dd493efebc6840a4acfeb2656d4f4778": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a texture representing packed snow or ice, which falls under the 'snow_and_mud' class. While the spherical shape is unusual for snow/mud in a natural context, the texture itself is relevant for material properties in physics simulation (e.g., friction, deformation characteristics of snow)." } }, "e0c4ee3a26c447099059bab87ce6b37e": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized landscape section with what appears to be water and dry land/sand, not clearly snow or mud. The colors and textures do not match the target class." } }, "e13c034c465040f6bb960569e5352ccd": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a snowman on a cart. While the snowman is made of snow, the image depicts a specific composite object rather than the snow material itself or a natural snow formation (like a snowdrift or snowy ground) which is more suitable for learning general physics parameters for the 'snow_and_mud' class. Additionally, the cart is an unrelated object." } }, "e495669738e5439aae688465c79719a3": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy terrain/landscape, which belongs to the requested class. The quality is good, and it represents a type of surface relevant for physics simulation in a game environment (e.g., interaction with snow)." } }, "e5ddc3c6947e498daf7260b7caa19737": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a snow blower machine, not snow or mud itself, which are the target objects for the class 'snow_and_mud'." } }, "e5fb2cda96cf4a8ea5b04faef4239839": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks more like an icicle or a shard of dark ice/rock rather than snow or mud in its typical forms (ground cover, patch, puddle, slush)." } }, "e6e371c9e76d455ab3f13293a9132245": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a miniature landscape scene with buildings, trees, and rocks. While there are some white patches that might represent snow, it does not clearly depict snow or mud as the primary object. It's a complex scene with multiple elements, not focused on the target class for physics simulation." } }, "e78e91b2ca494e419c05c3384c0a5b17": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground with both snow/mud elements and significant vegetation (small plants/grass). While it contains elements of the target class, the presence of prominent vegetation makes it not a clean depiction of 'snow_and_mud' alone, potentially confusing the physics learning process for the ground material." } }, "e79bbff1059d42929807b943d8feca86": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a landscape with roads, grass, and possibly some small patches of snow, but it does not clearly depict snow or mud as the primary subject. It contains too many other elements and the view is too distant to be useful for analyzing the properties of snow or mud." } }, "e7b51713bc4843b7b464c3b8ee144385": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone snow or mud. It lacks any detail or texture." } }, "e7e48bb9f3684895ba572fa3e90953f6": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify any object, let alone determine if it belongs to the snow_and_mud class. The quality is too low for training." } }, "e7f6ba4c4bb84e669d6849971bc114d9": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a muddy path or muddy terrain, which belongs to the requested class 'snow_and_mud'. The quality is good, and while it includes some vegetation alongside the mud, this is a natural and common combination for terrain assets. It is suitable for physics simulation purposes." } }, "e848ed302a5a4c658d8ddbe5e8b7c977": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy terrain, which falls under the requested class 'snow_and_mud'. The quality is good, and terrain surfaces are relevant for physics simulations in games." } }, "e8b472e7d9574ac7a710e909f5249449": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its texture. It does not provide useful visual information for the 'snow_and_mud' class." } }, "e92d0f593d5c4e99a5ab82ff84766ad7": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree covered in snow, not snow or mud as the primary object. The class 'snow_and_mud' is intended for depictions of snow/mud ground cover, patches, puddles, landscapes, etc., not other objects covered in snow." } }, "e9333c5401eb462e9051ea8e1d1bbcf5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and appears to be a silhouette of a building or structure, not snow or mud." } }, "ea15d1e547044e619dc6a369c036173d": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts cobblestone pavement sections, not snow or mud." } }, "ea1b9667011142199a5b031dea487336": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground, potentially dirty snow or slush, which falls under the requested class 'snow_and_mud'. The quality is acceptable, and this type of terrain surface is relevant for physics simulation (e.g., friction, deformation)." } }, "ea5f0208fbdf4db1b205fbcd8df0fff6": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a clump of material that looks more like a rock or asphalt mixed with dirt rather than clearly depicting snow or mud as described in the class list (e.g., snowy ground, muddy terrain, snow patch, mud puddle)." } }, "eab25631a2194568b19cb686de9a1749": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract structure on a generic ground texture. The ground texture does not clearly represent snow or mud, and the primary focus is on the structure, not the ground surface itself." } }, "eb58045684cc4b289018849b2ed59ca2": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a section of a paved road, which does not belong to the 'snow_and_mud' class." } }, "ecf01816ad9c4bd1a1d9b62f541981a4": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone snow or mud." } }, "eda4119cbdb7403999c0180c12534f81": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and washed out, making it impossible to identify any object or texture. It does not depict snow or mud clearly, and the quality is extremely low." } }, "ee651d5956a64441ba0825e9b2838629": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat surface that looks like dry earth or rock, not snow or mud. It doesn't fit the description of the 'snow_and_mud' class." } }, "f1da0c0806a74afeba3ac81c07c06795": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground, but the texture and color look more like dry sand or light soil rather than clearly identifiable snow or mud. It lacks the characteristic visual features of either snow (white, crystalline, packed) or mud (dark, wet, viscous)." } }, "f3595885307d46b9a098e1ecd46fd82f": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground, which belongs to the 'snow_and_mud' class. The quality is good, and it represents a surface relevant for physics simulation (e.g., interaction with characters or vehicles)." } }, "f3d72da3e7a9458f8bea407bc01d5cab": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts buildings covered in snow, not snow or mud as the main, isolated subject. It shows a complex scene rather than a focused representation of snowy ground or a snow patch suitable for learning specific physics properties of snow itself." } }, "f441145da68f489d8c3c5bd32119bf7a": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict snow, mud, or any related object or terrain. It is too bright and lacks any usable content for the specified class." } }, "f62f4e46bfd94f428a9b12145b206d10": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone snow or mud." } }, "f67b976438774533be86316c0dfc16c1": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a chunk of material that appears to be a mixture of snow and mud, or dirty snow, which fits the requested class. The quality is good and it represents a distinct object suitable for simulation." } }, "f71d1649b5774fdfa245777b4250f626": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a small, isolated chunk that might be dried mud or dirty snow, but it's ambiguous and doesn't clearly represent any of the typical forms of snow or mud listed (like terrain, patches, puddles). It looks more like a fragment or debris and isn't suitable for representing the broader concept of snow/mud surfaces or volumes for physics simulation." } }, "f89bda043e744e488467766e5a43a5d5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of muddy ground with puddles, which fits the 'mud', 'muddy ground', 'mud puddle', and 'muddy terrain' descriptions within the 'snow_and_mud' class. The quality is good and it represents a surface type relevant for physics simulation (e.g., interaction with characters/vehicles)." } }, "f973f9c0b0fc4bdea8d99d137bead22c": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy terrain, which falls under the requested class 'snow_and_mud'. The quality is good, and it represents a surface relevant for physics simulation (e.g., ground interaction)." } }, "fa4bfdc475c94bd280085878fd628214": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a concrete barrier with some moss and dirt, not snow or mud which are the target classes." } }, "fbdc02c6299444b4a9283a922bf9d828": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a muddy ground texture, which falls under the requested 'snow_and_mud' class. The quality is good, and it represents a surface relevant for physics simulations." } }, "fc507ce330d842dc814dbed2e2278773": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, blocky, geometric object that does not resemble snow, mud, or any related terrain feature listed in the class description. It is entirely unrelated to the target class." } }, "fca1d21541724148a38f7636777394fa": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows fragmented pieces that vaguely resemble dirty snow or debris, but it does not clearly depict any recognizable object from the 'snow_and_mud' class list (like a patch of snow, muddy ground, snowdrift, etc.). The object is too abstract and fragmented to be useful for training." } }, "fcc2b660776b42e882b46316854f6e80": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a snowy terrain/landscape, which falls under the requested class 'snow_and_mud'. The quality is acceptable for training data, and snowy surfaces are relevant for physics simulations (e.g., friction, character movement)." } }, "fd77149185de4ab99ab360df3e68d692": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a purple cube with a starry texture, which does not represent snow or mud." } }, "fd7b04286acb45f39109ce74369693c5": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of muddy ground with some moss and leaves, which falls under the 'muddy ground' or 'muddy terrain' categories within the 'snow_and_mud' class. The quality is acceptable and represents a surface relevant for physics simulation." } }, "fe08dda7769249459877130bf1126760": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of snowy ground with footprints, which falls under the 'snow_and_mud' class (specifically 'snow patch', 'snowy ground'). The quality is good, and it represents a surface relevant for physics simulation (e.g., deformation, friction)." } }, "ffb4c85fa83341179751e110ec453be8": { "obj_class": "snow_and_mud", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a low-poly, abstract 3D model that does not resemble snow, mud, or any related terrain type. The colors and textures are unrealistic and do not provide useful information for learning the physical properties of snow or mud." } }, "0023687e90394c3e97ab19b0160cafb3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower in a vase, which is not in the list of classes provided (tree, ficus, fern). Additionally, the presence of the vase makes it unsuitable for physics simulations related to natural plant behavior." } }, "0039da3a9062443a8cd389e6f276efe5": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized fern, but its low-poly, blocky appearance makes it unsuitable for realistic physics simulation. It doesn't accurately represent the natural structure and flexibility of a fern." } }, "005907b4ab8c4b5c89a39680053fc383": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple objects of different classes (e.g., possibly rocks and shrubs) in a stylized, low-poly manner. This makes it difficult to isolate a single object for physics simulation training. Additionally, the low-poly style might not accurately represent the physical properties needed for realistic simulations." } }, "011dae6c81ba4f0ea2903a487c9feefe": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cactus, which is not one of the specified classes (tree, ficus, fern). It also includes a pot, which is not part of the plant itself." } }, "013144890fc24115937487781e8d3953": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a shrub, which falls under the broader category of 'tree' as defined in the prompt. The image quality is acceptable, and the object is isolated on a white background, making it suitable for physics simulation training data." } }, "01692007a83b483dac9b30732a09d621": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a ficus in a pot, which is a single object and suitable for physics simulation." } }, "04e29bcb52194fc9abb7e5bc0bdcb619": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a shrub, bush, or hedge. The shape is too abstract and the rendering quality is low, making it unsuitable for physics simulation training data." } }, "063592d61b744c1d9c328d5ab12ddfea": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a hedge or bush with a fence behind it. It doesn't clearly depict a single object of the class tree, ficus, or fern. Also, the presence of the fence makes it unsuitable for learning physics parameters of the plant itself." } }, "0805628fe5444043881448953e193a0a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the specified classes. The image is clear and of good quality. It is suitable for use in a physics simulation to study the tree's behavior in different conditions." } }, "08889596bcba4a2ab09f3533d7cf14f3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. The image quality is also low and the object is not clearly defined." } }, "0996166eb4e0466ab06a706c3a012202": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a decorative box, which does not belong to any of the specified classes (tree, ficus, fern) or their related objects. It's not suitable for training data related to vegetation or physics simulation of such objects." } }, "09cc87a006f941f1911098ba26e73d88": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of a wooden fence, which is not in the list of accepted classes (tree, ficus, fern, shrub, bush, hedge, ornamental bush, garden shrub, boxwood, flowering bush, evergreen shrub, decorative plant, landscaping shrub)." } }, "09d718b3172f46198f107f294c94b3fb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the objects are not clearly depicted." } }, "0be82a8f365b45dcbd25c6e395b4ec5d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any object of the specified classes. It appears to be a landscape but lacks sufficient detail and clarity." } }, "0f33447e2c3246349a8cffbc5e5ff493": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small plant or root structure, which doesn't clearly fall into the categories of tree, ficus, or fern. It's also not clear enough to be used for physics simulation." } }, "0fb271953d4b4be0bd0b2d4c19bf10a7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a ficus plant in a pot. It is of good quality and suitable for use in a physics simulation." } }, "0ff695acb88f46b2b0e9182a20d8c49b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the target classes. The image quality is good, and the fern is isolated on a white background." } }, "10ceca8a997e4e548a7b100943fef552": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub or hedge, which falls under the specified classes (tree, ficus, fern) due to the inclusion of objects like 'shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub'. The image is clear and shows a single object, making it suitable for physics simulation purposes." } }, "12c22681f71a4c9e93000ccf98aa81bf": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (shrub and tree stump) and the quality is not high enough." } }, "12f0afa5f24249fdb53e41226547f028": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, not a full tree. It is also of low quality." } }, "148588cbcddc4f649d1faf245b8a2c4c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable as any of the specified classes (tree, ficus, fern). It's also unclear what the object is supposed to be, making it unsuitable for physics simulation training data." } }, "14d161228b784657901a65b2d20080eb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flowering bush, which fits the criteria of being a 'shrub' or 'flowering bush' and is suitable for physics simulation." } }, "153abfb0da7847f1b92d7d78896e44b9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a building structure." } }, "168c4d04113a46e7b1cd5fa0f431e536": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized tree, which falls under the 'tree' class. It is a single object and of reasonable quality for training data." } }, "17aa9084fc0f44c29698632956b17705": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a group of trees clustered together, rather than a single, distinct tree. This makes it unsuitable for training a physics simulation model that requires individual objects." } }, "18d6f92d106e4cf8b63dc222a261f1dd": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, and the object is not clearly identifiable as a tree, ficus, or fern. The shape is also strange and doesn't resemble a typical plant." } }, "197497f04a1344bab6eb59fff69b57ef": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple fern-like objects in a sequence, rather than a single, clear depiction of a fern. This is not suitable for training data where we need to isolate the physics of a single object." } }, "19ff40043a4a438fb98fcc2cee47b943": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it is difficult to identify the object class. The image quality is poor." } }, "1ae24177f97e4ceeb83ab13b642250c9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a fern-like object sitting on a chair. It doesn't clearly depict a single object from the specified classes (tree, ficus, fern) in isolation. The presence of the chair is also a distraction." } }, "1d103301a681429f861f92c96aa7f260": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree, a cactus, and a mushroom. It should only contain one object." } }, "1d5f7ce5e4234cfb8dee85e96699c399": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure with plants and a tree root, but it's not a clear depiction of a single tree, ficus, or fern. The image quality is also not ideal, and it contains other elements besides the plants." } }, "1dd198d6a5cb4aabb2ec666272c996a0": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree clearly and cleanly. It is a simple model, but suitable for physics simulation, such as swaying in the wind. The image quality is good." } }, "1f0bfb8e2f494f5181d6b8d85f0e51fd": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any object from the specified classes (tree, ficus, fern). The quality is too low for training data." } }, "1f82922b6e674cc58a20cecc46122457": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single, clearly defined one. We need images of individual trees for physics simulation." } }, "1f97a72a719b44539185e91314534e13": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple objects clumped together, not a single, distinct object from the specified classes (tree, ficus, fern, or related shrubs/bushes). The low-poly style makes it difficult to discern clear plant structures suitable for physics simulation." } }, "200371b56e8f4c888cf6199a87f5f7ae": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which is suitable for physics simulation in a video game. The image quality is acceptable, and the object is clearly visible." } }, "211bd891b1684e40b53b0082638a3320": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "221edc8638354046889e2a7e53279fee": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and the quality is good. It is suitable for use in a physics simulation." } }, "22445f33abdb4711be31fcb819d90dd6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not just a single tree, ficus, or fern. It's a collection of different plant models, which is not suitable for training a physics simulation for a single object." } }, "226f87344796493d904940eb389588d2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which falls under the specified classes for the video game development." } }, "23771a0a7466492a8f89fc0a531cb37a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a chest, which is not one of the specified classes (tree, ficus, fern). Therefore, it's inappropriate for the video game development based on the given criteria." } }, "2490f50416894c768ffb3e13b78e3d34": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is not one of the specified classes (tree, ficus, fern)." } }, "24f7e4e5e497465ab45cf759040bfc5e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, and it's difficult to discern the object clearly. Additionally, the object's shape and structure are unclear, making it unsuitable for physics simulation." } }, "256dc6a2728049e88c0063cc78d085d4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and is not a clear depiction of a single tree, ficus, or fern. It shows a garden scene with various plants and structures, making it unsuitable for training a physics simulation model focused on individual plant behavior." } }, "26eb1bc907104fdc94a2688daff25603": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees and other objects, not a single tree in isolation. Also, the image quality is not very good." } }, "2a6d9a302ffe4083a2605154dde64727": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which falls under the specified classes. The image quality is good, and it clearly shows the object. It can be used in a physics simulation." } }, "2c30ea3c0f9f4c10b1a84b7006635546": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object." } }, "2fa12ba0af5442c9af8f9bead1a7d020": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single plant, which appears to be a monstera, and is suitable for use in a physics simulation." } }, "3072e0c9794b44749d52af9cfaa9dee9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a tree-like shrub, suitable for physics simulation in a video game." } }, "308450ecaeaf457184381e38518318f5": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a couch, which does not belong to the classes: tree, ficus, fern." } }, "30c32a446b264ba3b2a0ff3629299ebf": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees) which is not ideal for training a physics simulation model. We want images that depict cleanly ONE SINGLE OBJECT." } }, "3433751f1a0a419c8170b4278144e441": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a succulent in a pot, which is not one of the specified classes (tree, ficus, fern). Also, the pot is included in the image." } }, "34768e7f598242aea0571ed3b8dfae81": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flowering bush, which falls under the class of shrubs and bushes. The image quality is good enough for training data." } }, "35bbae84d63543428155d33ab7b75c19": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub or bush, which falls under the specified classes (tree, ficus, fern) due to the inclusion of 'shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub'." } }, "3b204e1c8fa34183821cf925128f545c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flower, which is not one of the specified classes (tree, ficus, fern). Additionally, the object is a flower in a pot, which is not suitable for physics simulation in the context of the specified classes." } }, "3c8f01764e7d4a19bbafa3f28fc76fd6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects that appear to be low-poly shrubs or bushes. The image depicts multiple objects instead of a single one, and the low-poly nature might not be ideal for accurate physics simulation." } }, "3cb8871228244923832428b124971286": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree clearly and cleanly. It is suitable for use in a physics simulation." } }, "3d4d66d3905c41d2a45b86e539c9513a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a log, which is not one of the specified classes (tree, ficus, fern). Also, the bottom of the log is cut off with a flat surface. This is not a natural looking log." } }, "3d5f9e59d99b4e22a43886ee0bb06c92": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a vase of flowers, which is not one of the specified classes (tree, ficus, fern). Additionally, it's a composite object rather than a single plant, making it unsuitable for the intended physics simulation purposes." } }, "3dacde1a3180439fa1a24be69c03a74b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bush, which falls under the specified classes ['shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub']. It is a single object and suitable for physics simulation." } }, "3dc3bdbea2724a48ad2c843c8a34bb00": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a structural element or frame, and is not relevant to the specified object classes." } }, "3e2f27899d0f46b9b42f25ecca803f1c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not contain tree, ficus, or fern." } }, "3ee280726f1f496e9b2377d43b4cbb2d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is suitable for physics simulation in a video game." } }, "3ffcfb07266246ecb1c2bede163f30d9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, which is one of the classes we need. The image quality is good and the object is isolated." } }, "40abe1e37a244023b4c537c05873c10f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tuft of grass or reeds growing from a colorful, artificial-looking base. It doesn't clearly represent a tree, ficus, or fern. The image quality is adequate, but the object itself is not suitable for physics simulation as it appears stylized and unrealistic." } }, "42cb7fad10ba44ecbc9ae9cf5fdd63b6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the specified classes. The image quality is acceptable, and it shows a single object." } }, "430ffe5bd120436f99c8c83e279dbaab": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It shows a stone basin or fountain." } }, "45b462ad99d34d37a6c36f1a34a65c37": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a potted plant, which includes a pot and a step, in addition to the plant itself. This violates the requirement for a single, clean object depiction." } }, "46b7d192a56e4a0ea12019c8e2b69bb9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, blurry, and the object is not clearly depicted. It also includes the ground, which is not desired." } }, "473f82fc0d8b41849681e45f0071243b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, making it unsuitable for training a physics engine to simulate individual objects. It's a collection of various plants and bushes." } }, "479e71cd9456468d9ee5ab048f4d6f72": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "This image does not depict a tree, ficus, or fern. It appears to be a decorative object or structure." } }, "48f439f047394d76b1625dda20a91dc1": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bush, which is an acceptable object for the class." } }, "4963671e57b741afa71fca7c0a31fbaf": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a variety of plants and a lamppost, making it difficult to isolate a single object for physics simulation. The presence of multiple objects and the lamppost detract from the focus on a single plant." } }, "4aea102321984910bd24595d1da4fe71": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoonish plant, which doesn't fall into the specified classes (tree, ficus, fern) or their related objects. It is also not suitable for physics simulation due to its unrealistic nature." } }, "4b70b4e15405425fb74e259c3fe5c663": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It looks like a stylized, abstract plant with unusual colors, making it unsuitable for physics simulation or as training data for realistic plant behavior." } }, "4bc9f032c35e4df8a2413d4d2a3ec3d6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a shrub or bush growing against a wall, which is not ideal for physics simulation as it's not a standalone object. Also, the image quality is not great, and the object is not clearly isolated." } }, "4bccbcce38324c908cd1924e20972b16": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a shrub, which is a good candidate for physics simulation in a video game." } }, "4c4cfc7a848a45ada6e5facf2280ac3a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a potted plant, which includes both the plant and the pot. We want images that depict only the plant itself for physics simulation purposes. Additionally, the stylized, cartoonish nature of the model might not be ideal for accurately determining physical parameters." } }, "4c4d02ccfe6c40418caed97d60c47f0b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree but it's part of a larger scene including water and other objects. It doesn't cleanly depict a single tree object." } }, "4dc1f06ac97844f2bf03a92ec22e6a0c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "4e6869ec723a4f45b54487fda1e2ab4a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a collection of trees on a landscape rather than a single, distinct tree. This makes it unsuitable for training a physics simulation model focused on individual object behavior." } }, "4e6f80693a1d474482e39d1dcf95a561": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern). The object in the image is unclear and does not resemble any of the plant-related objects." } }, "4e99deccfa8b4cb29f98434de147ea1f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to show a structure with some plants growing on the side, but the main object is not clearly one of the specified classes." } }, "4f4c1845380048dca015ed6589a52f46": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoonish, stylized tree branch, which is not representative of the natural objects we need for physics simulation. It's also just a branch, not a tree." } }, "500b4e919f134717a2571a4342302e35": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly depicted. Additionally, the reflection makes it difficult to discern the actual shape and form of the object, which is necessary for physics simulation." } }, "506f25501e6f47be81d174a5943dbafe": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree made of blocks, which is not realistic and not suitable for physics simulation." } }, "50a50c35841044a38cf18a504b290e5c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which falls under the specified classes. It's also a clear, high-quality image suitable for use in a physics simulation." } }, "51fda98f303f4495a7a8c16d973debb0": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It's hard to distinguish the object clearly. The object is also in a container, which is not ideal for physics simulation." } }, "51fe39644bfe4d0eb3301621cde9adb5": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts flowers in a vase, which doesn't fall under the specified classes (tree, ficus, fern) or their related objects. Additionally, the presence of the vase makes it unsuitable for physics simulation as it is not a natural object." } }, "535718375f3e49059543a2c8ed7844a6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple objects (two bushes) and also includes a path. It's not a clean depiction of a single object for physics simulation purposes." } }, "55360772fb4346d5a58ab6fa5e99bcb8": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plant in a panda-shaped pot. The pot is distracting and makes it difficult to focus on the plant itself. The image doesn't clearly depict a single object from the specified classes (tree, ficus, fern) in a way suitable for physics simulation." } }, "565e4ef4358b43a0aac9a123089a4d4a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as any of the specified classes. The lighting is also not ideal." } }, "597f2772867c4efc843e0d71d5e9ba0a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object clearly. It is not suitable for training data." } }, "5a48baa2943b44c3826bcf7ade1074e3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple bushes on a sandy surface, not a single, clearly defined object. Also, the image quality is not very high." } }, "5a4b30804575482abedd72cc9a2cb89e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-poly, stylized shrub or bush, which falls under the specified classes. However, the image quality is not high enough for training data. The object's polygonal structure is too simplistic, and the base underneath the shrub is distracting. The model is too abstract to be useful for physics simulation." } }, "5c27094f8e1a42cbac2a5ae7abb4d684": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too poor. The object is not clearly depicted and the image appears blurry and distorted. It's hard to identify the object as a tree or any other plant with certainty." } }, "5c986e6119c1480b94a4052e57f2dc60": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rocks, not the specified classes (tree, ficus, fern)." } }, "5cae3fbe60ba4a79b83ed12e0c26db44": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "This image depicts a statue of a woman, not a tree, ficus, or fern." } }, "5f90dc0f7e7443ad8d8bff71e419f9de": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-poly, abstract representation that doesn't clearly resemble any of the specified plant classes (tree, ficus, fern). The shape is too geometric and lacks the natural details needed for realistic physics simulation." } }, "5fab665f13a94e68828fee25de9d87f6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a simple, stylized tree, which is suitable for use in a physics simulation within a video game. It clearly depicts the object class 'tree' and is of acceptable quality." } }, "605d070ff4984b5a867d3b2c3aa606be": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a ficus in a pot, which is suitable for physics simulation (e.g., how the leaves sway or how the plant falls). The image quality is also good." } }, "617f53a453ff4eb3be95d0e5bbe6a882": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a hedge with a fence and a concrete base, which is not ideal for physics simulation of a single object. The object is not clearly depicted." } }, "6433df4aee6944b68769f8f407683205": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a decorative cow figurine, which is not related to the specified classes (tree, ficus, fern) or their associated objects. Additionally, it is not suitable for physics simulation as it is a static object." } }, "66ef12e0b3814243be945b8dcdae2a81": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict any of the specified classes (tree, ficus, fern). It looks more like a stylized rock or a blob of vegetation, but not a distinct plant." } }, "690902d29c5e4a84a12512986965deeb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is not clearly depicted." } }, "6963628e0e174a5299574bdf7392bfa3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fairy, which is not related to the classes: tree, ficus, fern. The image is also not suitable for physics simulation." } }, "69643553cb794eec90a5d633ddbb504d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase, which does not belong to the classes: tree, ficus, fern." } }, "6bbecf3906e94b9ab40ddb7870772ecb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It shows a vehicle." } }, "6c80989580cc4373967272a9ce4b9155": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object. This violates the requirement for clean, single-object images for physics simulation training data." } }, "6c972eab0871477ab96c73a7666281f7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and the quality is good enough for training. It can be used in a physics simulation." } }, "6df4edd22c9a4fb89b50e36c3257352c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the specified classes. The image quality is good, and it shows a single object, making it suitable for physics simulation in a video game." } }, "6e16ec47d7c246a69efffb9e857165ed": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush, which is a suitable object for physics simulation in a video game. The image quality is acceptable." } }, "6f99d00e983b416887b6952bc50cfcdb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "705b593a2b1f4c2dba20d68528400e35": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. The image quality is good, and the object is well-defined. It is suitable for use in a physics simulation." } }, "70f3b3f5d7944922b7fa835f3e2fa279": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a potted plant, which does not clearly fall into the specified categories (tree, ficus, fern). Furthermore, the presence of the pot might interfere with the physics simulation of the plant itself." } }, "71d48ce96d304e09bd2a3870e2058cc2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a shrub, which is suitable for physics simulations." } }, "7365d3fc0eb148028c751364dd172952": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a plant that could be categorized as a shrub or bush, which are acceptable objects. The image quality is good, and the object is well-defined against the white background." } }, "74aad17aeeb24558aa80d5e39041342c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a farm with various crops, not a single tree, ficus, or fern. It's not suitable for the specified classes and physics simulation purposes." } }, "765a6a546d7545f8b9a83cc7a17a9199": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts flowers, which are not in the specified classes (tree, ficus, fern)." } }, "766ce7819fef4e96b74795e9b23a4453": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase, which does not belong to the specified classes (tree, ficus, fern). Therefore, it is inappropriate for the video game development based on the given criteria." } }, "76e4229e55774e389b1c62b1c47eba93": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and the tree is rendered on a textured square, which is not ideal for a physics simulation where we want to isolate the tree's properties." } }, "7a0b0d9f542847a4bd01ccc3ecc915c1": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to clearly identify the object as a ficus or any other plant. The quality is too low for use in training data." } }, "7a0f2bf2982c4ff8bacc67856fdbfae2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which is an appropriate object for physics simulation in a video game. The image quality is good, and the object is clearly visible." } }, "7a35202825b446879e9a208e73ba18f4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub or hedge, which falls under the specified classes. It's a clear, isolated image suitable for physics simulation training data." } }, "7baa20d883af4e8d88083f4845460a63": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a real-world object. It is a model of branches without leaves, which would not be useful for physics simulation of a tree or shrub." } }, "7ccbbb3307004ad18bed624e356c5975": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush, which falls under the specified classes (tree, ficus, fern) because it can be considered a shrub, bush, hedge, ornamental bush, garden shrub, boxwood, flowering bush, evergreen shrub, decorative plant, or landscaping shrub. It is also a single object on a white background, making it suitable for training data." } }, "7ce47a188e40428eb77120dd8e22b6d2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and the object is not clearly depicted. There are also other objects in the image." } }, "7e212bb93c7e44daa9f6260b5e3397df": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as a tree, ficus, or fern. It looks more like a pile of roots or driftwood. This would not be suitable for training data for physics simulation." } }, "804cb28b78a446e398a0c066d42c5193": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and the object is not clearly depicted. It's hard to tell what the object is." } }, "815990fd251b417880baf1cb70c1a482": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not just one. Additionally, the objects are small and not very clear, making it difficult to use for physics simulation training data." } }, "8194e41e80af4d3b826db435f91a3fc9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and contains other objects like a chair and a table in addition to the ficus." } }, "82afd74e357d43128aabb767c3c51e19": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too simplistic and stylized. It doesn't accurately represent a tree or any of the listed shrub types for physics simulation purposes. The geometric shapes are not realistic." } }, "82d74cd459d345a89189a39a8acb9bbd": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects of the same class in a single frame. It doesn't depict a single, clear object for physics simulation. Also the image quality is low." } }, "82f07d8f6e664c349b38067f510340f7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree clearly and cleanly against a white background, making it suitable for physics simulation training data." } }, "82f38e7645e540a38eab343728d03747": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts flowers in a vase, which is not relevant to the specified classes: tree, ficus, or fern. Additionally, it includes other objects (vase, coaster) which is not desired." } }, "835707e37926449cac26a27fe54efbba": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single fern clearly, which is suitable for physics simulation in a video game." } }, "83b67f452fb64414bcbc8416dccf17a1": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the tree is on an island which is not a typical tree and is not useful for physics simulation." } }, "842537681a4644c18d1ecb0220d022b9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict a tree, ficus, or fern. It's a simple geometric shape with no discernible features that would allow it to be used for physics simulation or video game development." } }, "8465b563c521438194bb914d9eb9c2c6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, and the object is not clearly defined. The object appears to be a small tree or shrub, but the details are blurry and the edges are poorly defined. This would not be suitable for training a physics simulation." } }, "84d7497e1e354f55a9517552f342f379": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower in a pot, not a tree, ficus, or fern. It's also an indoor plant, which is not suitable for the physics simulation of outdoor objects like trees swaying in the wind." } }, "85eeb737fc4548ef8e905fd040dac136": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a vase with flowers. The classes are tree, ficus, fern. Therefore, the image is not appropriate." } }, "8a3539d2bbde4405b1bf8210520d7b8c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of debris with some plants growing on it, not a single, clear object belonging to the classes tree, ficus, or fern. The image quality is also low, and the object is not suitable for physics simulation." } }, "8e8fd14f7f1546b9bcf2f5cfee5c116c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game. The image quality is also good." } }, "8ef7f017c9c049e1a8f478171e2ad9ba": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a strange, stylized object that doesn't resemble any of the specified plant classes (tree, ficus, fern, shrub, etc.). It appears to be an abstract or fantasy object, not a realistic representation of vegetation suitable for physics simulation in a video game." } }, "8f2b899438864e3f87d3661e767ea0b9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts flowers in a vase, which does not belong to the specified classes (tree, ficus, fern). The object is not appropriate for the video game development." } }, "8f55afd3fecd42cb8beb0925afb9efc8": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and does not clearly depict the object class. Also, the image contains other things in addition to the object." } }, "8f753de85b074b11afb09135de9d6e19": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase of flowers on a table, which is not a single object of the classes: tree, ficus, fern. Also, the image contains other things in addition to the object." } }, "8fb7ffc55ffa476d9bc6e8772a503ba6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single one, and the objects are in pots. Also, the image quality is low." } }, "9035fcbba2864d81aa96272abc73da1b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "91c4a4eae92643abafd72b1498cb7a47": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and the object is not clearly identifiable as a tree, ficus, or fern. The object also appears to be sitting on a base, which is not ideal for physics simulation training data." } }, "936adea9d0374c62973a8c0ae96a51d8": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two vases, not any of the specified classes (tree, ficus, fern)." } }, "93ab1e351c2e400e929fc08ce41046e6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees and other objects like a river and land, rather than a single tree. The image is also low quality and the trees are very stylized." } }, "94ffc18ab2e14356be514e97378bf2e4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a plant in a basket. This is not one of the classes (tree, ficus, fern) and the basket is also included in the image. The image is not suitable for physics simulation." } }, "9600e3a2cf0e483b89901502326f816d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict a single object from the specified classes. It also contains other objects, such as a wooden structure." } }, "96505b4abf9c47a7a00f400b286c0e7b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable as a tree, ficus, or fern. Also, the image quality is low." } }, "96643255a11e4b16943d969b0843929d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains multiple bushes and also includes a brick structure, making it unsuitable for training a physics simulation for a single object." } }, "96bfd9a2cb854f239c5b58ead1fb431d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tall, narrow shrub or hedge, which fits the class criteria. The image quality is acceptable for training data, and it shows a single object clearly." } }, "984c645ae9554f96a5047e8ea782d060": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pot, which doesn't fall under the specified classes (tree, ficus, fern) or their related objects. Therefore, it's inappropriate for the video game development in this context." } }, "98e89b7cca9440eca527a1186e585f7f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower, not a tree, ficus, or fern. It also is a voxel-style image, which is not suitable for physics simulation." } }, "996ddcfb900d4e379f95d3e86c822c5e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bush growing on a wooden post. It doesn't cleanly depict ONE SINGLE OBJECT belong to one of the classes." } }, "9a002adc87cf4b2ea0bb7a8359f57030": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the specified classes. The image quality is good, and it shows a single object, making it suitable for training data for physics simulation." } }, "9b75448cecc947b988ad11b910dd9736": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the quality is low." } }, "9ba83c5a60384aecafbd8eba8410baad": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, which is a suitable object for physics simulation in a video game. The image quality is good, and the object is isolated." } }, "9d0d596d2dcd411f859bf58b55f92b23": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, and it's difficult to discern the object clearly. The object is also partially obscured. Therefore, it's not suitable for training a physics simulation model." } }, "9e3e6a01af314537bb290a824ebf8d05": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a shrub, which falls under the specified classes (tree, ficus, fern) due to the inclusion of objects like 'shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub'. The image is clear and depicts a single object, making it suitable for physics simulation learning." } }, "9f4ff68c1d8646c594996b0c82c78670": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image doesn't clearly depict a tree, ficus, or fern. It looks like a simplified, abstract representation of a bush or hedge, but the quality is too low and the shape is too ambiguous to be useful for physics simulation in a video game. It's also too simple and lacks detail." } }, "9fdba8f2dc394711991e8222d95f45eb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fence, not a tree, ficus, or fern." } }, "a082951c398e4c158585851ecdeed7ee": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized tree, which is suitable for physics simulation in a video game environment. The object is clearly defined and isolated." } }, "a1edf1cc093c4c43a6e78275377db050": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The tree is in a pot, which is not a natural setting for physics simulation. Also, the tree is dead." } }, "a36f80984fc24bd8919cb10bc3cc3fa4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object. Also, the image quality is not great (blurry)." } }, "a37ef9334b33442b938d2672a8a4592f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus plant, which is suitable for physics simulation in a video game. The image quality is also good." } }, "a432cd8831134a2c8a8f0576c964d3b6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It shows a box." } }, "a523f7189d1741db86f426945d3d273c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush, which falls under the specified classes (shrub, bush, hedge, ornamental bush, garden shrub, boxwood, flowering bush, evergreen shrub, decorative plant, landscaping shrub). The image quality is acceptable for training data, and it shows a single object clearly." } }, "a59e44e0fbc448efa632655418b16185": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "This image doesn't depict any of the specified classes (tree, ficus, fern) or related objects. It appears to be a striped rectangular object, which is not relevant for the video game development data collection focused on vegetation." } }, "a6833aa6f18246eb9961f74806aa8341": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern-like plant clearly against a white background, making it suitable for training data. It's a single object and could be used in a physics simulation." } }, "a762fe3acd3846a8a7ddb5040f6aa5b7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a potted plant with flowers, which doesn't fall under the specified classes (tree, ficus, fern) or their related objects. Additionally, the presence of the pot and the paper underneath makes it less suitable for physics simulation of a natural object." } }, "a79089ec4f9b46f1ab25d04041da42e7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict any of the specified plant classes (tree, ficus, fern). It's a low-poly shape with no discernible features." } }, "a83fd7049a784ca6bc0095e7323451d0": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a shrub or bush, which falls under the provided class. It's a single object, and the image quality is sufficient for use in a physics simulation for game development." } }, "a8535b6bfb03499388ff16e918790c34": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects in a pot, including a tree branch, succulents, and other decorative elements. It is not a single, clear depiction of a tree, ficus, or fern, which are the target classes. Additionally, the presence of the pot and multiple objects makes it unsuitable for physics simulation purposes." } }, "aae3a509b9d541f890fb69b913822679": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus in a pot, which is acceptable as a single object for physics simulation. The image quality is good." } }, "aaff18d0d6ef44c1bc0a58d0fb37fc09": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plant with flowers and berries, which doesn't fall under the specified classes (tree, ficus, fern). It is also not a shrub, bush, or hedge." } }, "ac14cd25d84948428e1ad0d193cc86be": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a plant in a pot, which can be considered an ornamental bush or shrub. The image quality is good, and it could be used for physics simulation (e.g., swaying in the wind)." } }, "acb337dd8f5e41beba654111e3f2475a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and it's suitable for physics simulation in a video game." } }, "acc6c43913864ace8d5942d65417ab35": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly depicted. The image quality is low." } }, "b01e5d821a104c4aab37b9bccc5e2f8b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, which is one of the classes we need. It's a simple model, but suitable for physics simulation as it represents a single object." } }, "b1c199d5b5364e538df04256fb4adda6": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object class is not clearly depicted. It's difficult to determine if it's a tree or a shrub." } }, "b321e9a248ab4e21a01a10a2bdc3debc": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush or shrub, which falls under the specified classes (tree, ficus, fern) as it's related to objects like 'shrub', 'bush', 'hedge', etc. The image quality is good, and it shows a single object clearly, making it suitable for training data." } }, "b4016ed1c4da41dfa0e73aba4d7afe15": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and low quality to be used for training physics simulations. It's hard to tell what kind of plant it is, and the low-poly rendering doesn't provide enough detail for realistic physics modeling." } }, "b708719dc8f6426ab14bb2228cf63e94": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus clearly and is of good quality. It is suitable for use in a physics simulation." } }, "b8801945ad2940e885809cced6bd829b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. The image quality is good, and the tree is isolated against a white background." } }, "b8fa56ee6c0a45c9b7f9161b65dd3432": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "bb2730b767c04826977f6ecf2f6c28f2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a grape vine, not a tree, ficus, or fern. It is also not one of the acceptable objects listed." } }, "bc4ee9d4413b4cd3b5016bcfd1e9734d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object class is not clearly depicted. It is also difficult to determine if it belongs to one of the specified classes." } }, "bc77ea5218e44f2dbc23b2a4aef0c898": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it's hard to see the details of the plant. It doesn't clearly depict the object class." } }, "bd335c9bb20a4cdc8d41960ea3e9b106": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which falls under the specified classes (tree, ficus, fern) because it includes objects like 'shrub', 'bush', 'hedge', etc. The image is of good quality and clearly shows the object. It is also suitable for physics simulation." } }, "bdd0bc49ab5748a7ae67ee3fb15eeeb4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very simple, low-poly tree. While it clearly represents a tree, the level of detail is too low for realistic physics simulation. It's too abstract to be useful for learning realistic material properties or young modulus for physics simulation." } }, "bef4d49c6f24429db4441e750bcf5fed": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees, ferns, lily pads) clustered together, not a single, clear object. Also, the rendering quality is not ideal for training data." } }, "bf0384533def4f2fb89534b3e7406712": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern-like plant clearly and cleanly. It's suitable for physics simulation as it can be used to simulate wind effects." } }, "bfd1841b23174ab09e82086bccecdd36": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and the object is difficult to identify. It's unclear if it represents a tree or a shrub. Also, the image is blurry." } }, "c0f09c7c12b844f6924814e9bff1dd59": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, which falls under the specified classes and is suitable for physics simulation." } }, "c126dd91a91c4ec58a118e7dd8325615": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern-like plant, which is appropriate for use in a physics simulation for a video game. It is well-lit and the object is clearly visible." } }, "c162474e243640e29ed30069905cf22d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a tree, which is a valid class. It is clear and well-lit, and depicts a single object." } }, "c20291064ae74a63b197577bbe033f9e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the quality is not high enough for training." } }, "c23be007c1a649d9a2082f54af6dec7d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bush, which falls under the specified classes (tree, ficus, fern) as it is similar to 'shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub'. The image quality is good, and the object is isolated on a white background." } }, "c257b444645542da867fce0cf221e52d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly visible." } }, "c2705d640d864a1a8581f7bbbf3ea2f5": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a landscape with multiple objects, not a single tree, ficus, or fern. Therefore, it's not suitable for training data focused on individual objects for physics simulation." } }, "c3931a2bb71242cd9d34fb17a81ddb4b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a statue, which does not belong to the classes: tree, ficus, fern or their subclasses. Therefore, it is not appropriate for the video game development." } }, "c3995f712734431da4fba8f8b529f080": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It's a simple geometric shape, not a realistic representation of any of the specified classes." } }, "c5d97054fa8048249d1515aeaac0ccca": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a stylized representation of a table or other piece of furniture." } }, "c6195b907d11468192f6fde8ec948f08": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern clearly and is suitable for physics simulation." } }, "c644de65331546e0b5559b73852cfc5e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too low to clearly identify the object. It's mostly white and lacks detail, making it unsuitable for training data." } }, "c72bcbf20fb743e88767f074c1ea3107": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the quality is not good enough for training data." } }, "c88faac7729b49e688dbc4d95f182168": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts flowers, not trees, ficus, or ferns." } }, "c93806576ec245cb80917c1703d86e99": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including a fence, plants in pots, and a stone path. It is not a clean depiction of a single object belonging to one of the specified classes (tree, ficus, fern). Also, it is not very clear." } }, "c958daf50aca4463ac258c4aa3029aeb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush with flowers, which is a type of ornamental bush, garden shrub, or flowering bush. The image is clear and well-lit, and it depicts a single object that could be used in a physics simulation." } }, "cb3446657c054fcba0bc7b05ff30b2eb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a plant, which could be considered a shrub or bush, and therefore falls under the specified classes. The image quality is acceptable, and it clearly shows a single object." } }, "cc6a7d8819d8487382a404c7773675f3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single, clear depiction of one of the specified classes. Also the image quality is not great." } }, "cd5864107fa845e38d0c0449d29b73a1": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image doesn't depict any of the specified classes (tree, ficus, fern). It appears to be an abstract, geometric shape or a container, but not a plant or plant-related object. Therefore, it is not appropriate for the intended use case." } }, "cd7e30a339ac4b79ab5b8e7310984c2e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a planter with some vegetation inside, but it's not clearly depicting a tree, ficus, or fern. The focus is more on the planter itself rather than the plant. Also, the vegetation is not easily identifiable as belonging to one of the specified classes." } }, "cf3d0eb04a2444c09dd939fa11063cd5": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three potted plants), whereas we need images depicting a single object for physics simulation training data." } }, "d07fba67607549ec85928213c3ba31c2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, and it is isolated on a white background. The quality is good enough for training data." } }, "d0d5eb345ff7420bb7f5c5239fcec637": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern-like plant. It is isolated and of sufficient quality for use in a physics simulation." } }, "d1376f0f58c84fc595ecd8c8241dd627": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts an ornamental bush in a pot, which falls under the specified classes (tree, ficus, fern) due to the inclusion of objects like 'shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub'. The image quality is acceptable, and it represents a single, well-defined object suitable for physics simulation." } }, "d1d53a92f45240e292240e62acbe2b39": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, and it's suitable for physics simulation in a video game. The model is simple and clean." } }, "d379b28766ba41e6b0e2cded53769a7f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-poly object that does not clearly resemble any of the target classes (tree, ficus, fern). It appears to be a stylized, abstract representation of a plant, and its low quality makes it unsuitable for training a physics simulation." } }, "d4ec3f99c6274465ab32f87ac05458e7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single bush-like object, which falls under the acceptable classes ['shrub', 'bush', 'hedge', 'ornamental bush', 'garden shrub', 'boxwood', 'flowering bush', 'evergreen shrub', 'decorative plant', 'landscaping shrub']. It is well-lit and clearly depicts the object, making it suitable for training data for physics simulation." } }, "d5a513cf861d4fd09d5528f3d582ae6f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree. The quality of the image is good. The tree is isolated from other objects. The tree is likely to be used in a physics simulation." } }, "d6ba112bfece466b8eeec6de88900fd1": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including trees and a fence. We need images that depict only one object class clearly." } }, "d7a561c732174425baf101cdd1d19f54": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vertical garden or a plant stand, which is a complex structure with multiple plants and a frame. It doesn't represent a single, natural object like a tree, ficus, or fern suitable for physics simulation. Also, the image quality is not good." } }, "d84b1d539e024a07a4dfdd1bec2b80ab": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a shelf, which does not belong to the classes: tree, ficus, fern." } }, "d852147a2b3e4e10a9b7b4b0bc8e3403": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. The low-poly style makes it difficult to discern details necessary for physics simulation. Also, the color is not realistic." } }, "d86a83765d424c4695f566a75bad78eb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-poly rendering of an object that could potentially be a bush or shrub. However, the low quality and lack of detail make it difficult to confidently identify it as such. Additionally, the low-poly nature might not be suitable for accurate physics simulation." } }, "d87944f623404d8f9d30f3fdac7deeff": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bush or shrub without leaves, which is not ideal for physics simulation as it lacks the foliage that would significantly impact wind resistance and overall movement. It's also not a clear depiction of a tree, ficus, or fern." } }, "da26989a147c4fe89fe6ffaf8d767bc2": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase of flowers, which does not fall under the specified classes (tree, ficus, fern, or related objects like shrubs or bushes). Additionally, the object is not suitable for physics simulation as it's an artistic representation rather than a realistic depiction." } }, "dc321c078bfc48ba954b154ba6e2e315": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, and the object is not clearly depicted. It's difficult to determine the exact type of plant and its structure for physics simulation." } }, "ddac4359daa94d6ea8e98832870b1e0e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects instead of one. Also, the black portions inside the objects are distracting." } }, "ddd10582e2794d229c4beb3cbdb36a7a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a variety of objects, including plants and furniture, making it unsuitable for training data focused on individual objects like trees, ficus, or ferns. The image is also blurry and low quality." } }, "de0d7475b872435886d4ec87bcb6b02c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub or bush clearly, which falls under the specified classes. It is also suitable for physics simulation." } }, "de98cdfaa7b94de8847c95a27d259d93": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a stylized, abstract object with floral patterns, and it's unclear what it represents." } }, "decdce0779694898b8706c7cd6602ca1": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree, which is one of the specified classes. The image is clear and depicts a single object." } }, "dedda104211a45f8afdb83cea6af8772": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is barely visible." } }, "df2a9680dfe7431fa3a6403646737bc4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, which is a relevant class. The image quality is good, and the object is isolated, making it suitable for physics simulation training data." } }, "df3de8504d654d60a628cc21c78015eb": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and the object is not clearly depicted. It's difficult to discern the exact shape and structure of the tree, making it unsuitable for physics simulation training." } }, "dfe8ca79ac5243b2b9ceb76747035da4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is unclear." } }, "e0c74fc17a3d43a888c1a8751af385bf": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very stylized and low-detail representation of a bush or shrub. It lacks the visual fidelity required for accurate physics simulation. The geometry is too simplistic and doesn't capture the complexity of real-world plants." } }, "e1001602762642cca0ff1651da592cdd": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower, which is not one of the target classes (tree, ficus, fern). Additionally, the pixelated style of the image makes it unsuitable for realistic physics simulation. " } }, "e109272b7ea34cc0a09cbd26e6fdc6d8": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bush-like plant with a simple geometric design, suitable for physics simulation in a game. The object is clearly depicted and isolated." } }, "e1ca9cf863c145fcb63fb63ed7f276b9": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and it is difficult to determine what the object is. It doesn't clearly depict a tree, ficus, or fern. Also, the image is not suitable for physics simulation due to the unclear object representation." } }, "e2c72eea088e49d5a5163f74f42b316d": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be an abstract object with a striped pattern." } }, "e34d842415bf4889882b80ccce091e71": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush, which falls under the specified classes (tree, ficus, fern) as it includes objects like 'shrub', 'bush', 'hedge', etc. The image is of acceptable quality and clearly shows the object." } }, "e444f9176e944a379d8ea5c7ca6ba050": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern clearly and it is of good quality." } }, "e509215301d34356b75e66dbd0d58bf4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It's difficult to clearly identify a single object. It looks like a bush or a hedge, but the quality is too low for training data." } }, "e63dbdcf24f4485eb8b63880a33b4e16": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and contains multiple objects, including a pot and a stone surface, making it unsuitable for training a physics simulation model focused on a single plant object." } }, "e64920197cf64779b050613c53da62c8": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The image quality is good, and it is likely to be used in a physics simulation." } }, "e69b8708f1b145bba43941330353d530": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a garden gnome, which does not belong to any of the specified classes (tree, ficus, fern). Therefore, it is not appropriate for the video game development training data." } }, "e7f292ef14304c96a0438636f2618282": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a shrub/bush, which is an acceptable class. The image is clear and the object is well-defined." } }, "e8ee6d01fcc24e3db77797a3ba8c292f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects that are difficult to identify and don't clearly belong to any of the specified classes (tree, ficus, fern, or related objects like shrub, bush, etc.). The objects appear to be abstract shapes covered in moss or vegetation, making it unsuitable for training a physics simulation model for common plant types." } }, "eade7f013c1b45758e7503d2f61d9d7a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub clearly and against a white background. It is suitable for use in a physics simulation." } }, "ebaf5017836a4c15b2f370463952edd4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white, and it's impossible to identify any object from the classes mentioned." } }, "eca9656859ae437389b389d13306a78a": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly depicted. It is difficult to determine if the object belongs to one of the specified classes (tree, ficus, fern)." } }, "ecc0704325b44d2ab2f914f4eea45344": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and washed out, making it difficult to discern the object clearly. It's hard to tell if it's a tree, shrub, or something else. The quality is too low for training data." } }, "ece69535f7584e099488f65f2072264e": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape and does not contain any of the specified objects (tree, ficus, fern, or related shrubbery). The image is also not suitable for learning physics parameters of a single object." } }, "ee22ff84f7b6452682b2340dfef14fad": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bush with flowers, which falls under the specified classes (shrub, bush, etc.). It is a single object and the image quality is acceptable for physics simulation purposes." } }, "ee851bd8ba8544dcb233b2614bc9637c": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, and it's suitable for physics simulation as it shows the basic structure of a tree that can be used for simulating wind interaction or falling objects." } }, "ef2f57b8927b4eb78539a8b1090733e4": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bush with flowers and rocks, which is not a single object and contains multiple elements. It is also not a clear representation of a bush, shrub, or hedge, and includes other items like rocks and flowers." } }, "f00af376b5214281b66b848fc4978d5f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and unclear, making it difficult to identify the object. It's hard to tell what it is, and it doesn't resemble a tree, ficus, or fern." } }, "f06d1430c00d47a899506c9ea66a0862": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a simple cube with a green texture, and it doesn't represent any of the specified plant classes (tree, ficus, fern, shrub, bush, etc.). It's also not suitable for physics simulation as it is a very basic shape." } }, "f08a392f8d2c4121948840e9459b1de3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus in a pot, which falls under the specified classes. The image quality is good, and it is suitable for use in a physics simulation." } }, "f0c2a532cf2b43f6bf95acbe2e2f536b": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry, contains other objects (people), and the object is not well-defined." } }, "f0d4b3b79ccb43038a0f9d4b35adb5bf": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a building and a bush. It is not a clean image of a single object." } }, "f0d69842420f4805915f894dadf52f2f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains Christmas tree ornaments, which do not belong to the specified classes (tree, ficus, fern) or their related objects. Also, there are multiple objects in the image." } }, "f10e77da99ce40c28ac58e49e3089e1f": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a planter, not a tree, ficus, or fern. Also, the image includes the surrounding ground, which is not ideal." } }, "f2006b1a3af9442987963da054283ad7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a shrub, which falls under the specified classes (tree, ficus, fern) as it includes objects like 'shrub', 'bush', 'hedge', etc. It is also a single object on a clean background, making it suitable for physics simulation." } }, "f2be738eed3b4ccc8ebbac76f19b8f58": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. The shapes are unclear and don't resemble natural plant structures." } }, "f458c98bc23d421db8eb409ad6facb59": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and blurry, making it difficult to discern the object clearly. It also contains a fence, which is not part of the classes of interest." } }, "f962d1c053e741d8b6ee6678548128db": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict a tree, ficus, or fern. It appears to be a collection of dead branches and leaves, making it difficult to use for physics simulation." } }, "fc7e8973379c488f930433c300bbe6a3": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and doesn't clearly depict a single tree, ficus, or fern. It appears to be a landscape with multiple plants and a path, making it unsuitable for training a physics simulation focused on individual objects." } }, "fd4c540972c143308c1ad79d58a105a7": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly depicted. The image quality is also low." } }, "fe72a2f6867a4c4bb68d8aea4addffc8": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a shrub, bush, or hedge, which falls under the specified classes (tree, ficus, fern) for video game development. It's a single object clearly depicted and suitable for physics simulation." } }, "fed41453849a47e18c2f14f3787fe744": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree but also contains other objects like shrubs and a planter. This makes it unsuitable for training data where we want a single, clearly defined object." } }, "ff00360145c444ef9b63ec27644e9a58": { "obj_class": "shrubs", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a potted plant, not a tree, ficus, or fern in a natural setting. The pot is also included, which is not ideal for physics simulation of the plant itself." } }, "0165effe051842789aad2b32d1f5abdd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a well structure (brick and wood), not the water body itself. The requested class is 'water-like_bodies', and this image does not depict water." } }, "0304f9b2687a409e8f7b301f226346ea": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape scene containing a river, but also includes significant other elements like landmasses, trees, rocks, and fences. It does not cleanly depict just the water body, violating the 'ONE SINGLE OBJECT' rule." } }, "0368427134824df9afaaeba8f28a65ca": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (well, pond, stream, terrain, red objects) rather than cleanly depicting a single water body. The water bodies (pond and stream) are part of a larger scene." } }, "0381bb847bf646659dd37aa8119156c6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts the stone structure of a fountain, not the water itself. While 'fountain' is listed, the focus for physics simulation is on the water body, which is barely visible or absent in this image." } }, "03f22951b2b14996bd38f3794bccf350": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a full landscape scene including land, trees, a river, and a pond, rather than focusing cleanly on a single water body object. We need images primarily focused on the water body itself for physics simulation learning." } }, "03f6a63d37e8435b97ef6ae3835937fe": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a body of water (lake or large pond) within a terrain context. The quality is good, and this type of asset is relevant for physics simulations involving water in game environments." } }, "041eb60044144d358aa33e3c070eb7a9": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a decorative object, possibly intended as a fountain or aquarium piece, but it does not actually depict any water or water body. It shows a miniature landscape made of solid materials (rocks, sand, plastic/resin). This is not suitable for learning the physics of water." } }, "04b5fcbb2d644e608d7f836bdb136a85": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water bottle, not a body of water like a lake, pond, ocean, river, etc., or just liquid water itself." } }, "07b16f0c118d4073a81522a526183c11": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a body of water. This falls under the 'water-like_bodies' class and is relevant for simulating water physics." } }, "07df007f2b0d40fa8cdb5db00a01f19f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a container or pot, not a water-like body such as a lake, pond, ocean, pool, puddle, river, stream, waterfall, fountain, water surface, liquid water, or water body." } }, "0800cadb90b04dce82bca1ed024df644": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which is listed under the 'water-like_bodies' class. The quality is good, and it represents a single object suitable for a game environment." } }, "0885d40e0b1247399ca8c477df8c8af9": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pond, which belongs to the 'water-like_bodies' class. Although it includes surrounding elements like grass, rocks, and plants, the pond is the central focus and these elements provide context. The voxel art style is acceptable for diversity, and the image quality is good. Ponds are relevant for physics simulations in games." } }, "08b4447ea3de4f2f99d62f46aca239fb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright. It is impossible to discern any object, let alone a water body." } }, "0973a63a8639456b867f253b4a036070": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (land, house, trees) in addition to the small pond. We need images focused primarily on the water body itself." } }, "097c2f404b6c45c98da55ed95cc24f72": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts stylized fountains, which fall under the 'water-like_bodies' class. The water elements are clearly visible, and the image quality is good. Fountains involve water physics, making them relevant for simulation." } }, "0a065a07a6f74a7599cb4072c92930dc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized, block-like object that does not clearly represent any of the specified water-like bodies (lake, pond, ocean, pool, etc.). It looks more like a block of ice or a very abstract representation, not suitable for learning liquid water physics." } }, "0aa0f37bdd884e258200acc2a8c229ff": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains two distinct objects: the blue rectangle representing the water body (pool) and a white structure resembling a diving board or ladder. The requirement is to have only one single object from the target class cleanly depicted." } }, "0d3786d7865a45e0a0bf4a14e4644bf2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it is empty and does not depict any water or water-like body, which is the target class." } }, "0d9f7c9353fa4596984e264e0ecf2067": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure, but it does not clearly depict the water itself. The basin appears to have a texture rather than containing visible liquid water, making it unsuitable for training on the 'water-like_bodies' class, especially for physics simulation purposes where the water's behavior is key." } }, "0e7c82a3e1de4cab920609a89e3db4e5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of terrain, possibly a dried riverbed or shallow depression, but it does not clearly show a body of liquid water. It looks more like textured ground than any of the specified water-like bodies." } }, "0e9d3f0ce7484707bc03e3cd63687a27": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, but does not depict any water, which is the focus of the 'water-like_bodies' class. We need images showing the water itself for physics simulation." } }, "0eae7d168a07489988a4a2690ae34012": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fish, which is an animal that lives in water, not a body of water itself. The target class is 'water-like_bodies'." } }, "0edb17a7a21944f0b4c1373392c31eae": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it difficult to clearly discern the details of the water effect. The quality is too low for training purposes." } }, "0f8ea2bb69784e5a833823c369d05c84": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a water body and falls under the specified class list. The quality is good, and the object is relevant for physics simulation (water dynamics)." } }, "0fbf583e24594c1597baeb76e426735b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not contain any water. The class 'water-like_bodies' requires the presence of water." } }, "0fcbeac12b434d4a96bf0fb12f33cbc7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin line and does not clearly depict any object belonging to the 'water-like_bodies' class." } }, "0ff412bf322b4e1db0c97a4ebae17e62": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building, possibly an aquatic center or similar structure, not a body of water itself like a lake, pool, or river." } }, "111f5196be644c43a88294d713e2c8ee": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts liquid water within a container, which falls under the 'water-like_bodies' class. Although stylized (blocky/pixelated), it's recognizable as water and suitable for game development, potentially representing a small pool or contained water body. The quality is adequate for this style, and simulating water physics is relevant for games." } }, "11701fc8d72f4720a4cb24c102d2cc13": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an inflatable pool float, which is an object used in water, but not a body of water itself or a water surface, which are the target objects for the 'water-like_bodies' class." } }, "11b6ea9cf9c44875a47a034182d5ff31": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tank, which is a container for water, not a water body itself like a lake, river, or pool. The focus is on the container, not the water." } }, "13a3601a2723472d92ce82f4d1702baa": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a concrete structure, not a water-like body such as a lake, river, ocean, pool, puddle, fountain, or water surface." } }, "13e0e9d7dd53401fba7617d6e71e071b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it very difficult to clearly see the details of the fountain. This low quality makes it unsuitable for training data." } }, "14bbf459d2444b6fa79d526c3a1c5eec": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks detail. More importantly, while it depicts a fountain structure, it does not actually show any water, which is the target object class ('water-like_bodies'). We need images of the water itself for physics simulation." } }, "15150c484ab7481caba9861f1553b6e5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sculpture, not a water-like body." } }, "159a6b6dc74849deb6899830fa8acd80": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tank (a container), not a body of water like a lake, pond, river, or pool, which are the target objects for the 'water-like_bodies' class." } }, "15a8251f401c4d6bac8b0c3ac38d5d22": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object from the 'water-like_bodies' class. It looks more like a rock formation or a pile of debris." } }, "16603868614c4a2093a7643e38839037": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object. It does not appear to depict any form of water body." } }, "1769fed514bd4f1cb62f6a993bbac484": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large complex building/resort with multiple small pools, not a single, clearly depicted water body. It contains many other objects like buildings, vegetation, and furniture, making it unsuitable for isolating the properties of a water body for physics simulation." } }, "17e9e71c5c0f4822b34cdd4b986771d5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized fountain, which falls under the 'water-like_bodies' class. The quality is acceptable for a stylized asset, and it represents a single object suitable for physics simulation (water flow)." } }, "18cd9edab49c4086bf0dd710b5548c7f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized sculpture, not a body of water or anything related to the 'water-like_bodies' class." } }, "1b5b5227d8714136b0b25810b7f65412": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to show a rocky structure or terrain, not a water body like a lake, river, waterfall, or pool. It doesn't fit the requested class 'water-like_bodies'." } }, "1b7af7231dbb44f6b8036fd572de283f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'water-like_bodies' class. The image quality is good, and the object is distinct. Pools are relevant for physics simulations in games." } }, "1b7e66d68ae84a8cac68f6d987a52a18": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water well structure, not a body of water like a lake, pond, river, etc. While a well contains water, the primary object depicted is the well itself, not the water." } }, "1cd3c2a963bc4839b5bbd653531fed8e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tower, which is a structure that holds water, not a water body like a lake, ocean, or river as specified in the class list." } }, "1d13b9000fe040bea9d12c162aad371f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern the object depicted. It does not clearly show any object from the 'water-like_bodies' class." } }, "1d35c29d2f4e4268a2a9692924bb33bc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid object, possibly a bowl or container, not any form of water or water body." } }, "1e15e2c328ff4de6a0595e9c2bf55977": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure, but it does not depict any water, which is the target object class for 'water-like_bodies'. We need images of the water itself for physics simulation." } }, "1e2234e51a46400bbd3a71afd9c2b750": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the 'water-like_bodies' class ('fountain', 'liquid water'). The image quality is good, and simulating water physics in a fountain is relevant for video games." } }, "1e268248ec904f9dbdec2daaa0683f47": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small body of water, like a pond or puddle, which belongs to the 'water-like_bodies' class. The quality is acceptable, and the presence of rocks around it is a natural context for such a water body. It represents a type of water body suitable for game environments and physics simulations." } }, "1eae791c649d4974afd09d58e42697d0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object from the 'water-like_bodies' class. It looks more like a fragment of ice or some other solid material rather than liquid water or a recognizable water body like a lake, pond, or river." } }, "1f02e13c0f244a498e14fad530c452f5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid, white structure, possibly part of a fountain or pool drainage, but does not show any actual water or water body. It does not belong to the 'water-like_bodies' class. Additionally, the image is extremely bright, washing out details." } }, "1f5dbf0c87b44f82bbec0b4cb976b1a4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a creature, possibly a sea creature, not a body of water or water-like body." } }, "1f80bb490ff649ad9a15bd0ba60dc4b0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, which is typically made of stone or concrete, not the water itself. We need images of the water body (liquid water) to learn its physics parameters, not the container." } }, "2001c00438db43478424b7a5d842e327": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a drinking fountain, but it does not depict any water. The focus is on the solid object, not a water body, making it unsuitable for the 'water-like_bodies' class, especially for physics simulation of water." } }, "2145db100b3d4e7fafe737bf1f542bb3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a body of liquid water contained within a vessel. This fits the 'liquid water' and 'water surface' categories within the 'water-like_bodies' class. The quality is adequate, and simulating contained liquids is relevant for physics engines." } }, "22a39f8b7141403b90578fb3e8cddecd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and does not clearly depict any object belonging to the 'water-like_bodies' class. It appears to show a section of a road or similar surface, not water." } }, "23535d1097aa4dfc940d4fe735bbcb44": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small stone building or structure, not a water-like body such as a lake, pond, river, or fountain." } }, "23cb462f3e9a4ac4a710696cc2149454": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, showing a simplistic, low-poly representation. It also includes a lifeguard chair, which is a separate object from the water body (represented as a simple blue block). This representation is too abstract and lacks the detail needed for realistic physics simulation training." } }, "2486917c247b4c7f86b5d98bf916a53a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase or similar container, not a body of water like a lake, pond, ocean, pool, puddle, river, stream, waterfall, fountain, or water surface." } }, "254f1f14e393473588aaa1a9f6d95c76": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern the details of the object, which appears to be a fountain structure. It does not clearly depict water or any water body, and the quality is too low for training purposes." } }, "257ed043752248d29b355d32f4e787cf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fire hydrant, which does not belong to the 'water-like_bodies' class." } }, "2581d382499a4ece9c7aa5bf468dfa85": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a ceramic pot/vase, not a body of water or anything related to the 'water-like_bodies' class." } }, "268602c8593645a2aeb5b3f723939e3b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure, not a water-like body such as a lake, pond, ocean, pool, puddle, river, stream, waterfall, or fountain." } }, "270499a280574ac9a067b960717b5469": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a urinal, which is not a 'water-like body' like a lake, river, ocean, or pool. While it contains water, the primary object shown is the urinal fixture itself, not a body of water." } }, "2750994f3c9046d5ae533f30395942ca": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a stone structure with a metallic object. While the base appears wet, it does not clearly show a distinct 'water-like body' like a puddle, pool, or fountain as the main subject. The focus is on the solid structure, not the water." } }, "283f378fc5424b4191cb7b693ef3d901": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure, but it does not depict any water, which is the required element for the 'water-like_bodies' class. The basin appears empty." } }, "288a163780bb452399140b74004ff151": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a green, textured surface, possibly moss or algae-covered ground, not a body of water or liquid water surface. It does not fit any of the descriptions within the 'water-like_bodies' class." } }, "28b73cf3f5ed407ea18ca835f71a91d3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any water-like bodies. It shows a section of ground with debris, a rusty object, and what appears to be a grate." } }, "28e7dee3f30a4fb9b40910e16554eac2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure, possibly a gazebo or pavilion, not a water body like a lake, pond, river, fountain, etc. While there might be a hint of water or ice at the base, it is not the main subject and is not clearly identifiable as belonging to the requested class." } }, "2bcc57af643346cc8288acd353e3a84f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid, white object, possibly a lid or a shallow dish. It does not represent any form of water or water body as required by the class 'water-like_bodies'. Additionally, the image is too bright and lacks detail." } }, "2c20aeb77fe2434080fe12c9a1e177a5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a well structure, but it does not depict any visible water body, which is the target class." } }, "2c218454faf246eea3631e3690709981": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a table with a book and a bowl, not any object belonging to the 'water-like_bodies' class." } }, "2c3fa8718e864e29b91a801da73964b0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it impossible to clearly identify any object, let alone one belonging to the 'water-like_bodies' class. The quality is too low for training data." } }, "2ccb8fe6e25e44aa9e539816bf983738": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool filled with water, which falls under the 'pool' and 'water body' categories within the 'water-like_bodies' class. The quality is good, and water physics in a pool are relevant for simulation." } }, "2e9061fb2e974bf796a8c9c8ffb0cc98": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone a water-like body. It is too bright and lacks any detail." } }, "2f584f889a0d46d0b81d26dfab5105fd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tank, which is a container for water, not a water body itself (like a lake, river, pool, etc.). The focus is on the structure of the tank, not the water." } }, "2f9abd7862ab4a598643cb55d5948bbe": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' class. The quality is acceptable, and it represents an object suitable for physics simulation (water dynamics)." } }, "30874d5babd94e258f8307c695ded039": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small scene with multiple objects (water body, trees, ground, structure) rather than cleanly focusing on a single water-like body. While it contains water, the presence of other distinct objects makes it unsuitable according to the requirement for single object depiction." } }, "30be56779113429983ce4cd41fa97024": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or assess its quality. It does not depict any recognizable water-like body." } }, "314f92420003499688d6c2070237b3b0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (rocks, building, water features) rather than focusing cleanly on a single water body. While it depicts waterfalls/streams, the overall scene is too complex and doesn't isolate the water element sufficiently for the requirement of depicting a single object." } }, "31b9659f360b47dc9d55a0813439db3d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts water inside a container (bottle/thermos), not a 'water-like body' like a lake, river, or pool as the main subject. The focus is on the container holding the water, not the water body itself." } }, "329d7c7ba9ed4d288954f8f7307f8be0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object belonging to the 'water-like_bodies' class. It appears to be a fragmented or corrupted render of an object, possibly a building or urban structure, viewed from an extreme angle, and is not recognizable as a water body." } }, "32d0df661a044383911c09bbbd0b5e3e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a metallic, solid-looking object, possibly abstract art or debris. It does not resemble any form of water or water body listed in the class definition. Therefore, it is inappropriate for the 'water-like_bodies' class and unsuitable for learning water physics simulation parameters." } }, "33560aae37ed4f10b02d5fdb9a9b4b27": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it very difficult to discern the details of the object. It appears to be a fountain structure, which fits the class, but the image quality is too low for training." } }, "33858795db9b4378afec7edcb35eb383": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain structure, which is one of the specified classes ('fountain') within the 'water-like_bodies' category. The image quality is good, and fountains often involve water physics simulations in games." } }, "34e27f4b89504c53928b3cec8c1868a3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays the structure of a fountain, but it does not show any water, which is the key element for the 'water-like_bodies' class, especially for physics simulation purposes." } }, "3527cd2953544f9fa390e06ceb2c6276": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a structure (like a dock or building) surrounded by fragmented patches of water and possibly ice. The water is not the main focus, and the image contains significant other objects, violating the 'single object' guideline." } }, "358c50f3e494411eaa34355fcaef566a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock-like structure, not any form of water or water body as specified in the class description." } }, "35e97691acae49f6b128aaa6fe334be3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern details or textures. It does not clearly depict water or a water body, only the structure of a fountain in very poor lighting conditions. The quality is too low for training." } }, "360c1388d13c4dbabc31cbc2b40ce825": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plant in a dish, not a body of water or any object belonging to the 'water-like_bodies' class." } }, "3708506c361a4a5f9b056ffe3f3cea99": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains liquid water. Both 'fountain' and 'liquid water' are part of the target class list. The image quality is good, and the object is suitable for physics simulation (water dynamics)." } }, "37a6e7da5c0943e398eab77f133e27c0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (trees, land, water) rather than focusing cleanly on a single water body. The water is just one component of a larger diorama." } }, "383b49d7f1db4f6bbf22ac97ea72cb6d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water cooler dispenser. While it contains water, the primary object is the dispenser, not a body of water like a lake, ocean, river, pool, or even a puddle or fountain in the intended sense. It does not fit the category 'water-like_bodies'." } }, "385097cdcf8645c886eaa5e6662072d4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a concrete structure (possibly a drain or basin). While there might be a tiny amount of water at the bottom, it is not the main subject and does not clearly represent any of the specified water-like bodies." } }, "390be33a4b004815af13799848473962": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fountain or pool feature with visible water, which falls under the 'water-like_bodies' class (specifically 'fountain' or 'pool'). The quality is acceptable and it represents an object relevant for physics simulation." } }, "393fd53e84a7411e985b8b74ab5bf419": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a stone structure (a well or part of a fountain) and surrounding paving. While it contains a small amount of water, the focus is not on the water body itself, but on the larger architectural element. It does not cleanly depict an object from the 'water-like_bodies' class." } }, "39551a65eb4c4e92a80d12e6a1b0428e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoon character, not a body of water or any related object like a fountain or waterfall. It does not belong to the 'water-like_bodies' class." } }, "3a1b3ca3a0494404a7900537a0f12b40": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water. The goal is to collect images of water-like bodies for physics simulation, and this image lacks the essential element (water)." } }, "3a219c2ab2e34575a640302bc6a0f973": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and doesn't clearly depict a recognizable water body. The blue patches are fragmented and abstract, making it difficult to identify as any specific type of water body like a lake, river, or pool. It also contains a significant structure, violating the single object rule." } }, "3aa088f6c8534a5aa7309d9a5f87dd70": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a structure that might be a fountain, but it does not depict any water or water body itself. The focus is on the solid structure, not the water element required for the 'water-like_bodies' class." } }, "3aad6c05c643499ba232a122a3d4696b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' class. The quality is good, and it represents a single object suitable for physics simulation (water flow)." } }, "3bd0916bb6c540b296fbd648e9a32a20": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' class. The quality is acceptable for a stylized asset, and fountains often involve water physics simulations in games." } }, "3be2d9af367a45e993c55311cb879145": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not contain any water. The class 'water-like_bodies' requires the presence of water (e.g., flowing water, water surface). This image only depicts the solid container." } }, "3be5b9f647cb4318ba75c3557879e860": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts the structure of a fountain, but it does not show any water. The target class is 'water-like_bodies', and this image lacks the essential element (water) required for this classification and for learning water physics." } }, "3c025605bbd6403d92c171a4111cf840": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with a building and rocks, not just a water body. The water elements (streams/waterfalls) are integrated into this larger structure and are not the primary focus, violating the 'single object' guideline." } }, "3c5c9dd67506432692c65b0129b64815": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pond, which belongs to the 'water-like_bodies' class. The low-poly style is acceptable, and the quality is sufficient. The surrounding elements (rocks, sand, plants) provide context and are typical for a pond asset. Water bodies are relevant for physics simulations in games." } }, "3cea4142fa904d78aee8b2062b0c3e3e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone trough or planter filled with dirt and plants, not a water body or a functioning fountain. It does not depict any water." } }, "3d355747050a4f28ac8d75b8d041677f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it difficult to clearly see the details of the fountain and the water. This is considered low quality." } }, "3d6d003046ff41ee8bd7fff642a170bf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small waterfall or stream, which falls under the 'water-like_bodies' class. The quality is acceptable, and simulating water flow like this is relevant for physics simulation in games." } }, "3e23b11c9f6840f3a955b8a11717a450": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a very low-quality, fragmented render that does not clearly depict any recognizable object, let alone a water body. It's impossible to discern what is being shown." } }, "3e9a86732e8b47b290f084b70101d5af": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone a water-like body." } }, "3eda0d3de352426da6e5eff8af09c7cf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure, but it does not contain any visible water. The class 'water-like_bodies' requires the presence of water, especially for physics simulation purposes." } }, "3eff7ffcc9134c7ebc5ac115edb8c63f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pond, which falls under the 'water-like_bodies' class. The quality is good, and while it includes surrounding rocks and a lily pad, these are common elements for a pond asset and the focus remains on the water body itself. It's suitable for physics simulation involving water." } }, "3f4432de9e14464ab6241b69a783b669": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small body of water (pond/pool) in a stylized, blocky format common in video games. While stylized, it is recognizable as a water body and is suitable for training, adding diversity in art style. It's relevant for physics simulation within such game environments." } }, "3ffc56c160854e3f938ce90a7aec2c41": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain or a small decorative pond, which falls under the 'water-like bodies' class. The water surface and body are visible, and the quality is acceptable for training. Fountains involve water physics, making this relevant for simulation." } }, "401e0fcbd96144359b93b31c32975080": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a puddle or small pond, which belongs to the 'water-like_bodies' class. The quality is good, and it's suitable for physics simulation involving water surfaces." } }, "421b3e5414fb41adb33413a5ef1b5adb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a swimming pool (the container) but does not depict any water within it. The class 'water-like_bodies' requires the presence or clear representation of water, especially for physics simulation purposes related to fluids. This render lacks that essential element." } }, "421e9104759747f48287eb7f9b54575d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object belonging to the 'water-like_bodies' class. The objects shown are abstract and do not resemble water, a lake, pond, river, etc." } }, "4284701c9e1c46c0ba2e0dc3c71aa86a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a puddle or small pond, which belongs to the 'water-like_bodies' class. The quality is good, and it represents a single object suitable for physics simulation (e.g., splashing)." } }, "436f0e4b4d3d491985510a70515b2b60": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object belonging to the 'water-like_bodies' class. It appears to be a very thin, possibly solid object viewed from the side, against a white background, making it unrecognizable as water." } }, "446f36f2ccb54cf1bc090cd5bc25dce1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a waterfall, which falls under the 'water-like_bodies' class. While it includes the surrounding terrain, this context is essential for simulating the physics of a waterfall interacting with its environment. The quality is acceptable for training purposes." } }, "4476bba9fc5447c6a737e0afa346392c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cross-section of a building and terrain, not any object from the 'water-like_bodies' class (like a lake, pool, river, etc.)." } }, "44a23abe41e24c1c82d9e257ff3b6b17": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts an industrial container (IBC tote) that happens to contain water. It does not represent a natural or typical 'water-like body' such as a lake, river, ocean, or pool. The container itself is the main object, not the water body in the sense intended by the class description." } }, "44a305c880e64c1cb5151b9af05addf7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (water body, umbrella, tree) rather than cleanly depicting just the water body itself." } }, "44ae0a5f1ed44074965e0fb4bb198760": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a collection of small 3D models, possibly furniture or building components, not any form of water-like body." } }, "44b51abf755941c3a71c477f77d08b25": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the 'water-like_bodies' class. The quality is good, and it represents a single object suitable for physics simulation in a game." } }, "47bd3625e5324bb7a0d795c762598ab0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with a prominent structure, water body, and waterfall. It is not focused on a single water-like body object, making it unsuitable for isolating and learning the physical properties of just the water." } }, "47dc4c04463241d2a62fd0a795f041cc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is fragmented and does not clearly depict a recognizable water body or any object from the specified classes. It appears to be a low-quality or incomplete 3D model scan." } }, "48b218208042472ab1bae63ec0440b68": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely low contrast and the object is very faint and indistinct. It is impossible to clearly identify it as belonging to the 'water-like_bodies' class. The quality is too low for training." } }, "49211ba2343e45e8b0c50102f5ca91ec": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, but it does not depict a body of water or flowing water, which is the focus of the 'water-like_bodies' class for physics simulation." } }, "499616c1d188425282144a39cfc4b6cb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool, which falls under the 'water-like_bodies' class. The quality is good, and the water surface is visible, making it suitable for physics simulation training related to liquids." } }, "4a3c173129314b9c9d708ab0aaf81526": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, but does not clearly depict water itself (flowing or collected). The focus is on the metal fixture, not the water body, making it unsuitable for the 'water-like_bodies' class, especially for physics simulation purposes related to water." } }, "4b118aaed5c14c038588d986228b77f1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts ripples on a surface, which could be related to water, but the texture and color are highly unrealistic (bright yellow/gold) and make it look like a solid, metallic object rather than liquid water. This unrealistic material representation makes it unsuitable for learning water physics." } }, "4b5d2de454a140d783d9d08bd4743855": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be an empty pool or skate park bowl. It does not contain any water or depict a 'water-like body' as required by the class definition." } }, "4bffb0a7f99648f58c3a3db8ddcfd023": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene containing multiple objects (trees, land, character, path) in addition to the water body (pond/lake). We need images focusing primarily on the water-like body itself, not a complex diorama." } }, "4cda6eb04ee74aabbad85a8c6ae43e37": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'pool' category within the 'water-like_bodies' class. The image quality is good, and the object is relevant for physics simulation (fluid dynamics)." } }, "4db52ba813d545f9b313870b8469c339": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a structure that might be part of a fountain, but it does not clearly depict any water or water body. The focus is on the solid structure, not the liquid element required for the 'water-like_bodies' class." } }, "4dcdb91d61f84c1a9d2b012355f867e8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which includes a water body and falls under the specified class. The quality is good, and it represents a single functional object relevant for physics simulation (water dynamics)." } }, "4deee6ca6ebd4f838e4c5e9a293e2720": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of machinery or equipment, not a water-like body such as a lake, river, pool, or puddle." } }, "4ec2c692f1e04ff28778e00f805f3657": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water jug/cooler, which is a container for water, not a 'water-like body' such as a lake, river, ocean, or pool itself. The focus is on the container, not the water as a body." } }, "4f091bcb17ce42ee9a7e678a16ddc349": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized pond or pool, which falls under the 'water-like_bodies' class. The water surface is visible and the overall quality is good. While it includes decorative elements like plants and a mushroom, they are part of the pond structure, similar to how a vase might be included with flowers. This type of asset is common in games and the water itself is suitable for physics simulation." } }, "4f43985e562f43d5b2b48afc53338a27": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify any object, let alone one belonging to the 'water-like_bodies' class. The quality is too low for training." } }, "5049d1fd912e464094e6abcd62a16949": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water or a water body itself. The class is 'water-like_bodies', and this image lacks the primary element (water)." } }, "509777280d8e4292a0fe46f19268782c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it very difficult to discern the object. It appears to be a fountain spout, but the water element is not clearly visible due to the brightness. The quality is too low for training." } }, "513e91da9517403284ba5d2652950275": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water, which is the key element for the 'water-like_bodies' class, especially for physics simulation purposes." } }, "514007eed6af4992ba47cd523b4f4f6e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain (made of stone), not the water itself. The target class is 'water-like_bodies' for simulating water physics, not the container." } }, "52bf2409e334480ca43bbe85bb0b39f7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a creature or monster, not a water-like body such as a lake, ocean, river, pool, etc." } }, "52c818cc6bad4129941378ec2bec34a5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a water fountain, which falls under the 'fountain' category within the 'water-like_bodies' class. The image quality is good and it represents a single object suitable for physics simulation (water flow)." } }, "52d3e77954904505ae697e4e790a31c7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a clay pot or jug, which does not belong to the 'water-like_bodies' class." } }, "5382147d49f24807ae5682f166153c96": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the 'water-like_bodies' class. The quality is good, and the object is suitable for physics simulation involving water dynamics." } }, "53905f5e6f81450a8643ba031f154d21": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a water-like body." } }, "54015a90664d454c9fe52873ff4fdd7f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (tree, land, rocks, bushes) and not just the water body (pond). The water body is only a small part of the overall image." } }, "54ce14d9df004287b6feb492d1ef5792": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains water and falls under the 'water-like_bodies' class. The quality is good, and while it includes structural elements, this is expected for a fountain. It is suitable for physics simulation (water dynamics)." } }, "54cee1f1e48a45678c237b3313e473c4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, metallic object, possibly a mold or part of machinery, not a body of water or liquid water." } }, "54e6d60677c04741a2ad3b84b2e41b8f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very small, fragmented, and oddly shaped piece that vaguely resembles a water surface. It does not clearly depict any recognizable water body (like a lake, river, pool, etc.) and looks more like an isolated texture swatch. It's not suitable for representing the class or for physics simulation training." } }, "57a4890ecadf483bb6d94b009cb4b7dd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a water surface, which belongs to the 'water-like_bodies' class. The quality is good, and it represents an isolated object suitable for physics simulation training." } }, "57be766363f54139818de1dcb1f89160": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small body of water, like a puddle or a stylized pool. It fits within the 'water-like_bodies' class and is suitable for physics simulation purposes (e.g., surface interaction)." } }, "583a5052678842b9ab0dc6ab64ddbfb7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small piece of terrain, possibly with some moss or vegetation. It does not clearly show a recognizable water body like a lake, pond, river, or even a puddle. The representation of water, if any, is ambiguous and indistinct." } }, "5854196557e04a42b17ed38b016b83da": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'pool' and 'water body' categories. The quality is good, and while it includes surrounding elements like the deck and a pool float, the main focus is the water body itself. This is relevant for physics simulation (water dynamics, buoyancy)." } }, "58ee97e58e37452783076caad9184459": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (raft, duck, debris) floating on the water surface, not just the water body itself. We need images focusing primarily on the water." } }, "590cf2b529e64a289d3c222bcec50120": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of terrain or landscape, not a water body like a lake, river, ocean, etc. It does not belong to the requested class 'water-like_bodies'." } }, "593135fb1d3c435bb2bc60380baf5a0e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' class. The image quality is good, and the object is suitable for physics simulation involving water." } }, "59c6b884ccf0489d84413227d7e5abcd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any water-like bodies. It shows a character standing on a solid surface, possibly ground or pavement." } }, "59ecc9ff3a62404dafe635f1c8f43f04": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a water-like surface, but it is part of a larger structure (a room or container section) with other prominent objects like decking and furniture. It does not cleanly depict a single water body as the primary focus." } }, "5a5a0f6f027e42fba958b347aeb380d8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small stream or river section, which falls under the 'water-like_bodies' class. The quality is acceptable, and it represents a natural water body within its environment, suitable for game development and potentially physics simulation (water flow, interaction)." } }, "5ab48829e967488f8ee1a3d08d35cfd5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which is one of the specified subclasses ('fountain', 'water body'). The water within the fountain basin is visible. The image quality is adequate for training purposes and relevant for physics simulation (water dynamics within the fountain)." } }, "5ae13d6c0d3840529af4a2f0ce659a78": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (an entire landscape with trees, land, and a structure) rather than focusing cleanly on a single water body like a lake, ocean, or waterfall. While water is present, it's integrated into a much larger environment, making it unsuitable for isolating the properties of just the water body." } }, "5aed4bfb0309452e9686e0c3a82a1638": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object or scene. It is unusable." } }, "5c28b314cd5a4d039d274f66dd9fbed9": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts the solid structure of a fountain, not the water itself. While 'fountain' is listed, the image doesn't show flowing or contained water clearly enough to be useful for simulating water physics." } }, "5d1b8f9012754e92b4bb87a2c90cb17a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a platform or base structure, possibly a fire pit base, with a very small, indistinct central area that might contain a water-like texture. It does not clearly or prominently depict a water body like a pool, lake, or river. The water element is too small and ambiguous for training purposes." } }, "5e2337b4267541b3a13929e796af8d95": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a water body. Both 'fountain' and 'water body' are included in the target class list. The image quality is good, and the object is relevant for physics simulation (water dynamics)." } }, "5e236afbc2d04f2499b38108def849fe": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a water body and is listed in the acceptable classes. The image quality is good, and the object is relevant for physics simulation (water dynamics)." } }, "5e3accfa520a47988259610907d3ebda": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any visible water body or water-like surface. It shows a dry structure that might be a fountain, but without water, it doesn't fit the requested class." } }, "60bc8348b5aa454f8d9bc75b978131b0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mechanical object (perhaps part of a landing gear or vehicle) on a solid orange surface, not any form of water-like body." } }, "61bd41785d524152b021eda19c37e6da": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which includes a water body, fitting the requested class. The stylized blocky aesthetic is acceptable for diversity, and the object is recognizable and suitable for physics simulation (water flow)." } }, "62806d0bafb84e808ab341bcef528465": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the 'water-like_bodies' class. The quality is good, and it represents an object (fountain with water) relevant for physics simulation (water dynamics)." } }, "628c8f40cdaf49a5838cfa24503d7890": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water bottle, which contains water, but it does not depict a 'water-like body' such as a lake, river, ocean, pool, puddle, etc., as intended by the class definition. The primary object is the bottle, not the water itself in an environmental context." } }, "6332a7877bae40c6a945ec0a348ab30b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, especially the background, which washes out details. The object (fountain) is also quite small in the frame and not the main focus." } }, "6358d314a8584356a90b9ebb582c095a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone structure, possibly part of a fountain or planter, but does not clearly depict any water-like body as requested by the class list. It primarily shows stone blocks." } }, "640042f624b2438fb4fe6a85942aedf4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene including a waterfall, stream, water wheel, boat, and terrain, rather than cleanly isolating a single water body object. While it contains elements of the target class, the presence of multiple distinct objects violates the 'ONE SINGLE OBJECT' requirement." } }, "64aaff5278aa4b409b2dff3d9c134498": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a water surface, likely representing a pond or lake, which falls under the 'water-like_bodies' class. While it includes lily pads and reeds, these are contextually appropriate elements often found on such water bodies and do not obscure the primary subject. The image quality is good, and water surfaces are relevant for physics simulations in games." } }, "657b7bfba4b64e3289bd5aa5ddfa2f24": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fountain structure, but it does not contain any water. The class is 'water-like_bodies', and this image does not show any water." } }, "65f8696f000248ff9d2abb05565b5a72": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized diorama or decorative object featuring a small body of water, rather than a realistic representation of a lake, pond, or other water body suitable for general physics simulation. It includes multiple distinct elements (base plate, plants, rock, water) combined into one object, and the water itself is not rendered realistically." } }, "6624b028fa1e4ace900feab112532f11": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a splash of a white liquid, which looks more like milk or paint than water. While technically 'liquid water', it doesn't clearly represent the intended 'water-like bodies' such as lakes, rivers, or pools, and its transient nature makes it less suitable for learning general physics parameters of water bodies compared to more stable forms." } }, "665f548eb30b4e0f9538fde406ec9357": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pot or vase, which does not belong to the 'water-like_bodies' class." } }, "673d6abc3d8e4962a0a44c440e8e7f5a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid structure, potentially a fountain base, but does not depict any water or water body itself, which is the required class." } }, "67f986f007c0483c8da77291dad6b9bf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex diorama scene with multiple elements (trees, rocks, landscape) rather than focusing primarily on the water body (waterfall and pond). The water elements are relatively small parts of the overall model, making it unsuitable for isolating the 'water-like_bodies' class for physics simulation training." } }, "68734508a01a4105923b2797f90503a6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not contain any water. The target class is 'water-like_bodies', and this image does not depict water itself, which is necessary for learning water physics simulation parameters." } }, "69b2cc86bb024ce8a9480d3e198b878d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone one from the 'water-like_bodies' class. It is unusable for training." } }, "6a8db7d061ac4ee0a44ea7e5f7ed582e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the 'water-like_bodies' class. The quality is good, and simulating water in a fountain is relevant for physics simulation in games." } }, "6b1dd66a49e84b24a42bb9fa0c254f3f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain structure, which falls under the 'fountain' category within the 'water-like_bodies' class list. The image quality is good, and the object is isolated. While it doesn't show water, the fountain structure itself is relevant for game development and potential water physics simulation within it." } }, "6bc739d99a094d44b2011b1cf4075490": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a river and a waterfall, which belong to the 'water-like_bodies' class. While it includes other elements like trees and land, these are natural context for a river/waterfall. The stylized representation is clear and suitable for physics simulation training." } }, "6bf754fa129041e7bfec2845b1806a13": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a whole scene (pool, patio, chairs, background) rather than focusing cleanly on the water body (pool) itself. We need images that isolate the object class." } }, "6c1b44e0848347299aa3676d1de38a2d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows liquid water inside a container (a bottle or thermos). The container is a significant, distinct object and not part of the 'water-like_bodies' class. We are looking for images primarily depicting the water body itself, like a lake, river, pool, or puddle, not water contained within another object. Additionally, the image quality is low (grayscale, lacks detail)." } }, "6c658096fcf5417da204211bedec201f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tank, which is a container for water, not a water body itself like a lake, pond, river, or pool. The class 'water-like_bodies' refers to the water itself or the feature it forms, not the container." } }, "6d1a8d3e8f544ff7b65c91eff1d21891": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (pool structure, deck, chairs, wall) in addition to the pool/water. We need images focusing primarily on the water body itself for physics simulation training." } }, "6e4aa8f9abf8495ab6828b79323492c4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a monument/plaza area with statues and planters, but does not contain any visible water body like a fountain, pool, pond, or other water-like feature relevant to the requested class." } }, "6ea81b68c079486b9aea3b8969345d29": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone path or surface, not any form of water-like body as specified in the class list." } }, "6f0e1e72fe024cdaa2e7615fc3fc1c19": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts small pools of water within a decorative structure, which falls under the 'pool' or 'fountain' subcategories of 'water-like_bodies'. The image quality is good, and while it includes the structure, this is integral to the water feature. The water itself is relevant for physics simulation (fluid dynamics)." } }, "706da4fbc0fe4d40a90021739421ba01": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (lighthouse, rocks, plants, frog) in addition to the small pond. It depicts a scene rather than focusing primarily on the water body itself, violating the 'ONE SINGLE OBJECT' requirement." } }, "7101eaf08447436bb5d3b26fe15ce744": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a contained body of water, resembling a small pool or fountain base, which falls under the 'water-like_bodies' class. The quality is good and it represents a single object suitable for physics simulation (e.g., water surface interaction)." } }, "710d07818aab4abeb77139ac1af3bfb4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a river and a waterfall, which belong to the 'water-like_bodies' class. Although part of a larger landscape (floating island), the water features are prominent and recognizable. The stylized nature is acceptable, and the quality is good. Water bodies like rivers and waterfalls are relevant for physics simulation in games." } }, "710f85158ad7498fb7c8ba4c0bea268f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone structure, possibly part of a fountain, but it does not depict any water or water body itself. The target class is 'water-like_bodies'." } }, "719f4a2392924c789a6eba428f61bc3e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure or ruins, not any object belonging to the 'water-like_bodies' class." } }, "71bc7aa9a0424588876b782284af5b73": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which is one of the specified classes ('fountain', 'water body', 'liquid water'). The image quality is adequate and it represents a single, distinct object suitable for the dataset." } }, "71c0688c409949fea3cfd199ff7c60ed": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'water-like_bodies' class. It appears to show a small, white, possibly plastic object, like a lid or a small dish." } }, "71c3fc9b1e304660822719824d13b98c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a water body and a small waterfall/fountain feature, which belong to the requested class. Although it includes a structure, this is integral to the fountain/waterfall aspect. The stylized representation is acceptable for diversity, and the quality is good. Water physics (flow, surface) are relevant for simulation." } }, "7214318ca2eb4962b870c3e7cf73c8f2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cross-section of land with a structure, not a water body like a lake, pond, ocean, etc." } }, "72781d82befd4a8191414986d8a6b883": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'water-like_bodies' class. It shows abstract shapes (lines and spheres)." } }, "73cb68d2e3ee4a75ab0b9e568b09449e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, but does not clearly depict water or a water body itself, which is the focus of the 'water-like_bodies' class. We are interested in the water aspect for physics simulation, not the solid structure of the fountain." } }, "752f299ad0b34275817baef05571727f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows solid blue surfaces forming a corner, potentially representing an empty pool or container. It does not clearly depict liquid water or any specific water body. The texture is completely uniform and lacks any characteristics of water (like transparency, reflections, or ripples), making it unsuitable for learning water physics." } }, "75350e5371dd48a4919e5cd4f27896d4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a drinking fountain, but does not depict any actual water or water body, which is the target class." } }, "75b62800b6ac4e46a6ae4fc0d3a5487c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely black and does not depict any recognizable object, let alone one from the 'water-like_bodies' class." } }, "75c0247364b445acb241cae283289991": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains water bodies in its basins. Fountains are listed in the target class and simulating water physics is relevant for game development." } }, "76b166b7b65d4b4aa4b348d86d5026f5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a faucet/spigot, which is related to water delivery, but it is not a body of water itself (like a lake, river, pool, etc.) as specified by the class 'water-like_bodies'." } }, "770a898896e04799a97f61a4ba7b1690": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a water surface, which falls under the 'water-like_bodies' class. The quality is good, and it represents a single object suitable for physics simulation (e.g., simulating waves or interaction with objects)." } }, "77847f69000a46fab15494b6ba54cae0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a human figure, not a water body or any object related to the 'water-like_bodies' class." } }, "77d95c70624a4ed8b35a06ba63175427": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an orange, bag-like object, not a water-like body." } }, "77dd0bfd4a2649e29bf68baf1b9968f0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone a water-like body." } }, "7890ec1461784e59966be26d0bd9f97b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees, platform, ground, small shapes) in addition to the central water feature (fountain/pool). We need images focusing primarily on the water body itself." } }, "7920a19561074be1bac30368e5476361": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tank, which is a container for water, not a water body itself like a lake, river, pool, or even just liquid water/water surface as specified in the class list." } }, "79471848de9942479c877bdc3902f128": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a dry stone structure, possibly an old well or fountain base, but it does not depict any water or water body. It is therefore not suitable for the 'water-like_bodies' class." } }, "796e0b2660a440e3a2e8a24c6ed0fe72": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a drinking fountain, not the water itself. While 'fountain' is listed as a potential object, the focus for the 'water-like_bodies' class should be on the water, not the container or structure, especially for physics simulation purposes." } }, "79a5cb5e175142dfadf07fbeade7a25e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to identify the object. It does not clearly depict any water-like body." } }, "7a01616426184d8bbbe1ea8b00e0c7e1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains water bodies and is listed in the target classes. The quality is good and it's suitable for physics simulation involving water." } }, "7a62eb83cf934db3bc1bea9c59d2ee69": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it very difficult to discern the object. It does not clearly depict any recognizable water-like body or feature like a fountain or waterfall." } }, "7bc6feec69894510a4c9040fd5fe46b3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a ceramic pitcher/jug, which is a container, not a water-like body itself (like a lake, river, puddle, etc.)." } }, "7c040b34c9fc4b889098204b6ad7efa0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone urn/vase on a pedestal, not a water-like body." } }, "7c63c71605ee484197eeb94c350cb6ce": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water bottle, which is a container for water, not a 'water-like body' such as a lake, river, ocean, or pool." } }, "7cf9722641f3485f9edae8109799128a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a body of water. Both 'fountain' and 'water body' are listed classes. The image quality is good and suitable for training. Fountains involve water physics, making this relevant for simulation." } }, "7d51da5ebcfb4db0a4ba34d08762db8a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any water-like bodies. It shows a dry, sandy area with some depressions and structures." } }, "7d7b7dd47aeb472297912a320efcd005": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'pool' category within the 'water-like_bodies' class. The quality is good, and it represents a typical object that might be used in physics simulations involving water." } }, "7dfa8d08d9dc4742b979fb783bf909c1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object from the 'water-like_bodies' class. The shape is ambiguous and the solid beige color is uncharacteristic of water, making it hard to recognize as such." } }, "7e40f6c7213744cabd88b72c63d25feb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a dynamic water effect (splash, mist) on a small surface, representing 'liquid water' or a 'puddle'. This is relevant for physics simulation, especially for effects like impacts or small water interactions. The quality is acceptable." } }, "7f5ff54443dc4348b2242c07a872adbc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which is listed in the target classes. While it doesn't show flowing water, the fountain structure itself implies the presence and containment of water, making it relevant for water physics simulation context within a game environment. The image quality is good." } }, "7fbf4f010e4045d6871dc7fe922bfe51": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with a building and rocks, not just a water body. The water elements (streams/waterfalls) are integrated into the larger structure and environment, rather than being the primary focus or a single, distinct object." } }, "80affb207dfa49678826fa946b733dae": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily shows a mossy log or stump, not a clear depiction of a water-like body. Any potential water (like a small puddle) is indistinct and not the main focus." } }, "80fe846f10fc464f8a3972ed355798d8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty pool shell, not a body of water like a pool filled with water. The class 'water-like_bodies' refers to the water itself, not the container." } }, "8220d4291d1946cf8c7c433e90a92a7a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground with grass, a post, and pavement, not any form of water-like body." } }, "8418681b20c34bf49572e3724da928f7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool, which falls under the 'water-like_bodies' class. The image quality is good, and it represents a single object relevant for physics simulation (water dynamics)." } }, "8536327fec9a4052ad621f32b5adc391": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a section of land with rocks and a tree trunk, but does not depict any water-like bodies like a lake, pond, river, etc." } }, "85565ec5894e4fcc8e0f2fe363468b94": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a stone well or basin. While it contains something that looks like water or a wet surface inside, the main object is the container, not the water itself. The water is not clearly depicted as a distinct water body like a lake, river, or pool." } }, "8580500134194ba5be3f6df7593049f2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a body of water and flowing water, fitting the 'water-like_bodies' category. The quality is acceptable, and the water dynamics are relevant for physics simulation." } }, "85a1338a698e45708551448176f1207b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized body of liquid water, which fits the 'water-like_bodies' class. The quality is good, and it's isolated against a clean background. Simulating water physics is relevant for game development." } }, "868ea8df42be4476bbea5ba119c58717": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small body of water (like a pond or part of a lake) within a natural setting. While it includes surrounding terrain, this is typical for representing such water bodies in context, which is relevant for physics simulation (e.g., interaction with banks). The image quality is adequate." } }, "86da408f5b9c4b209310856c7d5ded77": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank (white) and does not depict any object, let alone a water-like body." } }, "873ae1852cd642a28386afb57b3b7121": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract geometric shape, not a water-like body. It does not belong to any of the specified classes like lake, pond, ocean, etc." } }, "874d5e7d9f1a47f1a5e3315ee81bcf85": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, but it does not depict any actual water or a water body. The focus is on the solid object, not the liquid water which is the target class for physics simulation." } }, "87605b8662e349cba2ec63f92db4b45b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a bird bath structure and a patch of grass. While it contains water, the water body itself is a very small component of the overall image and is contained within another distinct object (the bird bath). This does not meet the requirement of cleanly depicting a single object belonging to the 'water-like_bodies' class." } }, "87e37afc6d1544b396405f0287b6f224": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to discern details, which affects the overall quality for training data." } }, "87e703f3ce66458a9f624382edadaad1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts the stone structure of the fountain, not the water itself. While 'fountain' is listed as a related term, the focus for physics simulation of 'water-like_bodies' should be on the water, which is minimally and poorly represented here." } }, "87eb05deb9a34320bf77fa6147929314": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fountain structure, but there is no visible water. The class 'water-like_bodies' requires the presence of water, even if it's part of a fountain." } }, "881908c9780b4b9c8c40b6b0f6e90af5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not contain any water. The target class is 'water-like_bodies', and this image does not depict water." } }, "8824345e46a54b49b2b91fc47f9b0019": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fragmented, distorted view of what appears to be a building or structure, not any form of water-like body. The quality is extremely low and the object is unrecognizable and irrelevant to the requested class." } }, "8931ca6e860c4037bd1947ba5147b3c7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky landscape with stairs and vegetation, not any form of water-like body as specified in the class list." } }, "8a38604b209f4c0e9ab28f7204340d39": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a water body. It shows a small section of terrain, possibly muddy or with very shallow, unclear water, alongside a large untextured block. It's not a good representation of the target class and includes other distracting elements." } }, "8a3f56f26e294fba821a5c9c800ecce1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid container or vessel, not a body of water or liquid water itself. It does not fit the 'water-like_bodies' class." } }, "8a672ca5ce7d4c02a64b2fa81ddb7df2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a complex scene with a house, patio, and landscaping, not just a single water-like body. While there is a structure that might be a fountain, it's not clearly depicted as containing water, and it's heavily integrated into the surrounding environment, violating the single object rule." } }, "8c121413fdb642788e25ce6d4a22cd17": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a container, possibly a thermos or water bottle, not a body of water like a lake, ocean, pool, or even liquid water itself. Therefore, it does not fit the requested class 'water-like_bodies'." } }, "8c66093ab50d4f54be665b6f0699e2ef": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a water tank, which is a container for water, not a water body itself (like a lake, river, pool, etc.). The class is focused on the water itself, not the container." } }, "8c7a4a1606704802a8bc6c5671b647db": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty pool structure, not a body of water. It does not depict any of the classes listed (lake, pond, ocean, pool *with water*, puddle, river, stream, waterfall, fountain, water surface, liquid water, water body)." } }, "8cf6304603574e92ba35faeb68d481b0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees, land, rock formation) in addition to the water (waterfall/stream). We are looking for images that cleanly depict a single object from the target class." } }, "8d39d88de9a64c73b3d96ec30b250738": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small body of water, like a stream or pond section, surrounded by rocks. This fits within the 'water-like_bodies' class. The quality is acceptable for training purposes, and simulating water physics in such an environment is relevant for video games." } }, "8d3d5a147ed64148aeda1dd866a0f38b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object or determine if it belongs to the 'water-like_bodies' class. The quality is too low for training data." } }, "8e75b8d408ea4c8581ef7d7f92d53c9a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'pool' category within the 'water-like_bodies' class. The image quality is good, and the object is relevant for physics simulation (water dynamics)." } }, "8eb5979876de443882901ec977b3a43d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty container, possibly a fountain basin or planter, not a body of water. It does not belong to the 'water-like_bodies' class. Additionally, the image is extremely overexposed and lacks detail, making it low quality." } }, "904067ee2f4b4610a6a3386216333f77": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts the structure of a fountain (basin and statue) but does not contain any water, which is the key element for the 'water-like_bodies' class, especially for physics simulation purposes." } }, "9182e2e8db744e9799d31b3206dfe47a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain (made of stone), but it does not depict any water or water body itself, which is the target class." } }, "91a61c7efa114de5b3cd6e354982a71c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground with grass and debris, not any form of water-like body." } }, "923897309b794266be80a788a3addd1f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable water-like body. The rendering style with blocky, multi-colored polygons makes it unsuitable for learning realistic physical properties of water." } }, "929ade0c35d544169ae5a8efaec01918": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a pool or basin, but does not depict any water or liquid, which is the defining characteristic of the 'water-like_bodies' class." } }, "93ce6637c1d8477396c9be8fb8d1a049": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' category. The quality is good, and it represents a single object suitable for physics simulation (water flow/pooling)." } }, "94cb138a42d94b21a2535a06f85619bd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a concrete structure, not a water body or water-like surface. It does not belong to the requested class." } }, "952aba385fe84d5ca2a0979fb64e37e5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene containing a fountain and puddles, but it also includes significant portions of the surrounding plaza, benches, and partial figures. It does not cleanly depict a single object from the 'water-like_bodies' class." } }, "9546a9fd893345449cb08d59057f54b2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains abstract 3D shapes and does not depict any water-like bodies such as lakes, ponds, rivers, or even a simple water surface." } }, "95494f1a2912425888e2de5dacee6e08": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky structure, possibly a windmill, on a textured blocky ground. It does not show any object belonging to the 'water-like_bodies' class." } }, "960fca10152e4fb4a6420421b22aabf3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing a body of water, which falls under the specified classes ('fountain', 'water body', 'liquid water'). The image quality is good, and the water is distinct within the structure. This type of object is relevant for physics simulations in a game." } }, "9812aa1535454df886fea502373edf08": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water. The class is 'water-like_bodies', and this image only shows the solid container, not the water itself, which is needed for learning water physics." } }, "99ba16783fd144a49aad95917bbd5345": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex structure containing water, rather than a clear, isolated water body like a lake, pool, or river. The focus is more on the entire building/structure than the water itself, making it unsuitable for learning general water physics." } }, "9a0a41e2b0f74230850efce53380fd08": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized icon of a water droplet, not a realistic depiction of a water body like a lake, ocean, or pool. It is not suitable for learning physics parameters for simulating larger water bodies." } }, "9b277189dee24f48a102d856e83c928c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a simple blue plane, which is too abstract and lacks the visual characteristics (like ripples, transparency, reflection, depth) to clearly represent any specific water-like body (pool, lake, etc.). It doesn't provide enough detail for learning visual or physical properties of water for game development." } }, "9bd3513fc79c4d059f0a6283f69389e5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized water surface, which falls under the 'water-like_bodies' class. The quality is good, and it represents a single object suitable for physics simulation in a game context." } }, "9c24a5196c8c494c89faf5c5c039d6e2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone structure, possibly part of a fountain or waterfall, but it does not depict any water or water body itself, which is the target class." } }, "9d4577cc56a945eeba5df2cdefef9710": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a seaplane, which is an aircraft, not a body of water like a lake, ocean, river, etc." } }, "9d5136a18ede489c82755108fe4ac8e5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it impossible to clearly identify the object. It does not resemble any form of water-like body." } }, "9ddd7c5da4a74371b400e81e4cfbec0c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid object, possibly a decorative bowl or part of a fountain structure, but it does not show any water or a water body itself. It is not suitable for the 'water-like_bodies' class." } }, "9de47420183b4057831515b290e9c193": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water, which is the key element for the 'water-like_bodies' class. We need images of the water itself (e.g., water flowing in the fountain, water collected in the basin) for physics simulation purposes." } }, "9df20fc35c5a4cac904ebe9f36ee368d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a decorative metal fish sculpture on a stone background, possibly part of a fountain, but it does not depict any water or water body itself, which is the required class." } }, "9e45fffbca1948449c89753c72bb4e7a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flamingo pool float, which is an object often found in water, but it is not a water-like body itself (like a pool, lake, river, etc.)." } }, "9fd8821504004af186cd9b034a1743cf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a statue on a rock, not any form of water body like a lake, pond, fountain, etc. It does not fit the requested class 'water-like_bodies'." } }, "a12d35e61c8e4ab4b715bd11974b37c2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a complex architectural element, possibly containing a small fountain or pool, but the water body itself is not the primary focus and is integrated into a much larger structure. This does not represent a clean, single object from the 'water-like_bodies' class." } }, "a1cb11095d664dce8e0e84419f9bfa8c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized body of water, possibly a pool or part of a fountain/canal system. While stylized, it clearly represents a water body and is suitable for physics simulation involving contained liquids. The quality is acceptable." } }, "a221c6525dc24dd89cf86a2967d65148": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water container (IBC tote), not a natural or artificial body of water like a lake, river, pool, or fountain. While it contains water, the primary object depicted is the container, which does not fit the requested classes for 'water-like_bodies'." } }, "a2420e0d2fa24930837781013018564b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' class. The quality is good, and the object is relevant for physics simulation (water flow)." } }, "a24b2438e3674b3b8c334d136dc89126": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fragment of a stone structure, possibly a shrine or part of a building, not a water body. It does not belong to the 'water-like_bodies' class." } }, "a26c0843e9f34fd5bb8ce3850bccc740": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid object, possibly a vase or container, not a body of water or any form of liquid water as required by the class 'water-like_bodies'. Additionally, the image is extremely overexposed and lacks detail." } }, "a4e1102dd92d4fe2b4ad68785d62cf95": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure (stone pillar and base), but it does not depict any water, which is the target class ('water-like_bodies'). We need images of the water itself for physics simulation." } }, "a51c2ca7535a4dcbb4cf708a21ad88c5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a highly stylized, rainbow-colored flow which does not realistically represent any of the classes listed under 'water-like_bodies'. While it shows a liquid-like flow, the unrealistic coloring makes it unsuitable for learning general physics parameters of water for simulation purposes." } }, "a5500bc2dd1a46999f512f0314ab7722": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object. It does not depict any recognizable water-like body from the specified list." } }, "a5a6c3aa412d44f6be7c9b0b39cb10cc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to discern any object, let alone one belonging to the 'water-like_bodies' class. The quality is too low for training." } }, "a5ddb659b9974f669af0318111287841": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex landscape scene with multiple elements (land, structures, several water bodies) rather than focusing cleanly on a single water-like body. We need images focused primarily on one instance of the target class." } }, "a6108c3b0dd24f9487cbcfa690b39f50": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone architectural structure, possibly part of a fountain, but does not depict any water or water body itself. It belongs to a different object class." } }, "a6e6b2155e2a495896d1446bf7f047c4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a low-polygon, untextured 3D model that appears to be a rocky landscape or terrain feature, not a water body. It does not resemble any of the classes listed (lake, pond, ocean, etc.)." } }, "a7acecdd7d354f0c825fa0eff23f6982": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object or assess its quality. It does not clearly depict any water-like body." } }, "a87f90ddf6e14bc08b23e137975bc14b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a flask containing a liquid, not a 'water-like body' like a lake, river, ocean, or pool as the main subject. The container (flask) is a significant part of the image and not part of the target class." } }, "a88ee15a32834989bd2a5b8c633cd598": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a pool, which belongs to the target class, but it also includes a separate, unrelated object (an umbrella) floating above it. We need images depicting only a single object from the class." } }, "aa547b4f59e5436380357ff6cb1910ed": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable water-like body. It looks more like a stylized container with some contents, not a natural or artificial body of water like a lake, pool, or river." } }, "aa7111584d2842dab15999bd2653651c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain or decorative pond, which falls under the 'water-like_bodies' class. The quality is good, and it represents a single object relevant for game environments and potential water physics simulation." } }, "aade585b2f5747ba95d5a0dc5d0d94a0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows pool floats (toys), not a water body like a pool, lake, or ocean itself. The target class is 'water-like_bodies'." } }, "ab407400ea0944519ed0fba91bc03756": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone a water-like body. It is too bright and lacks any detail." } }, "ab98983b8d97409abeaff47d30750cab": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (dinosaurs, flowers, lily pads) in addition to the water body, making it unsuitable for cleanly depicting a single object from the target class." } }, "ad494bbdcda040b992987472ebc49aa8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid structure, possibly part of a building or platform, and does not contain any water-like bodies as specified in the class list." } }, "ad911fadc2bc487bb57b3d11894e1ca7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it impossible to clearly identify the object. It does not depict any recognizable water-like body." } }, "adaec5c76d4246c3a16520b11e65ab4a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a solar fountain device (the mechanism with solar panels and nozzle) rather than focusing clearly on the water body (the fountain spray) itself. While it includes water, the main subject is the apparatus, which is not a 'water-like body' suitable for learning general water physics simulation parameters." } }, "adbace57c9e045409f4243b2ca7c58f4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts some kind of plant or algae, not a water-like body such as a lake, pond, river, or pool." } }, "adcb4558a4b74651a272a2587d59009e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily shows a fragment of a rock cliff. While a small waterfall is visible on the left side, it is incomplete and not the main focus of the object. The asset does not clearly depict a water body as the primary subject." } }, "ae63a2b6575147c2b705f8ee96eab451": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any object, let alone determine if it belongs to the 'water-like_bodies' class. The quality is too low." } }, "af1ec79c963e4b43bc9ffeaa85078e98": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (plants, rocks, flower) in addition to the stylized water patch. The water itself is represented as stacked solid-looking sheets, which is not a realistic depiction of a water body suitable for learning fluid physics parameters." } }, "af6ca88ada3842a382aea10163e875a5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an inflatable flamingo pool float, not a body of water or water surface like a lake, pool, river, etc." } }, "afb372eb350742d0b556b97b37eb16e7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract pink object, not any form of water-like body such as a lake, pond, river, or pool." } }, "afdec279da374342a78459b59f5aad05": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a structure that might be part of a fountain, but it does not depict any water or water body itself. The class 'water-like_bodies' requires the presence or clear implication of water (e.g., a pool basin, riverbed, ocean surface)." } }, "aff4e9fd3f7042d5855fade7411df4df": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tower, which is a structure designed to hold water, not a body of water itself like a lake, river, or pool. It does not fit the 'water-like_bodies' class." } }, "b04a3a142f7845cc8aeb2c9a07a73771": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a grey, solid-looking object that does not resemble any form of water or water body listed in the class description. It lacks the visual characteristics of liquid water (transparency, fluidity, reflection) and looks more like rock or dried mud." } }, "b05739abf9fd48ac90977be328acbbf6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a building structure (an indoor pool facility), not the water body (pool) itself in a clear and isolated manner. The pool is only a small part of the image and is viewed through the building's walls and roof." } }, "b123122b9e7a406f83922305accb1f84": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex structure, possibly a building or ship, in a pixelated style, not a water-like body such as a lake, ocean, pool, or river." } }, "b1758c86b7084b298c79ab6eedcda44f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a model of the Earth, not an actual water body like an ocean, lake, or river. It's a solid object representing water, unsuitable for learning the visual or physical properties of liquid water." } }, "b1b45153682a447facc70eeca84818cd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the specified class 'water-like_bodies' (specifically 'fountain' and 'water surface'). The quality is adequate, and it represents an object relevant for physics simulation (water dynamics)." } }, "b203c05bf0c44817ab85187237fefd53": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object from the 'water-like_bodies' class. It appears to be an abstract shape or possibly a coil/spring, not water." } }, "b24cb60a48fe46be80a67ce9994d63f2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character or creature, not a water-like body such as a lake, river, ocean, pool, etc." } }, "b39169eda1ae4c4fa77162ef82df1e9f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a drinking fountain, which falls under the 'fountain' category listed in the accepted classes. There are also visible puddles of water, fitting 'puddle' or 'water surface'. The image quality is good and it represents a single object relevant to the class." } }, "b3e3d7ec50604e8b8024045828b22233": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows water inside a bottle. While it contains 'liquid water', it does not represent the intended 'water-like_bodies' class (like lakes, rivers, oceans, puddles). The primary object depicted is the bottle containing water, not a standalone water body. This is not suitable for learning physics parameters for the general class of water bodies." } }, "b419831836814f9f908d462173470a74": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool structure, which is a type of water body listed in the class definition. Although it lacks texture and doesn't explicitly show water, the structure itself is recognizable as a pool and is relevant for defining the boundaries of the water for physics simulation." } }, "b4883e7a9e1a48e9855de83052693f3b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large coral reef structure within the water body. While it contains water (ocean), the prominent reef structure violates the requirement of depicting cleanly ONE SINGLE OBJECT belonging to the target class." } }, "b4f128e77c5b41e682e7d2c8f113b681": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, not the water itself. We need images depicting the water body for the class 'water-like_bodies'." } }, "b529a15041fb443081625a99142e8b96": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a chunk of landscape with cliffs, trees, ground, and a waterfall) rather than focusing cleanly on the water body (waterfall). While a waterfall needs surroundings, this image contains too many other prominent elements, violating the 'ONE SINGLE OBJECT' guideline." } }, "b52f6de0dca544cb8e873684c310b3e4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a pool basin, but it does not depict the water itself, which is the required element for the 'water-like_bodies' class. Additionally, the image is extremely bright and lacks detail/texture, making it low quality." } }, "b536fec3648f485087c8dd280e749502": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is just a solid color and does not depict any recognizable object, let alone a water-like body. It lacks any detail or form." } }, "b5ad91f939df44cd9e619324bca6fc0e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower in a vase, not any form of water-like body." } }, "b62f520b5505493585097b375dfdad21": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fountain or a small waterfall feature with water flowing over rocks. This falls under the 'fountain' or 'waterfall' categories within the 'water-like_bodies' class. The water element and its interaction with the structure are relevant for physics simulation." } }, "b657aba3fbde4bc6ae75272173f52f93": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized pond/fountain feature, which falls under the 'water-like_bodies' class (pond, water body, waterfall, water surface). The quality is good, and the water element is suitable for physics simulation training." } }, "b718e75b6c8e40719169a2504063aa03": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a water-like body." } }, "b71d533e28434a62b5c61530c3a8fb9d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flower, not a water-like body." } }, "b71f07b2d6eb4293b30cc4d1155bc615": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty basin or tub, not a body of water or water surface. It does not belong to the 'water-like_bodies' class." } }, "b722e7acf92d4356a4a20636577016f4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts the structure of a fountain, but it does not show any water. The class 'water-like_bodies' requires the presence of water, especially for physics simulation purposes." } }, "b82494f9757a4f4ebb115cb66fdd64b5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (four different pools/ponds), not a single object as required." } }, "b97e06a2763f473992d608862c3547e0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small fountain or water feature containing visible water, which falls under the 'fountain' and 'water body' categories. The quality is acceptable, and it represents a contained body of water relevant for physics simulation." } }, "b9ed31c1a76642d9bcd4b29d2e4d80a8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene containing a well with water, but also includes significant surrounding landscape (hills, path, mushrooms). It does not cleanly depict just a water body, but rather a structure containing water within a larger environment." } }, "bbf00f650955477ea178c5a69273a14f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a temple or ruin structure, not a water body like a lake, river, ocean, pool, etc." } }, "bbf17bb125f440d5ab2c71af13e5e6eb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a molecular structure of water (H2O molecules), not a macroscopic 'water-like body' such as a lake, pond, river, or pool. While technically water, this representation is unsuitable for the intended purpose of simulating the physics of bulk water bodies in a video game." } }, "bc46e918e4ae4c01830de924e9122aea": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fragmented 3D model, primarily depicting parts of a building structure (wall, door) rather than clearly showing a water body like a fountain. The object is incomplete and distorted, making it unsuitable for training." } }, "bcac1eccff7b427a88ded26dce0eb1c7": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene containing a bridge, land, and vegetation in addition to the water body (stream/river). We need images focusing primarily on the water-like body itself for learning its physics properties, not a composite environmental asset." } }, "bcef8bb775ab464aaf91fb30467b0f9e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone basin or trough, which is a container for water, not a body of water itself like a lake, pond, or river. It does not belong to the 'water-like_bodies' class." } }, "bd33d3e4b0a04088998d0dc08b6f5aec": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'pool' category within the 'water-like_bodies' class. The quality is acceptable for training, and while it includes the surrounding pool area, the pool itself is the main subject and relevant for physics simulation (water physics)." } }, "bd40442ef4714c6b827b3f92667e177f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a simple geometric shape and does not depict any recognizable water-like body. It lacks the visual characteristics of water (texture, reflection, transparency, etc.)." } }, "bda6ffeae6284301827c15da7aba2efd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a house on land, not a water-like body." } }, "bdb31b18b0264e47983339e4cdbe38ad": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or assess its quality or relevance to the 'water-like_bodies' class." } }, "be2ada255b444e0c85dbb4bc9118a7b8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rock formations, not any object belonging to the 'water-like_bodies' class." } }, "be2b511e2f4c4eecb067e70228e34ec4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a waterfall or stream flowing over rocks, which falls under the requested 'water-like_bodies' class. The quality is good, and simulating water flow like this is relevant for physics engines." } }, "c07327826fbe41a4aa9c39604a15bd7d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a water body and falls under the specified classes. The image quality is good, and simulating fountain water is relevant for physics engines." } }, "c101662f336149a49cf1557c502fdb4f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a lighthouse or buoy, not a body of water like a lake, ocean, river, etc. It does not belong to the 'water-like_bodies' class." } }, "c10b3cc50eac42fbbecd84d83156c7f1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to discern any object, let alone a water-like body. The quality is too low for training data." } }, "c124ec679fff46ab9a2bac89a0b2a3f2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized pond, which falls under the 'water-like_bodies' class. The quality is good, and it represents a type of object relevant for physics simulation (e.g., ripples, buoyancy)." } }, "c1b1ee27e50a45f6aa2e066dd18acc5a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any recognizable object, especially not one belonging to the 'water-like_bodies' class. The quality is extremely poor for identification purposes." } }, "c1e81cada55040c5a4fc747e358a7b6a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable water-like body like a lake, river, pool, or fountain. It looks more like a stylized structure or icon." } }, "c32516155086408e94430c938a7844ea": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (tigers, structures, ground), not just a water body. The potential water body (the dark patch) is small, not clearly defined, and not the primary focus of the image." } }, "c36a54322f1c46399c4367167cecddca": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden structure, not any form of water-like body as specified in the class list." } }, "c3730363bb374f68ba87b0acd67c001a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized waterfall and stream, which belong to the 'water-like_bodies' class. The quality is good, and while it includes surrounding terrain, the focus is on the water feature, which is acceptable context. Waterfalls and streams are relevant for physics simulation in games." } }, "c388345dbb874937a1265f28b1017e85": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool, which falls under the 'water-like_bodies' class. The quality is good, and it represents an object relevant for physics simulation (fluid dynamics)." } }, "c3e69fa40aec497981f9b9cd4fe9ebaf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a broken piece of architecture, not a water-like body." } }, "c639200ca2474737995a5207ad0499a5": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a playground or playset scene and does not depict any water-like bodies such as a lake, pond, pool, river, etc." } }, "c6ba2cae9f2f4c7bae8d1688f6022dad": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small scene with a tree, bridge, and path, but does not clearly show any water-like body like a stream, pond, or river. The focus is on the landscape elements, not water." } }, "c7fffc733b9549a29e6f32ce24b27ef3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object belonging to the 'water-like_bodies' class. It seems to be an abstract shape or a fragment of a larger model, not recognizable as water." } }, "c893aecf4e144a43ac46d0a2c317c6d1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a waterfall, which is part of the 'water-like_bodies' class. Although it includes the surrounding rock face, this is inherent to the nature of a waterfall and provides context. The water itself is visible and the image quality is acceptable for training." } }, "c8fdd264d7e24f29bc329d13fe6fe92d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which is listed under the 'water-like_bodies' class. The image quality is good, and it represents a single object concept relevant for potential water physics simulation in a game environment." } }, "ca4a9e92855643ae96baff9ac52154dd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water. The class 'water-like_bodies' requires the presence of water itself." } }, "cafecc6ab28342cf960a3760ff0909d4": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool, which falls under the 'water-like_bodies' class. The quality is good, and the water body is suitable for physics simulation." } }, "cb3322554187417b85ca93339a2543ac": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what looks like pieces of rock or mossy ground, not any form of water or water body." } }, "cc935a8c426147b38491504096e3f689": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene containing an island with trees and structures surrounded by water, rather than focusing solely on the water body itself. We need images primarily featuring the water-like body." } }, "cd0c2d13742c4b5c8cd6e401726fb8b6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which contains a water body. This falls under the specified classes ('fountain', 'water body'). The image quality is adequate, and it represents a single object relevant to the class. Simulating the water in a fountain is a valid physics application." } }, "cd792b3508184f9bbfdfb8e5af9744a6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized body of water, resembling a pool or fountain, which fits within the 'water-like_bodies' class. The quality is good, and it represents a single, contained object suitable for physics simulation (e.g., water surface dynamics)." } }, "cd8e0bb1401441ec9c97b05bb30a4b38": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a larger scene including a well, path, and landscape. The water body (a small pond) is only a minor component and not the main focus of the image." } }, "ce5655df9f43471095c90c0767a420be": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone structure that might be part of a fountain, but it does not depict any water or water body itself. The focus is on the stone material, not the water element required for the 'water-like_bodies' class." } }, "ce863071389e4ea3859d33938c7b5296": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone a water-like body. It is too bright and lacks any detail." } }, "cf3c5386e06b4690ae72a0ff90f82214": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water tank, which is a container for water, not a water body itself. It does not fit the class 'water-like_bodies'." } }, "cf59cf7f05fb422ea938674ee7289ab6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone structure that might be a fountain, but it does not depict any water or water body, which is the target class. The focus is on the structure itself, not the water." } }, "cfc9ff4057b34d20b173494df2b237bb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and extremely bright, making it impossible to discern any object, let alone one belonging to the 'water-like_bodies' class. The quality is too low." } }, "d01a6abb1e4648688b6869d64c4c4afd": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene containing a house and a pool, viewed from a very high angle. The pool (the water body) is very small within the frame and not the primary focus. The image contains significant other objects (house, trees, strange artifact on the left) and a large amount of empty space, violating the requirement for the image to cleanly depict a single object of the target class." } }, "d053ad003a4149b89b71105f3d2ba127": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty bathtub or pool basin, not a body of water itself. It does not depict any of the target classes like lake, pond, ocean, pool (filled with water), puddle, river, etc." } }, "d05c264ba9c840789d1a92f119671b77": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts liquid being poured and forming a puddle, which falls under the 'liquid water' and 'water surface' categories within the 'water-like_bodies' class. This representation is suitable for physics simulation." } }, "d09f3fbc2a784d86b8d7b6105a4e234b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, flat, dark blue object, possibly a tile or slab. It does not resemble any form of liquid water or a water body like a lake, pond, ocean, pool, puddle, river, etc. Therefore, it does not belong to the 'water-like_bodies' class." } }, "d12cc587fc7d47a6a42a0242862d576c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure, not a water-like body. It is also very bright and lacks detail." } }, "d154ffcd1dab46a28f96c3d7a85d8136": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a water-like body. It appears to show a solid, textured surface (like concrete or dried mud) with a small cylindrical object on it." } }, "d2116d7a319d416492717fbfe8b48beb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, rocky structure with some blue elements, but it does not clearly represent any recognizable water-like body such as a lake, river, ocean, pool, or even a stylized waterfall or fountain." } }, "d22ce54fbb4f40aeafaa05c28441584b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to clearly see the water body. Additionally, it depicts a whole landscape scene rather than focusing primarily on the water body itself." } }, "d249d8a4cd4b4a4b992533a960f08d68": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a stove or a water dispenser, not a water-like body." } }, "d251a8cdab91443d8ac148ea309c2868": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a swimming pool, which falls under the 'pool' category within the 'water-like_bodies' class. The image quality is good, and the object is suitable for physics simulation (e.g., fluid dynamics)." } }, "d2584b93416a4bf6b543e520a8583d5d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank (white) and does not depict any object, let alone a water-like body." } }, "d2c14c138991490f994b0502dc333781": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a character and a cauldron in addition to the water, violating the requirement for depicting only a single object from the target class." } }, "d3b9a5c1807947b4a7548336162a5a26": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, but it does not depict any water. The class 'water-like_bodies' requires the presence of water (liquid water, water surface, etc.). This image only shows the solid structure." } }, "d40e9dd0d232486ebe14f1efb6e398ef": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of mossy rock or cliff, not a body of water or anything resembling the target class 'water-like_bodies'." } }, "d5398688b3884d40950e2d21e0f2cf24": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (water, tank, creatures, rocks, sand) rather than focusing cleanly on a water body. The creatures are distracting elements." } }, "d542a0ee1bd848ef86a62223c8483e5d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a drinking fountain structure, which is a type of fountain, but it does not depict the water itself. The focus is on the solid structure, not the water body, making it unsuitable for learning the physics parameters of water-like bodies." } }, "d5b15b0fe353454db7c8e44260042633": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a puddle, which falls under the 'water-like_bodies' class. The quality is good, and while it includes the surrounding ground, this is necessary context for a puddle. It is suitable for physics simulation purposes." } }, "d6c0f03a8287427692078398cfda4ff1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain, which falls under the 'water-like_bodies' class. The quality is acceptable, and it represents an object suitable for physics simulation (water flow)." } }, "d78668ddd6d945c4b8f492b2c85819b8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pool, which belongs to the 'water-like_bodies' class. While it includes surrounding elements like the deck and a chair, these are contextually relevant to a pool scene and the water body itself is the main focus. The quality is good and it's suitable for physics simulation (water dynamics)." } }, "d7e4fc04acf54300b58b4c0feca45fd8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, brown object, possibly a piece of wood or rock, not a water-like body." } }, "d839d23a5e5b4ebfb0cbd68f755f19a2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a terracotta jug or pitcher, which is a container for liquids, not a body of water or water itself. It does not belong to the requested 'water-like_bodies' class." } }, "d9166374296a47a79cb4fe14f5a0d9cb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object or its details. The object is barely visible against the white background." } }, "d99444d5218144a2a023919bb9aa5275": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (island, buildings, trees, floaties) in addition to the water. The water itself is highly stylized and cartoonish, making it unsuitable for learning realistic physics parameters for simulation." } }, "db09c5f5fe1f432ebfd02b45f7d1de20": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fountain, which falls under the 'water-like_bodies' class. The quality is acceptable for training, and it represents a single object relevant for physics simulation (water dynamics)." } }, "db2cf9d2a14448a58dfdd7fd653d8dac": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a unicorn pool float, which is an object designed to be used *on* water (specifically a pool), but it is not a water body itself. The target class is 'water-like_bodies'." } }, "db39991b83f048b5a86b00b6af776007": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a wireframe structure, possibly a building frame or scaffolding, and does not depict any form of water or water body as required by the class 'water-like_bodies'." } }, "db631105099e41e89ae01225e068cf48": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (tree stump, lily pads, ground) in addition to the water body. We are looking for images that primarily depict the water body itself." } }, "db92652111c146a1a5f4aff04d6fb0fc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract white solid object, not a water-like body. It does not resemble any of the target classes like lake, river, ocean, puddle, etc." } }, "dbc10733f0e24db89df19fcd34636e12": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows several small, solid, rounded objects, possibly cushions or hats. It does not depict any form of water or water body (like a lake, puddle, river, etc.)." } }, "dc95389f28d34dc3b7386ddeaab7d495": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains many other prominent objects (a building, large rock formations) in addition to the water bodies (streams/waterfalls). We need images that focus primarily on the water-like body itself." } }, "deb124e4951e46599af61f327ae814d6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat grey surface with a small white object in the center. It does not clearly depict any recognizable water-like body such as a lake, pond, ocean, pool, etc." } }, "ded920aa76d443f8bec921da26637ca2": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows rock formations, not any type of water-like body as specified in the class list." } }, "defac3980f934e3aab2e71d6495f5e6f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern any object, let alone one belonging to the 'water-like_bodies' class. The quality is too low for training data." } }, "df4de583de894d1c9877b0126ed6f936": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain or small pool, which falls under the 'water-like_bodies' class. The water body is the central element, and the quality is sufficient for training. Fountains/pools are relevant for physics simulation in games." } }, "df4e58f178754b2d8a2a1a08be320eab": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely overexposed and appears almost entirely white. It is impossible to discern any object, especially not a water-like body. The quality is too low for training data." } }, "df6c348334ca4e65966c2a9b19a48c21": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a liquid splash, which falls under the 'liquid water' or 'water surface' categories within 'water-like_bodies'. The quality is good, and it shows the object cleanly. While the color is opaque and not typical for water, the form represents a liquid in motion, which is relevant for physics simulation." } }, "df81a51c77b14d56ba12b0595ed3cd18": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains furniture (chairs, table) and does not depict any object from the 'water-like_bodies' class." } }, "dfb7154648504b51a728c206c964df1e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large complex with buildings and construction elements, not just the pool/water body. We need images focused primarily on the water body itself." } }, "dfd5f9e00d6d4d82ba734b20aaa84a18": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, but it does not depict any water or water surface, which is the key characteristic of the 'water-like_bodies' class. It lacks the necessary visual information (water texture, flow) to be useful for this category, especially for physics simulation purposes." } }, "e0582d1e3a504e29a36f8c6d207bafba": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a significant object (a house) in addition to the pool (water body). We are looking for images that cleanly depict a single object from the target class." } }, "e16ca8ac7f7249ed8a9fe28231ccafc6": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized pond or pool, which falls under the 'water-like_bodies' class. The quality is good, and while it includes surrounding rocks and a base, these elements define the water body and are acceptable context. This type of asset is relevant for physics simulations in games (e.g., interactions with the water surface)." } }, "e261b140b0494d61ba764d2812fb284b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone fountain structure, but it does not show any water. The focus is on the solid structure, not the water body itself, which is required for the 'water-like_bodies' class, especially for physics simulation purposes." } }, "e29cfa4817f844e5bae8aac708067455": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a brick wall and a water pump/tap. While the ground appears wet, possibly forming a small puddle, it does not clearly show a distinct 'water-like body' as the main subject. The focus is on the structure, not the water itself." } }, "e2f6caedfc1143c49b334cd64777c77f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains abstract brush strokes and does not clearly depict any recognizable object from the 'water-like_bodies' class. It is unsuitable for learning physics parameters related to water." } }, "e30dbfd4088e4967bf6551dab00135fe": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a statue on a plinth. While there might be a small amount of water or dampness in the surrounding basin, it is not the main focus and does not clearly represent any of the specified water-like bodies. The dominant object is the statue, not the water." } }, "e332865c1abc4c6e81fc41954fe0c18a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (house, hills, stream) rather than cleanly depicting a single water body. The stream itself is also very stylized and part of a larger landscape model, not isolated." } }, "e3a8594dbd384da8baf7e5e8b7dab2d0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a water-like body." } }, "e3a9b98bbd4e4cc2888becd2ddd18927": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a concrete drainage structure and surrounding terrain. While a small body of water is visible, it is not the main focus of the image and is overshadowed by the other elements. We need images where the water body itself is the clear, primary subject." } }, "e4ed6333900b4fcbbc175394a2e8be0b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, which is made of stone, but it does not depict any water. The request is for 'water-like_bodies', and the absence of water makes this image inappropriate for learning water physics." } }, "e54ff76bef854b128af8d20cf9c03729": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and stylized. It looks more like a faded texture or visual effect rather than a clearly defined body of water (like a puddle, pond, or lake surface). It lacks the detail and definition needed for physics simulation training." } }, "e5e34bcfafc041469a2b67fccae8e0bb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a container (IBC tote), which might hold water, but it is not a water-like body itself (e.g., lake, river, ocean, pool, puddle, water surface)." } }, "e6370546c6204bf3bdde275113956585": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a water-like body." } }, "e75f698a464b43299ed2d67df36de6dc": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a splash or stream of liquid water, which falls under the requested class 'water-like_bodies'. While the texture is somewhat metallic, the form is recognizable as liquid in motion, which is relevant for physics simulation." } }, "e77804c2d9fb42e6a0e1074af1f1a779": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very fragmented and incomplete section of what might be a stream or waterfall, heavily mixed with rocks and foliage. It doesn't clearly depict a distinct water body and the presentation is too artifact-like and low-quality for training purposes." } }, "e7c5302f770a453385a5311076238ff3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pond, which falls under the 'water-like_bodies' class. Although it includes surrounding elements like rocks and grass, these are contextually appropriate for a pond environment. The image quality is good, and ponds are relevant objects for physics simulation in games (e.g., fluid dynamics, buoyancy)." } }, "e8297fb1af024585bf1cf27eee90e3b3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain with flowing water and a water surface in a basin, which belong to the 'water-like_bodies' class. The quality is good, and simulating this type of water feature is relevant for physics in video games." } }, "e846f979a9624b8a9b2457b85f26c194": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains multiple distinct objects (one large pool/basin and two separate fountains), while the requirement is for images depicting only a single object." } }, "e9f30339fb764dd7b78e2149e2e6cb41": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fountain or pool containing liquid water, which falls under the 'water-like_bodies' class. The image quality is good, and while it includes the structure, the water body is the main focus and is integral to the object type (like a fountain or pool). This type of object is often used in game environments and could involve physics simulation for the water." } }, "ea84756746554d2d94469c98bcc460d9": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an empty stone trough or container, not a body of water or liquid water itself. It does not fit the requested class 'water-like_bodies'." } }, "eaf56f97d54b44e29f290bae1b7f993f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a drinking fountain, but it does not depict any water, which is the essential element for the 'water-like_bodies' class, especially concerning physics simulation of fluids." } }, "eb3d9319f7734382a6186af77298a550": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, poorly rendered object that does not resemble any form of water-like body (lake, river, pool, puddle, waterfall, etc.). It's unclear what the object is supposed to be." } }, "eb46006df1b44644a4e92b932fb51c97": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure (tap, pillar, base, drain) but does not depict any water, which is the key element for the 'water-like_bodies' class. We need images showing the water itself for physics simulation." } }, "eb803a237b474027974d2d52cbe6c4a9": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a frozen body of water (ice), not liquid water. While ice is technically water, its physical properties (solid, brittle) are vastly different from liquid water, making it unsuitable for learning the physics of fluid water bodies like lakes, rivers, or pools as intended for the simulation." } }, "eb8055cdf80345aaaff95f84d02d1922": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a water body. It looks more like a dry or very shallow riverbed or channel with some structure, rather than a distinct body of water like a lake, river, or pool." } }, "eb9767b70d57467aa03b022ff91c35cf": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene including mountains, a building, and vegetation, not just the water features (waterfall and pool). We need images focusing primarily on the water body itself." } }, "eca0b9efb68048a8a7e7a003af854c51": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a simple blue torus shape, which is too abstract and does not clearly depict any recognizable water-like body (lake, pool, puddle, etc.). It lacks the necessary visual detail or context to be useful for training physics simulations related to water." } }, "ed40a02ed7244a9fa0d3158a67d13ee9": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a frog statue, not a water-like body such as a lake, pond, ocean, pool, puddle, river, stream, waterfall, fountain, water surface, liquid water, or water body." } }, "ed7f99f5e25e4c1ba8c9cd707c7dbd14": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone carving, possibly part of a fountain, but does not depict any water or a water body itself. It does not fit the requested class 'water-like_bodies'." } }, "ed9192ef26594baeba266e2bcbe8715f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a water-like body." } }, "eeaa973c1f5c44d085fcdc194691293a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a large architectural structure (ruins/arena) with some small figures. While there is a small blue area that might represent water (like a pool or fountain base), it is not the main focus of the image and is heavily obscured/integrated with the structure. We need images where the water body itself is the clear, primary subject." } }, "eec5f791e1484b03becdcb0a4189e39f": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (pool, trees, structures, ground, fence) and not just a single water body. We need images focusing solely on the water-like body itself." } }, "ef0dd3c3b18b4c9889cd9d9490d99c91": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain-like structure filled with water, showing ripples on the water surface. This fits within the 'water-like_bodies' class, specifically 'fountain' and 'water surface'. The quality is good and it represents a contained body of water suitable for physics simulation (e.g., ripple effects)." } }, "ef4d26f737fd4ce88e39387e419de1b3": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a water bottle containing water, not a 'water-like body' such as a lake, river, or ocean. The primary object is the bottle, not the water itself in the context of the requested classes." } }, "efdf2f860c0e49ceab9b25ff0e06b387": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a small landscape scene containing a water body, land, and rocks, rather than focusing cleanly on the water body itself. This violates the requirement for depicting a single object class." } }, "effc23e73a734fc3a896d18b520e26d0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a fountain, which appears to be made of stone and is currently dry. It does not depict water, which is the key element for the 'water-like_bodies' class and its associated physics simulation (e.g., fluid dynamics)." } }, "efffa393cd604090a733e96442a1c0d8": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any object, let alone one belonging to the 'water-like_bodies' class." } }, "f05a86824ebf4f88b5040485349cef7b": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white space and does not clearly depict any recognizable water-like body. The few small marks are indistinct and lack the necessary detail to represent the target class for training purposes." } }, "f0755f2beb71463a868cc8e2cf88f712": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of wood or rock, not a water-like body." } }, "f17257b7f9f84ca998e0e0381eecbbca": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bridge, not a water body like a lake, river, pool, etc." } }, "f1d905ab30c149f3b5d4841b19f96b16": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract white shape, possibly a trough or channel, against a white background. It does not depict any form of water or a water body as required by the class 'water-like_bodies'. The image is also extremely bright and lacks texture or detail, making it low quality." } }, "f23826507648427a8f3f9e294c5c7a0c": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D model of a structure, possibly a fountain base or a pool, but it does not depict any water or water surface. It's just an empty container structure, lacking the actual element required for the 'water-like_bodies' class." } }, "f3d2e8dec4eb408bba4bea2d970e213d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rocky surface, not a clear body of water. It does not fit into the 'water-like_bodies' class." } }, "f40a1983ba6944acaa1053323bb20e26": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden walkway or bridge over ground, not a water body or any form of water as required by the class 'water-like_bodies'." } }, "f44007d8b4a94e9d924bc5ee93480169": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a container and stand, with the water being only a part of the overall object. The focus is not solely on the water body itself, which is required for this class." } }, "f45154da5a524dff9a2e94faa97a205e": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object from the 'water-like_bodies' class. It shows a planter or bench structure with plants." } }, "f50b5f2d84f54f07b84225ed93f1e183": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any water-like bodies. It shows a section of a garden or yard with a wooden fence, rocks, and a tree/driftwood." } }, "f69f7b35f6134688befdbbe495756f81": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a contained body of water (like a pool or fountain base), which belongs to the 'water-like_bodies' class. The image quality is good, and simulating water physics is relevant for game development." } }, "f7a87acd4e6147ca96a03ab33dcaadf1": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an aerial view of a landscape, possibly a construction site or quarry next to a road, but it does not contain any visible water-like bodies such as lakes, ponds, rivers, etc." } }, "f890aece3f494fbd995bf289a66f5bc0": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pet water dispenser, not a body of water itself. It does not fit into the specified classes like lake, pond, ocean, pool, puddle, river, stream, waterfall, fountain, water surface, liquid water, or water body." } }, "f93e5f4848ad4086914477f7eea63579": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts large tanks or reservoirs and surrounding land, not a clearly visible body of water like a lake, pond, river, or pool. It does not fit the 'water-like_bodies' class description." } }, "f9876d14bb4d4e28bd442eea88c5227d": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fountain structure, but it does not depict any water. The class is 'water-like_bodies', and the image must clearly show water or a water body. This fountain is dry and covered in moss." } }, "f9f59865456c4f628e9d85b19ad0de51": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is extremely low, distorted, and fragmented. It is impossible to discern any object, let alone a water body." } }, "fa9108e6569547f29e30b2d956c9b9fb": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a waterfall or stream, which falls under the 'water-like bodies' category. The quality is acceptable, and it represents a dynamic water feature suitable for physics simulation." } }, "fad1bf3ddc334e9287fcffca1d8537ac": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fountain containing water, which falls under the 'water-like_bodies' class. The quality is good, and simulating water physics in a fountain is relevant for game development." } }, "fb3ee8421348471195326737eeda0540": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a water dispenser, not a body of water like a lake, river, ocean, pool, etc. It doesn't fit the requested class 'water-like_bodies'." } }, "fb66a847ff514c21806ac8858aecc100": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows the structure of a drinking fountain, but it does not depict any water. The class 'water-like_bodies' focuses on the water itself (e.g., water surface, liquid water, waterfall, water in a fountain), which is relevant for physics simulation. This image only shows the container/dispenser." } }, "fdaba9e0d15e4c3f9be97826b87123ff": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains abstract geometric shapes and does not depict any object belonging to the 'water-like_bodies' class (e.g., lake, ocean, pool, river, water surface)." } }, "ff2831bb45274c8d8b44a0cd1046c94a": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a seahorse, which is an animal, not a body of water or liquid water. It does not belong to the 'water-like_bodies' class." } }, "ff2af1a29a4f47eb87fb9b8e78051956": { "obj_class": "water-like_bodies", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a prominent figure floating in the pool, which distracts from the water body itself. We want images focusing primarily on the water-like body." } }, "0018d378a2cd4ad58fa8fcae42e8af9e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or anything related to the requested class. It shows abstract shapes." } }, "004ff784dc744f029ed6a5c4c8504b74": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a sandbox which contains sand, but it also prominently features the wooden box structure and several plastic toys. This violates the requirement of depicting cleanly ONE SINGLE OBJECT, as the sand is presented alongside multiple other distinct objects/materials." } }, "00c205c6e3ed4cbe943b111e2aa38fbf": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized animal model, not sand or any related sandy terrain/object." } }, "00c4468f1bca48509d7d2bd66b564cbc": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rock formations, not sand or sandy terrain. While rocks might be found in sandy environments, the object itself is rock, which has different physical properties than sand." } }, "013eac9da6114be0b32bab4008957ab7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sandy terrain base, but it also includes a large, prominent rocky mountain formation, which is a different object class. We need images focusing solely on sand or sandy features." } }, "013f1b3f374348d4baff0d496f602ece": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large structure in addition to the sand. The sand is not the primary focus of the image." } }, "01a98cf7f90c482498ecd717f79c673a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandbox containing sand, which falls under the requested classes ('sand box', 'sandpit'). The sand is the main element and is suitable for physics simulation learning. The quality is good." } }, "01c77468a1d04414ae24ecd1d1559f7d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cylindrical structure made of bricks or wood, not sand or any related object like a sand dune, sand pile, or sand texture." } }, "01cb0f002e4d41b793355fd504eb80af": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a large piece of driftwood or root, which is not the target object class ('sand'). While there is sand present as the base, it is not the main focus and the image does not depict cleanly ONE SINGLE OBJECT belonging to the sand class." } }, "01dc8078f03b4fd992383488e6caba41": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a figurine or trophy, not sand or any related concept like sandy terrain, sand dune, or sand pile." } }, "0506f03c5e354288a53bb067cef53aa8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vehicle (a stylized military truck), not sand or any form of sandy terrain, pile, dune, or texture." } }, "0525652a01ef405f85dafc92fb003223": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a block of sand, albeit in a stylized, pixelated format common in video games like Minecraft. It fits the 'sand' class and is relevant for physics simulation within that specific game style (e.g., gravity affecting sand blocks). The quality is good for its intended style." } }, "068f17e7bcf74d04bacf5524c4a2079d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tractor, which does not belong to the 'sand' class." } }, "0699ed3d7f0546a1afb3f19fa9adbcfc": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with multiple objects (building, trees, water, boat) in addition to the sandy terrain. It does not cleanly depict only sand or sandy terrain as a single object." } }, "07c4a89f45824a52b6c6055b615b11e6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pile of sandbags, not sand itself or a natural sand formation like a dune or pile. The primary object depicted is the bag, not the sand within." } }, "07d7442c0df54e4b9119896592189034": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stylized, blocky structure (like from Minecraft) made of sand-colored blocks, surrounded by water and sitting on a cross-section of land. It does not depict natural sand or sand formations (dunes, beaches, piles) and includes multiple elements. Furthermore, the blocky nature is not representative of the granular physics we aim to simulate for sand." } }, "080a3e333eb44e17b998d0451482276b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sphere with a sand-like texture applied, but it doesn't depict sand as a material or object (like a pile, dune, or terrain) in a way that is useful for learning its physical properties. The texture itself is also somewhat blurry and lacks clear granular detail." } }, "0857f2ebd4fc46769a90e69225a558d4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a shoe or sandal, not sand or any related terrain/object." } }, "08a4b8bbba914942a6294e98720adf1a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a significant pile of rocks in addition to the sand, violating the requirement for depicting only a single object class cleanly." } }, "08d1e9bf531842508313f72369b39a78": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts sandy terrain, which falls under the requested class list. Although it includes rocks and some vegetation, sand is a prominent feature, and terrain models like this are relevant for physics simulations in games." } }, "0978ea160bd44521b87399cf3478e662": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized, blocky objects that resemble rocks or sandbags rather than natural sand formations like dunes, piles, or sandy terrain. These solid objects do not represent the granular nature of sand needed for physics simulation." } }, "0a227353cd804df2b5414107d9e36d18": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an hourglass, which contains sand, but the primary object is the hourglass itself, not the sand. We are looking for images focusing solely on sand (like dunes, piles, textures, terrain)." } }, "0abbd5ee9c404913bc815b7d59a505e3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts sandy terrain, which falls under the requested class 'sand'. The quality is acceptable and it represents a single object type relevant for physics simulation in a game environment." } }, "0af5c12eeebf4183b0385a00114e3d6b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The texture applied to the sphere looks more like asphalt or coarse gravel rather than sand. Sand typically consists of much finer grains." } }, "0b1a20c025a1492aa5744f8228a078f4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image prominently features a sculpture, which is not part of the 'sand' class. The sand is only present as a base for the main object, violating the requirement for the image to depict cleanly ONE SINGLE OBJECT belonging to the target class." } }, "0b4c9a16a76144e395b4f5b545d5008a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, colorful block structure, not sand or any related concept like dunes, beaches, or sand textures." } }, "0bd49bc33b4a4b5b85e3daeb864e4643": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a small, abstractly shaped fragment with a sand-like texture, but it doesn't clearly depict sand, a sand dune, sandy terrain, or any recognizable form of sand relevant for physics simulation. It looks more like a decal or a broken piece rather than a volume or surface of sand." } }, "0c258d4af163445bbe5dac8e25e11abb": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent metal box placed on the sand, which is not part of the 'sand' class. We need images primarily depicting sand itself." } }, "0c4866db658b478089778d7f41a42583": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a maze structure, not sand or any related concept like beach sand, desert sand, sand dune, etc. It is completely unrelated to the requested class." } }, "0c53c3b1bc2a4e5daef796f9f5eee57b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (palm trees, chair, rocks, water) in addition to the sand, not just sand itself. We need images focusing solely on the sand material/object." } }, "0c5e662a3bb8486ab3551dbf4f8d4ee5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character figure, not sand or any related concept like a beach, desert, sand dune, or sand texture." } }, "0ce30ce3b2674cbe81af9bbb495c3b7e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains prominent rocks in addition to the sand, violating the requirement for depicting only a single object class." } }, "105293cb00884a079bfc4809ca32b541": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with a sand structure, water, islands, and various other objects, not just sand itself. It violates the requirement of depicting a single object cleanly." } }, "1078aabd1f4d47e9bff907e69211ae97": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is grayscale and lacks the necessary texture and color detail to clearly identify it as sand or sandy terrain. It looks more like a generic topographical map or heightmap render, making it unsuitable for learning visual material properties." } }, "107f6a1f6aa74449bcd32ef136311d86": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image quality is very low, and the texture does not clearly resemble sand. It looks like a low-polygon model with a blurry texture, making it unsuitable for training." } }, "11c6e48a043c4c1da05873909a75714f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate or stand, not sand or any related sandy terrain/object." } }, "120c9ec7f63345c88aac2a407b563f17": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. It shows some kind of display shelves or similar items." } }, "123e9f7036bc4b1388eb83d0404cdf8c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a high-heeled sandal, which does not belong to the 'sand' class." } }, "127b7785309c41479d94e4e9f22516f6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a terrain section that appears to be a mixture of rock/debris and possibly some lighter material underneath, but it doesn't clearly represent 'sand' or any of its specific types (like dunes, beach sand, etc.). The texture is ambiguous and looks more like rubble or rocky ground than sand." } }, "128c7aff0cee477bb8c91121620d9d59": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with multiple objects (sand terrain, cacti, rocks, water) rather than focusing solely on sand. Additionally, the image is very bright/overexposed, reducing its quality." } }, "143b7212ee38401694cdfae452c3529e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid rock or piece of sandstone, not sand or sandy terrain as requested by the class definition." } }, "14888f5a7ec44332b7793f195dc8a6f5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a blue textured rectangular object, possibly a mat or a ramp. It does not resemble sand, beach sand, desert sand, or any other item listed in the class description." } }, "149e242fe8ee4c99b48ab5b290b03ce1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (the sandy base plus other elements on top) and the base itself is a very stylized, low-detail representation that doesn't clearly depict sand suitable for physics simulation training." } }, "1559d693df784a32ad629976c3440ec5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract white geometric structure, not sand or anything related to the 'sand' class." } }, "166bc70d06e14443ad1610c3a8c6859e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of machinery, not sand or any related sandy terrain/object." } }, "168a882123cb443281fb2fd37367f6f0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too low. It is extremely bright and washed out, making it difficult to discern the texture or even confirm if the material is sand. It lacks detail and clarity needed for high-quality training data." } }, "169d7e568e594e0780f5742c48a9e3b0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sandbag, which is an object containing sand, not sand itself as a material, terrain feature, or pile as specified in the class list." } }, "16dbce6f08404f4d8b2ceea9eeb689ce": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a shoe, not sand or any related concept like sand dunes, sandpits, or sandy terrain." } }, "17f28fa711a44f5694a5bcf3a9d96899": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a segmented, vertical object that does not resemble sand, a sand pile, sand dune, sandy terrain, or any other form of sand listed in the class description. It looks more like a stylized trunk or column." } }, "183675ddf05b4939a6d2ca956ad3614a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flat rock, not sand or any related concept like sand dunes, sand piles, or sandy terrain." } }, "1846522792f94af0a8cb8a7a8424e9f8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related concept. It shows a yellow object with text on it, which is completely unrelated to the requested class." } }, "1910f7e2b5484c38acf85d78da8ac4d9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a building, not sand as a terrain feature or material. While the roof might use sand-like textures, the object shown is a house, which includes many other elements like glass, wood, and plants. This does not fit the requirement of depicting a single object from the 'sand' class." } }, "1a4e369c150549bc82ff2e19b72010a4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain with visible texture, fitting the requested class. The quality is good, and it's relevant for physics simulation (e.g., interaction with granular surfaces)." } }, "1ac0847acae44ffe9c3783be28e82bcf": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of sand, which falls under the specified class. The quality is good, and it represents a single object relevant for physics simulation (e.g., deformation, pouring)." } }, "1acc9c3452bb45d89e218c533ce646b6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex structure (like a sandcastle or building on sandy terrain), not just sand itself in a form suitable for learning general material physics (like a pile, dune, or texture). The focus is on the structure, not the sand material." } }, "1acfa91b81e54de0a2c3a3c49e53242d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation or cliff section, not sand or sandy terrain as required by the class description." } }, "1b657465f4944f77938c3b5565d9728b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple different types of blocks (dirt, ore, glowing blocks, glass, sandstone?) from a voxel-based game, not a clear depiction of sand or sandy terrain suitable for learning realistic physics." } }, "1be2f6d4088140629117e0a85a44511c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The texture applied to the sphere does not convincingly resemble sand. It lacks the characteristic granular appearance and looks more like a smooth, stylized surface, possibly stone or even something abstract. It doesn't clearly depict any form of sand (beach, desert, pile, dune, etc.)." } }, "1c5f772e12fc44ff995776e38e1953f2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only a small, fragmented piece of terrain with a sandy texture. It does not depict a clear, complete object like a sand dune, sand pile, or sandpit, making it unsuitable for representing the 'sand' class or for meaningful physics simulation." } }, "1cef0cbf6c7b4d1f899a005440a13045": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a voxel-style building (hotel), not sand, a sand dune, beach sand, or any other object listed in the class description." } }, "1cf15b0f7a2e414091c7cf0464071140": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. The objects shown are extremely small, pixelated, and unclear against a white background." } }, "1d5173437987440bab6075fc223acd17": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky character or object, possibly from a game like Minecraft, which incorporates some sand-textured blocks. However, it does not represent sand, a sand pile, sand dune, or sandy terrain itself. It's a composite object and not suitable for learning the general physical properties of sand as a material." } }, "1d622c5c920b4b37801a10ba04186f57": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D model of a room or gallery with pictures on the walls, not sand or any related object like dunes, beaches, or sandpits." } }, "1e3445ea20034c7f975cdd50f1510925": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a human character model, not sand or any related object like a sand dune, beach, or sand texture." } }, "1ede67f129ad4169a1b6fd43b20c4b59": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts stylized figures around a table with a map-like surface, not sand or any related object like a sandpit or sandbox." } }, "206f3c369d40455a81f80a5969cbf212": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a highly stylized, blocky representation and does not clearly depict realistic sand suitable for physics simulation. It also includes other elements like water and structures." } }, "21464da596bc42c8a5077a4bc2c24096": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict sand. The texture and color resemble rock, concrete, or possibly dirty ice/snow rather than any form of sand (beach, desert, dune, etc.). It lacks the typical granular appearance." } }, "21cd6b9b860d4b45940522823cea379e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid rock or piece of sandstone, not loose sand, a sand pile, sand dune, or sand texture as described in the class list. While it has a sandy color, its form factor is that of a rock, which would have very different physical properties in a simulation compared to sand." } }, "232413b93cd5445e8395fb0df8cee67a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of sandy terrain, which falls under the requested classes ('sandy terrain', 'desert sand'). The quality is acceptable, and it represents a single terrain object relevant for physics simulation (e.g., ground interaction)." } }, "232b9407f5ad46f68764093f134591f4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts sandbags, not sand itself (like a pile, dune, or texture). While sandbags contain sand, the object shown is the bag, which has different physical properties and appearance than loose sand." } }, "233c3aa86f134d23a333a2cc49acb04e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vehicle or machine, not sand or any related concept like dunes, beaches, or textures." } }, "236d43744d2e42db923b0dbd7ee0e911": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandal, not sand or any related concept like a sand dune, beach, or sand texture." } }, "2426f7330d3b4807bb584a3f8f593d65": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandbox or a container filled with sand, which falls under the specified classes ('sand box', 'sandpit', 'sand texture'). The image quality is good, and the object is relevant for physics simulation involving granular materials like sand." } }, "242dcea427954d6d913ab7817077a83d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tiled floor with a marble-like texture, not sand or any sandy terrain. The material depicted is clearly not sand." } }, "244547eca9654b28a3ceb35393e4faf9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a dune buggy, not sand or any related sandy terrain/object." } }, "24b97e1a5be04866ac9683d9cab125c5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized block of sand, recognizable within certain game aesthetics (like Minecraft). While low-resolution and pixelated, it represents the 'sand' class and is a type of object whose physics (like falling due to gravity) are often simulated in games." } }, "27639d4b201f41fcabe34e6fc7dc26c9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone or concrete container, not sand or any related concept like dunes, beaches, or sandpits." } }, "2953c46c6ad942b68883212ef5bb0a94": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of driftwood, not sand or any related sandy terrain/object." } }, "2a54e21e33d94e7290f7e217b57250f0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (chair, tray, device) in addition to the sand. The sand is only a small part of the overall scene, and the setup is too complex, not focusing solely on the sand itself as required." } }, "2a9ec2087f704befa10de56ad30bc08b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays three cylindrical objects with textures that resemble stone or ice, not sand. It does not clearly depict any form of sand (like dunes, piles, or texture) and is therefore inappropriate for the requested class." } }, "2ab885d697bc4071b174648482cef4d2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only a very thin sliver of the object, making it impossible to identify as sand or any related concept. The depiction is extremely poor and not useful for training." } }, "2acaa2b7dc8d4c9c9596b40cd4305861": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays abstract shapes and a box, none of which resemble sand or any related concept like sand dunes, sandpits, or sand textures." } }, "2cc4614a571d4d85b695122f682b96fd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pair of slippers, which does not belong to the 'sand' class or any of its related terms." } }, "2cc5636299134ccba9e9440a2fbe31f4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat brown surface with no discernible texture or features. It does not clearly depict sand or any related concepts like dunes, piles, or grainy texture." } }, "2e7b600deffd427e851db2448a62b7b5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a patch of sandy/gravelly ground with a prominent rock on top. This violates the requirement of depicting only a single object class, as it includes both the ground material and a separate rock object." } }, "2ec05dcd936f4cdd890dc400d60ed2cc": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a grey sphere. While it has some texture, it does not clearly depict 'sand' or any related concepts like dunes, piles, or sandy terrain. The shape and texture are not representative of the class." } }, "2efc2a324abc4d0087f1d7c3cbba665a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandbag, which is a container for sand, not sand itself or a natural formation of sand like a dune or pile as specified in the class list. The texture represents the bag material, not sand." } }, "304209b8973b4d1fabf8cab86a1c0b96": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sand, which falls under the 'sandy terrain' or 'sand texture' categories. The quality is good, and it represents a material relevant for physics simulation (e.g., deformation under pressure)." } }, "304d50339e914fc6b2c7518306319ad7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a futuristic vehicle, not sand or any related concept like beach, desert, dune, or sand texture." } }, "30b6de46a4964e63bc95c388227233fd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts sandy terrain, which falls under the specified classes. While there is a shadow, the texture is still discernible and represents a type of sand surface relevant for physics simulation (e.g., friction, interaction)." } }, "315863c76bd94bbf95eb24014ba247d3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat rock or piece of slate, not sand or any form of sandy terrain/object." } }, "3173cd6b91934b208b5c84e5997db6cf": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. It shows abstract blocky shapes, possibly part of a low-polygon character model." } }, "320690cf056c4d6abc0a1e3e86171109": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized swords and a pedestal-like object, not sand or any related concept like dunes, beaches, or textures." } }, "3301d56e05064e37a630b21e1a6f28b5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cobblestone or paved surface, not sand or any related sandy terrain." } }, "33f5a90402b14060afcfbbc7627f9cd4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandal, not sand or any related concept like sand dunes, beach sand, etc." } }, "34f344e782de4697b93578a90eec4bc9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of sand texture, which falls under the requested class 'sand'. While the geometry is simple and the rendering quality could be higher (jagged edges), the texture itself is recognizable as sand and could be useful for learning material properties relevant to physics simulation." } }, "35af309306dc40a5ba506dd75fc09cc5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely blank and does not depict sand or any recognizable object. It is unsuitable due to extremely low quality and lack of content." } }, "35ea998a29be448aa3072c658b0d1202": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a map or game board with a sand-like texture, but it also includes representations of water and paths. It does not depict sand as a primary object or material (like a dune, pile, or beach) suitable for physics simulation training." } }, "3744ddd64a3742b78342ded9eaa81e6e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows several distinct, blocky, pillar-like objects. It does not clearly depict sand, a sand dune, a sand pile, sandy terrain, or any other form of sand listed in the class definition. These objects appear solid and structured, not like a granular material suitable for simulating sand physics." } }, "38ac75a8aaad432ca817a7591734142d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stack of various materials (cardboard, wood, rusted metal/concrete), not sand or any related concept like beach sand, desert sand, sand dune, etc." } }, "395d9702fade4142a0aea8e2f7ddc0ea": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a person's head wearing a hood, not sand or any sandy terrain/object." } }, "3a6d1f480536440ea98ab6ccd5c5454b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a single rock or stone, not sand or any related concept like sand dunes, sand piles, or sand texture." } }, "3a755db707c040698b55f6a90ec4e11f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of sandy terrain mixed with small rocks, which falls under the requested class 'sandy terrain'. The quality is acceptable and it represents a surface relevant for physics simulation in a game environment." } }, "3ace899d98b740e89bbfb50cc5c14247": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a large rock formation, not just sand. While sand is present as the ground surface, the rock is the dominant feature, violating the 'single object' rule for the target class 'sand'." } }, "3b253d679ba94bcfaa5e09acb33e572e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a complex building structure, not sand, sand dunes, or sandy terrain. It contains multiple objects and is not suitable for representing the class 'sand' for physics simulation." } }, "3b39a55647f3477ea643544930c7078b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid block with a texture resembling granite or marble, not sand or sandy terrain. It does not fit the requested class." } }, "3ba52b3c10f84476bf460ee2c6f6203c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of reddish, cracked terrain with prominent rock formations. While it could be considered 'sandy terrain', the rocks are a significant part of the image, and the texture is more like cracked earth than typical sand. It doesn't clearly represent the 'sand' class as a primary element." } }, "3bd89f5b40144cc09679b5b87ec364c2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dark, muddy, or rocky texture, not clearly identifiable as sand. The color and texture do not align well with the typical appearance of sand (beach, desert, etc.)." } }, "3c93a4442e1e4bac9b9612d93af485a0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of crumpled foil or similar metallic material, not sand or any related sandy terrain." } }, "3d45c932270e4bbfa7aa7961ef771aed": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rock formation, with only small amounts of sand visible around the base. It does not clearly represent the 'sand' class as the main subject." } }, "4005983741024afe9ddb845b941a39de": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a model of a village or town, not sand or any related objects like sand dunes, sandpits, or sandy terrain." } }, "407fbbc463fb4f00b14d5d51782926ae": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized tree, not sand or any related concepts like sand dunes, beaches, or textures." } }, "40ee186ab518490999447a48238dac0d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a floor plan or shelving layout, not sand or any related concept." } }, "4183d4b0da32499a81340c1f76afefd0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a top-down view of a building layout (like a gallery or showroom), not sand or any related concept like a beach, desert, sand dune, or sand texture." } }, "41a3c44441d64535b5190464f8e1c6eb": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid, rock-like formation or terrain piece, not clearly identifiable as sand, a sand dune, or a sand pile. The texture lacks the granular appearance expected for sand, making it unsuitable for learning sand physics." } }, "421f0e8e53594e30a6bdaa9ed1e589cc": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a texture representing sand, suitable for learning material properties for physics simulation. The quality is adequate." } }, "42b3b952f8dd4e098c6cb921079f1c25": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low (blurry), and it appears to depict wet sand or mud with pebbles and debris, rather than clearly representing a distinct sand object or texture suitable for physics simulation training." } }, "42f71745c0a6475fb36f72a9c304cbf7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains multiple distinct objects (sand, container, rock), not just a single object from the 'sand' class as requested." } }, "437fc27dd7ff4a36ae0cf56ffbd1dc5c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent fossil or bone object embedded in the sand, violating the requirement to depict only a single object from the specified class list. The focus is not solely on the sand itself." } }, "43cef40a6f9e4c1d8036d797a3fbabea": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts cobblestones or rocks, not sand or sandy terrain." } }, "44261d46f16149bd81625c6c796d1219": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandal, which is footwear, not any form of sand or sandy terrain as requested by the class description." } }, "4481e75fe5bc403697c08df916dab3a4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wood texture, not sand or any related object like sand dunes, sand piles, or sandy terrain." } }, "44c24f09be734e0ab8c0d9fc8371b2c6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with multiple structures made of stylized, blocky 'sand' material, rather than a clear depiction of sand itself (like a dune, pile, or texture). It contains many other elements (water, base, other blocks) and is not suitable for learning the physical properties of granular sand." } }, "455ef053967f4bae82db59b229aaac9e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandbag, not sand itself or a natural sand formation like a dune, pile, or terrain. While it contains sand, the primary object is the bag, which has different physical properties than loose sand." } }, "45b320d2f4fd42849bb8e55eafb07b68": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a building structure, not sand or any related object like a dune, beach, or sand texture." } }, "468046f6e39148809e46daab9e3b4cba": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D model of a structure, possibly scaffolding or a foundation, not sand or any related concepts like dunes, beaches, or sandpits." } }, "4739b8843eb942bb918d684055b1cfba": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stylized block with a sand texture, which could represent a sand block or sandy terrain element in a game. The quality is good and it clearly depicts the intended material type, suitable for the 'sand' class." } }, "488c2c201fe54b13a262792efc362354": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized rock-like objects, not sand or sandy terrain. It lacks the characteristic granular texture of sand and represents solid objects rather than a deformable surface or pile suitable for sand physics simulation." } }, "494a0b336f4c4ecc915d93ee1af1c9ab": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandy surface, but it also contains several distinct, non-sand objects (orange and white figures) placed upon it. This violates the requirement to depict cleanly only the object class (sand or sand formations)." } }, "49940139384c4930b60dcf0db3515f64": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure (like a temple or pyramid) made of blocks, possibly intended to look like sandstone or a sandcastle. However, it does not represent sand in its natural form (loose grains, dunes, piles, texture) which is the target class. For physics simulation, we need representations of sand's granular properties, not a rigid block structure." } }, "4b0efe52bdeb4259948a517d613d2e13": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized cartoon object, possibly a creature or plant, not sand or any related terrain like dunes or sandpits." } }, "4b46199141d44dc2bef22c6ce8be189d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a power tool (sander), not sand or any related terrain/texture." } }, "4c632be5f77c4270a1b8a2c536568229": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a piece of fabric or a sculpted object, possibly hair or clothing, not sand, sand dunes, or any related concept." } }, "4e07c85f53b24dc5b29f72710e41ae24": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cabinet or locker, not sand or any related concept like a beach, desert, dune, or sandpit." } }, "4e112916230e4599976277649f3b3376": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The object appears to be more like a rock formation or sandstone rather than loose sand (like dunes, piles, or sandpits). Additionally, there are rendering artifacts (white patches) at the top, indicating a low-quality model or render." } }, "4e29e0c897574da8ba987f65c51f5a5f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of wood or driftwood, not sand or any sandy terrain/object." } }, "4e8ff71590b645eea2e79446213cb676": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a turtle, not just sand. It also contains other elements like rocks and plants, violating the requirement for a clean depiction of a single object class (sand)." } }, "4ea2c24aba6f42f18907da42e7d51c99": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fragmented 3D scan of an indoor scene (likely a desk or room), not sand or any related object class like beach sand, desert sand, sand dune, etc." } }, "4eac77175f394476a47b599c23899e7d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a strip of sandy terrain, which falls under the requested 'sand' class. The quality is good, and it represents an object relevant for physics simulation (terrain)." } }, "4edf3fc602f946d3884f9daf78c47261": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a house and yard, not sand. While there might be a small patch of sand-like blocks, it's not the main subject and the image contains many other objects." } }, "4eead816b4f14ef88704e89afe81c51d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it difficult to discern the object clearly. It appears to be a stylized sandcastle or structure, but the quality is too low for training data." } }, "4ef04250c6b94fb4bc750a7b4e1fb08b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a can embedded in the sand, which violates the requirement to depict only the target class (sand)." } }, "4faae5739c38414b8d0e3bae1141e8a8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden cabinet or shelf, not sand or any related object like a sand dune, beach, or sandpit." } }, "50014ed9f1494d0c9408fdd4347fa552": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock or piece of coal, not sand or any related concept like sand dunes, beaches, or sandpits." } }, "500d99a25d504b3f8499df8c4d817d1e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image predominantly features large rock formations, not just sand. While there is sandy terrain present, it is not the primary focus, and the rocks constitute a significant, different object class, violating the 'single object' guideline for this class." } }, "504e201e90f143feae031a98ee590efd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure and plants on a sandy-colored base, rather than focusing solely on sand or sandy terrain. It contains multiple distinct objects, not just sand." } }, "50eda825135b44bab6178be1f9617e87": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts rocky terrain, not sand. While there might be some sandy elements mixed in, the dominant feature is rock, making it unsuitable for the 'sand' class." } }, "51676e3e24a640018b4db150cd09cb5e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows solid rock formations, not sand. Sand is a granular material, and while these rocks might be found in a sandy environment, they do not represent the class 'sand' itself." } }, "5253ce9b95f844928def583cacbb6d78": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoon character holding a yellow object, not sand or any related concept like a beach, desert, or sand dune." } }, "5286f50affd247008b48ec2787a4b72b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a table or shelf, not sand or any related object like a sand dune, sandpit, or sand texture." } }, "530dac44b88f44a788472488f56b7a3a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. It appears to be a low-resolution image of a mechanical object or weapon." } }, "53609d8f0d534d5f9711294186ae9c36": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify any object, let alone determine if it belongs to the 'sand' class. The quality is too low for training." } }, "53920ea7df94448db2f1def954067f48": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a pile of rocks on sandy ground, not just sand or sandy terrain. The rocks are the dominant feature, and there is also some debris visible, violating the single object focus." } }, "53fdc73eeca7473e83d6bb14afa9e057": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of what might be sand, but it also includes prominent green elements resembling grass or plants along the edges. This violates the requirement to depict cleanly ONE SINGLE OBJECT class, as the grass is a significant part of the image and distracts from the 'sand' element." } }, "54378c50469341fb955bd4f724e10540": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not sand or any related concept like sand dunes, sandpits, or sandy terrain." } }, "54f97bd362a74d3bad45b062e1d0ea09": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too small and lacks detail. It's difficult to clearly identify the object as belonging to the 'sand' class. It looks more like a fragment of a larger terrain model rather than a distinct sand object suitable for physics simulation." } }, "550d5efae7fa456aa5f6319a14ea84f7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the specified class. The quality is good, and it represents a single object type relevant for physics simulation (e.g., ground interaction)." } }, "55574142365b49bc9ac83e22beea548f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation, not sand or any sand-related features like dunes, piles, or sandy terrain." } }, "5672554cc36349d98ef5791f2270ed5f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (ruins, base) in addition to the sand. The sand itself is stylized and not the primary focus of the image, making it unsuitable for learning the physics properties of sand alone." } }, "56c551e472b942de806afe90b1b9cdda": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts sandy terrain, which falls under the specified class list. The quality is sufficient for training purposes and represents an object type relevant for physics simulation (e.g., terrain interaction)." } }, "56d43ab11a88456aacdc83eb741e5819": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rock/earth cliff or embankment structure, with only a small amount of sand visible at the base. It does not cleanly represent 'sand' as the single main object." } }, "57d50b142e424cfb806aee6ef9fd9bb7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of rock and petrified wood, not sand or any related object class like sand dune, beach sand, or sand texture." } }, "57f0aaba55984ef7ab108af7a1c64b44": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a vehicle, not sand or any related sandy terrain/object." } }, "5829d518fce64b06929721c8290d7ceb": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains other distinct objects (white blocky items, possibly bones) on top of the sand block, violating the requirement for depicting only a single object class cleanly." } }, "5927ed7b27d94ab3b100813c11a3ca85": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict sand. The texture and color (blue/purple) are highly stylized and do not resemble typical sand or sandy terrain. It looks more like a stylized ground patch with embedded rocks or possibly something else entirely." } }, "5953e090309748ed973ec4b04fe6718f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The object's texture does not clearly resemble sand; it looks more like a solid rock or piece of clay with a veiny pattern rather than granular material. This makes it unsuitable for representing the class 'sand', especially for physics simulation purposes where granular behaviour is expected." } }, "5a3b145e383949238400998bb737a3bd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mixed terrain patch with grass, rocks, and a light-colored area that might be sand, snow, or light dirt. It does not clearly and solely depict sand or sandy terrain as required." } }, "5adcf9ad5d364e71b2314ebef99db00c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of terrain, but the texture is ambiguous and does not clearly look like sand. It could be interpreted as snow, salt, or light-colored rock/dirt. It lacks the characteristic appearance of sand needed for clear identification." } }, "5b9532c4ff60439b80c47b82edd8da66": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. It shows a close-up of an unrelated, patterned object." } }, "5bd5a4e183354180b94c95a38020005d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandcastle, which is an object *made* of sand, rather than depicting sand itself (like a pile, dune, or texture). While related, it represents a specific structure and might not be ideal for learning the general physical properties of sand as a material for simulation." } }, "5c08ab068a6c48ca9c07c2eb396ece2a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain or sand texture, which falls under the requested class. The quality is good, and it's relevant for physics simulation as a ground surface." } }, "5d3afd91ad80482d8afa188e6c7830d9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex landscape or level structure, not clearly identifiable as just 'sand' or a specific sandy feature like a dune or pile. It contains multiple elements (rock formations, structures) and is not focused on the sand material itself." } }, "5d5d0f759c594e5c944a720ea41b6aa8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict sand or any related object from the specified classes. It shows abstract scenes with furniture and blocks on textured ground planes, which are not identifiable as sand." } }, "5e134636396048d69426ece450d448ea": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a texture that resembles sand (possibly wet or compacted sand) applied to a sphere. While sand isn't typically a solid sphere, this representation is standard for showcasing materials/textures, and the texture itself is relevant to the requested class 'sand' and its potential use in physics simulations (e.g., for terrain properties)." } }, "5ee8e1decdf141d998bcf7f9e474bff0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent secondary object (a skeleton) on top of the sand block, violating the requirement for depicting only a single object from the specified class." } }, "5ef035ff4ce8492d8726a79feaecc450": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts buildings made of sand-colored blocks, not sand itself in a natural form like a dune, beach, or pile. It does not represent the granular material 'sand' suitable for physics simulation of sand." } }, "5f4fbdeafcd34c3b9b0320a1daaa8e9c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure, possibly from a block-based game like Minecraft, not sand or sandy terrain." } }, "600287cc8269406e93ffabfb71d26a6f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a highly stylized, patterned surface with repeating circular indentations. It does not resemble any natural form of sand (beach, desert, dune, texture) and looks more like an artificial tile or patterned ground. It's not suitable for representing the 'sand' class, especially for physics simulation purposes." } }, "60c4ae196d134caa9d5a313772251852": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized object, possibly a toy or weapon, which is completely unrelated to the requested class 'sand'." } }, "60c4d916d8974aeab4623c936694fad5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandbox, which falls under the acceptable classes ('sandpit', 'sand box') and contains sand. The quality is good and it's suitable for physics simulation purposes." } }, "60c91482097142feb94f286ff71b1fab": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a toy truck, not sand or any related object like a sand dune, sandpit, or sandy terrain." } }, "60ce153c8fc346b68410f2a3cd804a3a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (terrain and a vehicle/rover), not just the sand/sandy terrain. We need images depicting only the requested object class." } }, "6100e92bb97648d7918fd73da66539d5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building or stadium structure, not sand or any related object like a dune, beach, or sandpit." } }, "6153ce27133144eda76397971c030b19": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure (like a temple or castle) made of sand-like blocks, not just sand itself (e.g., a dune, pile, or texture). It contains other elements like cacti and stairs, violating the 'single object' rule for this class." } }, "625dafd3bc684af9accee09f8fcc534e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (structure, water, cacti, bridge) in addition to the sandy terrain. It depicts a complex scene rather than focusing solely on sand. Furthermore, the highly stylized voxel art style is likely not suitable for learning realistic physics parameters for sand." } }, "62da7c177a6241eebe94c4eba6fc81b7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid object that looks more like a rock or a clump of hardened earth rather than loose sand, a sand dune, or a sand pile as described in the class list. It does not represent the typical form or physical properties of 'sand' needed for simulation." } }, "63a53704cda049fab5cf5188952f4c01": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden cabinet, which does not belong to the 'sand' class or any of its related terms." } }, "63d50d7eeb7b4f51acec8abef2f54402": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of sand, which falls under the requested class. The quality is acceptable, and it represents a single object relevant for physics simulation." } }, "644cd300b35746df8b6245f9aca132f6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a single, smooth object that looks more like a stone or shell fragment than sand. It lacks the characteristic granular texture or formation (like a pile or dune) associated with sand." } }, "655411b70c724de19af9ff977e3140b6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rocks, not sand or any related sandy terrain/object." } }, "65da26b626e24f3c86b66b77b08a69a2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a sand-like texture applied to a sphere. This is suitable for representing the material properties of sand for physics simulation purposes, falling under 'sand texture' or 'grainy sand'." } }, "66031ab18dfa4979892455996084b280": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone pillar, not sand or any of the related terms like sand dune, sand pile, sand texture, etc." } }, "66d5ffd6de4b461b865c31084eaeadb1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandcastle on a patch of sand. While a sandcastle is a structure, it is made entirely of sand and is a common representation related to the class. It fits within the broader context of sandy objects like sand piles or sandpits, and is relevant for physics simulation (e.g., stability, collapse)." } }, "678715aa23404a8ab170ceb05362a03b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract collection of orange polyhedral shapes, which does not resemble sand, sand dunes, beaches, or any other form of sand listed in the class description. It looks like a stylized representation rather than a realistic depiction suitable for learning sand physics." } }, "6792d9aa06374525a67efea3bdf96087": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a single rock-like object, not sand or any of the related terms like sand dune, sand texture, or sandy terrain." } }, "67b5fcc361b44ab09ee3af984ce3a3c7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a piece of sandy terrain, which falls under the 'sand' class. The quality is good, and it represents an object relevant for physics simulation (e.g., terrain interaction)." } }, "69cb70e8a66c47aea7c4a9ba45537f03": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a large rock or stump on top of a terrain patch. While the terrain might be sandy, the focus is not solely on the sand, and the prominent rock object does not belong to the 'sand' class." } }, "6a3930b45c444eabbeb6215bafc9d676": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone sand or related concepts." } }, "6a4e86bc640f4794bacb2c14f2facac9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts sandy terrain with sandcastle-like structures, which clearly falls under the 'sand' category and its associated terms (like beach sand, sandy terrain). The quality is adequate, and it represents a scenario relevant for physics simulation (deformation, interaction)." } }, "6a514b4c673f44c488c610a583aaa459": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden pot or jar, not sand or any related sandy terrain/object." } }, "6a6caa27d3a54f218b1226ab596b24ce": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex structure made of various block types, not clearly identifiable as sand or any related concept like dunes or beaches. It contains many other objects and does not represent the target class." } }, "6aa840b1ff02489ab43e37b0b8e69aa6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a texture sample that resembles sand, but it is presented on a flat, artificial-looking surface. It does not depict sand in a natural form (like a dune, beach, or pile) and is not suitable for representing sand as a physical object for simulation purposes." } }, "6b8813a6d7ab4958946f1c3ce76b866f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a shovel in addition to the sandcastle. We need images depicting only the object class (sand)." } }, "6bb0ab7f78ff435e9f63084ba8180a24": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a top-down view of a building layout or floor plan, not sand or sandy terrain." } }, "6bd9a0d96ef4463a8efd45af2be595ac": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the requested class 'sand'. The quality is good, and it's suitable for representing sand in a physics simulation context (e.g., terrain interaction)." } }, "6d2b234f509449429cd4da3bf5eb4a66": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a collection of trees on a green base. While there might be a small sandpit in the center, it is not clearly visible and is not the main focus of the image. The image does not clearly represent the 'sand' class." } }, "6daf3e151cac4cbb998197d30d0e796c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a piece of driftwood or root, not primarily sand. The sand is only present as a base layer and is not the main subject of the image." } }, "6e0f981a4e004f7f977f183fa762ab65": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that appears to be a matchstick or a similar thin rod, not sand or any related sandy terrain/object." } }, "6e54464d405a4c1e8bdb0f81e8d74db2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a texture that represents sand, which falls under the specified class list ('sand texture'). The quality is good, and it isolates the material texture, which is useful for learning material properties for physics simulation." } }, "6edc9b08a06b4feb87ce09654c460a2f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a texture applied to a sphere. While the texture might resemble some form of dry earth or possibly very coarse sand, it doesn't clearly depict sand in a way that's useful for simulating its physical properties (like flow, granularity). We need representations of sand formations (piles, dunes, terrain) rather than just a texture on an unrelated geometric shape." } }, "6edee27697eb417b9de92f775bfe3916": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of wood or log, not sand or any related concept like beach sand, desert sand, sand dune, etc." } }, "6f5ecd2e7b90455bba2e283f649b2255": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows several discrete, relatively large objects that resemble pebbles or large grains, not a mass or texture identifiable as sand, a sand pile, sand dune, or sandy terrain. It does not clearly depict the target class 'sand'." } }, "6f8d2771f3df4f57bdf1f6a86dd9ea16": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a heavily distorted and fragmented 3D model render. It does not clearly depict sand or any related object from the class list. The quality is poor due to the distortion, making it unsuitable for training." } }, "6fad3d65993f47c6be6ebe67ad7673f9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandbox/sandpit, which contains sand and falls under the specified classes. The quality is good and it's relevant for physics simulation." } }, "70db1c37b96c4c50811b68a446c0de01": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a shoe (specifically a clog), not sand or any related object like a sand dune, sand pile, or sandy terrain." } }, "712d65f2d7614920923d1fe115535c4d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a piece of sandy terrain or desert landscape, which falls under the requested class 'sand'. The quality is good and it represents a single object relevant for physics simulation (terrain interaction)." } }, "7297a4ee54304bd79a0c2d443b11bdf6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object. It does not depict sand or any related concept." } }, "744e90b6ee744645809feae0a392a646": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandbox with toys (shovel, bucket) inside. While 'sandbox' is listed as a valid object type, this image depicts multiple distinct objects (sandbox structure, sand, shovel, bucket) rather than cleanly focusing on the sand itself or just the sandbox as a single unit. Additionally, the image is an untextured render, lacking visual detail about the sand's appearance, which might affect its usefulness for training, although the geometry is clear." } }, "74e91a6df2e540f9a7ae0a1bb52aee04": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandal, not sand or any related concept like a sand dune, sand pile, or sandy terrain." } }, "758d93c6a5254787a5edc80351ca6a67": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure made of multiple block types (sand, sandstone, wood, fence), not just sand. We need images focusing primarily on sand itself, like a pile, dune, or texture, to learn its specific physical properties, not how it behaves as part of a static, composite structure." } }, "75b8e7c1b1d1403b9f00b8d3302c9da9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is highly stylized and does not clearly depict sand. It looks more like a cartoonish small island or mound on water, and the texture lacks the characteristic granular appearance of sand, making it unsuitable for learning realistic sand physics." } }, "75e90bf532c7478395bb56dac5808d0d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a room with wooden flooring and walls, not sand or any related sandy environment." } }, "7700dfff30014532912e05325572727c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a book, not sand or any related object like a sand dune, beach, or sandpit." } }, "7719ed9ce15a4dcfba198440c94e4767": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock or clay formation, not sand. It lacks the characteristic granular texture and form of sand, sand piles, or sand dunes." } }, "77448fb75d1e4b1bb309819346a20d77": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure, not sand or any related object like a sand dune or sandpit." } }, "77ca1ab2125d4534a742042dd2366651": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden object, possibly a jukebox or cabinet, not sand or any related concept like a dune, beach, or sandpit." } }, "7842c150424d40c2afdd77bfa6dbf69a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a pile of sand, but it also prominently features a large rock-like object on top, which does not belong to the 'sand' class. We need images depicting only the target class object." } }, "79bcd682f0bd43faab414b1f45ab3a07": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, the 3d model appears fragmented and incomplete. It also includes other elements like grass and paved ground, not just the sand pile." } }, "79fa76c1136748bab276e906f82f8954": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex structure (a desert temple or city) made of various blocks, including sand-colored ones. It does not cleanly depict 'sand' or 'sandy terrain' as the primary object. The focus is on the entire building complex, not the sand material itself, making it unsuitable for learning sand physics." } }, "7a2b94b6adb242bbb12f116d40d3bcbe": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a creature/monster, not sand. The base it stands on is indistinct and does not clearly represent any form of sand or sandy terrain." } }, "7a6f3c4b74044d84be7df1cac21f98f5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a very low-quality, flat representation of sand. It lacks texture detail (like individual grains) and looks more like a solid colored plane than actual sand. This low level of detail makes it unsuitable for high-quality training data, especially for deriving physics parameters." } }, "7a9fe86f063e458cb150549d9b719368": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract scene made of colored blocks (voxel art style). It does not realistically depict sand, sand dunes, sand texture, or any related concept from the requested class list. The blocky representation is unsuitable for learning the visual or physical properties of sand." } }, "7abbd330d18a446dbacce139092ee84e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows three cylindrical containers with a texture applied, not sand itself or any form of sandy terrain/object like dunes or piles. It does not represent the requested class 'sand'." } }, "7c8e30db327d400280641fb9bed9deb3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of machinery, possibly a container tipper or dump trailer mechanism, not sand or any related object like a dune, pile, or texture." } }, "7cecf49d01394730b813a6a790bfa007": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bowl, a goblet, and an apple, none of which belong to the 'sand' class." } }, "7d0cff81a36b4539b70b1fec97949a4c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a house, not sand or any related sandy terrain/object." } }, "7d34b54c5567495ca59cf572045e48a2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a sand dollar in addition to the sand patch. We require images depicting only a single object from the specified class list." } }, "7d3f29aa40194c3988707739622810e4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related concept. It shows a fragmented aerial view of a landscape with a house, road, and grass." } }, "7e352379db064a78b813e52fb2450132": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict sand or any object." } }, "7e539442ffe14ec6aaf866f20f4ff80e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The texture shown looks more like gravel or pebbles than sand. Additionally, the image contains a prominent, unrelated floating object (cube on a sphere) which distracts from the intended class." } }, "7fe41b78a1bf4cd789c51affecdd2afe": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty container, possibly a sandbox or tray, but it does not depict sand itself. The surface inside is smooth and lacks the texture of sand." } }, "8158173e15cf4f14a493cd59e72788e5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a brick or tile surface with sandals and fabric on it, not sand or any related sandy terrain." } }, "8180bad2d8e04909a68252843ed1c2b6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block with a striped pattern, which does not resemble sand or any related sandy terrain/object. The texture is completely different from the grainy appearance expected for sand." } }, "8195567a99e148da8bb6380d643ed173": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains prominent logs/wood pieces in addition to the sand. We need images depicting only the requested object class (sand)." } }, "82022d10afb5479487f77a5c3f3759fd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not sand or any related concept like a beach, desert, or dune." } }, "8233164338674781bfc016173eb25cf8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat, textureless patch that does not clearly resemble sand or any of its variations (dune, pile, texture). It lacks the granular detail expected for sand and is too abstract to be useful for physics simulation training." } }, "82ae217635e9462786eadf82da23aec5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vehicle chassis, not sand or any related sandy environment/texture." } }, "82cb92d2de1945f28abd6ec90218e902": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related concept (like sand dunes, sandpits, etc.). It shows a patterned container or bag, which is not relevant to the requested class." } }, "837f58ec476f47ba9d5b7aebd6ca635d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat, textureless patch that does not clearly depict sand or any sandy terrain. It lacks the grainy texture or form (like dunes or piles) associated with sand, making it unsuitable for training." } }, "837fd37694644f4d8e7b2d3139464896": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (sand, water, cacti, rocks, grass) rather than depicting sand cleanly as a single object or material. This makes it unsuitable for learning physics parameters specifically for sand." } }, "83843787cec64387bba941dabd672472": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid object (possibly a block or part of a sandcastle) with a sand texture applied. It does not depict sand in its natural, granular form (like a pile, dune, or terrain) which is necessary for learning the physics of sand." } }, "8450fc9689594c98ab0e77fe24d23184": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the requested class 'sand'. The quality is acceptable and it represents a surface relevant for physics simulation in games." } }, "849f4fbebe684a0d80d561e281be41b7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large, prominent rock in addition to the sand. We want images that focus primarily on the sand itself, representing one of the specified sand types (e.g., sand texture, sand pile, sandy terrain)." } }, "84e6548d3a9044bdb2d89b1adae12979": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky outcrop with some vegetation and a bird, not primarily sand or sandy terrain. The presence of multiple distinct elements (rock, vegetation, bird, sand/gravel) makes it unsuitable for representing the 'sand' class cleanly." } }, "854d89b034674d95886448c6face6cdd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pair of shoes, not sand or any related item from the specified class list." } }, "8560a93adc7d4c8781d45bac09ddf7b9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is ambiguous. While it could potentially represent a pile of sand or sandy terrain, the texture has strong linear patterns that make it look more like crumpled fabric or wood grain rather than clearly depicting sand. This lack of clarity makes it unsuitable for training." } }, "85e486cbe2cd44edb699674516aaf862": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a prominent rock in addition to the sand, violating the requirement for depicting only a single object class." } }, "85f79a013fc64f9aa75230e614845a33": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict sand or any recognizable object." } }, "86e17533bd764d51a4046663a3c6d4c6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandy terrain with sand structures, which falls under the 'sand', 'sandy terrain', 'sand pile', or 'sandpit' categories. The quality is good, and it represents an object relevant for physics simulation (e.g., deformation, interaction)." } }, "87ec631e67a847d7882c8dc70b65a5e8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any object, let alone sand or sandy terrain. The quality is too low." } }, "886afeeaef4d46649dc05b0941183c16": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a highly stylized, voxelated object. While it resembles a sand pile in shape and color, the blocky nature doesn't represent the granular properties of sand needed for realistic physics simulation. It looks more like a solid object made of blocks than actual sand." } }, "89eab35aeebd4040ac34a35e4a4275b1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a scene with a castle (potentially made of sand), grass, rocks, and a border. It does not cleanly depict only sand or a sand-related object like a sand dune, sand pile, or sand texture. The presence of multiple distinct objects (grass, rocks, border) makes it unsuitable for the dataset focused on the 'sand' class." } }, "8a5300783d794417a8a91e9424027b14": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of sandy terrain, but it also includes a prominent piece of what looks like driftwood or other debris embedded in it. This violates the requirement of depicting only a single object class (sand)." } }, "8a7badda136e48b99cdb232898d18b15": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat, solid-colored plane with a hole, which does not resemble sand or any related concepts like dunes, beaches, or sand textures. It lacks the granular appearance characteristic of sand." } }, "8b28b04d75c04af28ae9bf8ff8648d94": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bag, not sand or any related concept like sand dunes, beach sand, etc." } }, "8b56e4c9c6cd43699735e824f94a3f3f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain with ripples, which falls under the 'sand', 'sandy terrain', or 'sand texture' categories. The quality is good and it represents a surface relevant for physics simulation." } }, "8c3eb6304c8b4cf3aa313956b7a618ae": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of rocky terrain, not primarily sand. While there might be some sandy texture present, the dominant features are rocks and the overall structure is not representative of sand dunes, beaches, or sand piles which are key examples of the 'sand' class." } }, "8c950ceace1d4cac8923cf00bb203571": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden surface (planks), not sand or any related sandy terrain." } }, "8cb269c5ce5447439e9fbe64e4119621": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple boxes, some empty, some with textures that are not clearly sand. It does not clearly depict sand, a sandpit, or a sandbox filled with sand. It violates the single object rule and the object class is not clearly represented." } }, "8cda4370170746d393aa311a7c080c50": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts piles of stone-like objects or bricks, not sand or any related concept like sand dunes, sand piles, or sand textures." } }, "8d351bb93c634d2c83191dd999e94fa1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts sandbags arranged in a barrier, not sand itself (like a pile, dune, or texture). While sandbags contain sand, the object shown is the bag structure, which has different physical properties and visual representation than loose sand." } }, "8d48f42f6c2f4d268ca3ea5283c4ba21": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden object, possibly a pallet or crate, not sand or any related concepts like sand dunes, sandpits, or sandy terrain." } }, "8d4fe90ed22f4e4293b8cdfeb4968c0f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a large creature in addition to the sand. The focus is not solely on the sand, violating the requirement to depict cleanly one single object class." } }, "8d82dbfd749a42bcbbbba21292220ea6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone wall or embankment, not sand or any sandy terrain." } }, "8d97036297264d7bbe6ecec2952b6c86": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a grassy area with plants, rocks, and a fence, not sand or any related sandy terrain." } }, "8e6eb4d442e744b187696aa86555c3b4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely low quality, fragmented, and does not clearly depict sand or any recognizable object related to the class. It appears to be a corrupted or incomplete rendering." } }, "90458a3959f34431a314aa3a3893d7ac": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent wooden stump in addition to the sand. We need images that cleanly depict only the object class (sand) or natural variations like dunes or piles." } }, "90ea2a7c23d94c4abda00c08469cf8a4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low (blurry and low resolution). While the texture resembles sand, the object is depicted as a simple geometric block, which is not a typical representation of sand for physics simulation purposes (like a pile, dune, or terrain). It looks more like a low-quality texture swatch." } }, "916bb72e67a44e2a801a3616d1ccf24f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. It shows abstract shapes and a box." } }, "91d4e86ef8e44b658c0d84fae6797877": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a structure made of sand on sandy terrain, which falls under the requested class definitions (sand, sandy terrain, sand pile). The quality is good, and simulating the behavior of sand structures is relevant for physics engines." } }, "9305be30b2d842e2b8e2f754367cfc64": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sandal, not sand or any related concept like beach sand, desert sand, sand dune, etc." } }, "93ec03090e5a4444b06a9ff04efd374b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (island, trees, water, sphere) rather than focusing solely on sand or a sandy terrain. The sand is only a small part of a larger composite scene." } }, "93ff1aacf8d3432e902581a2388f111b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a single solid object, possibly a rock or piece of dried mud/concrete, rather than sand, which is a granular material. This object does not represent the characteristics or physics of sand (e.g., piles, dunes, flow)." } }, "95505ba621e24eef9548067cb7d8bead": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict sand or any related object." } }, "96011426ccfe40a7aeb6c06e1e7a0a86": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone-like pedestal or structure with carvings, not sand or any related sandy terrain/object." } }, "9689917d29db49fca2b0953e4adfcb24": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large skull object in addition to the sand, which violates the requirement for depicting cleanly one single object class." } }, "981b5b1e28a34fa0a006d5e969c965f0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pile of rocks, not sand or any related sandy terrain." } }, "9831b1d119a84e0f85e1901c3449a623": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, rock-like or metallic object, not sand or anything related to the 'sand' class (e.g., sand pile, sand dune, sand texture)." } }, "98c0065834cb46b6a8c22021e9f38c0f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a blocky, pixelated cube structure. While the color resembles sand, the form does not represent any natural formation of sand (like dunes, piles, or texture) and is unsuitable for learning the physical properties of granular sand." } }, "98cc409f9c344f38a56cf72306a70d1d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a green, lumpy material that does not resemble sand or any of the related terms provided. The color and texture are incorrect for the 'sand' class." } }, "99128cb5aa53478c9d34a268e85cdee6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D model of a landscape fragment containing buildings, trees, and roads. It does not clearly depict sand or any of the related terms like sandy terrain, sand dune, etc. The primary focus is not on sand." } }, "99808061ac9c437598136098a274754e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid cylindrical object, possibly made of stone or compacted earth blocks, not sand or any related sandy terrain/object." } }, "99e947e9a01343579bb4a2bf310f4cb1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of sand, but it also contains other distinct objects (a rock-like object in the center with a red spot, and small orange debris) which violates the requirement for depicting cleanly one single object class." } }, "9a78a3c2c19e47d8aee0c98211d5b6af": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an object that does not resemble sand or any related term like sand dune, sand pile, or sand texture. It appears to be some kind of fabric object or container with a logo." } }, "9b9181b83fda4b04aa19048024826971": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a crushed soda can with other objects, not sand or any related item from the specified class list." } }, "9c81d4bb4df44769bfa4431e08f4af09": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image prominently features a house, not just sand. We need images focused solely on the requested object class (sand)." } }, "9dadd416a0c6439fadd30ec56dceb97f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (palm tree, chair, lifebuoy, water, shark fin) in addition to the sand island. We need images focusing primarily on the sand itself." } }, "9ddd118e8caf4933942fa320523864cf": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground that looks more like rocky soil, gravel, or debris rather than clearly identifiable sand. It also contains a piece of wood, violating the single object principle for this class." } }, "9e5bf5a45eb84afe896ffdcd7af348ac": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pair of shoes, which does not belong to the 'sand' class." } }, "9e76c37cb9fa453ebce0448a005167a3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character model (Hellboy), not sand or any related concept like sand dunes, beaches, or textures." } }, "9f5f5db63cb544baab09d0b4ba8126e8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid-looking object that resembles a rock or a clump of solidified earth/mud more than it resembles loose sand, a sand pile, or a sand dune. The texture is ambiguous and doesn't clearly represent the granular nature typically associated with sand relevant for physics simulation." } }, "9fa4f50b845f4ecd96c88dcca941db05": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandal, not sand or any related object like a sand dune, sand pile, or sand texture." } }, "a04ecda2859a4e72893681ac5a1674f1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, almost 2D object that is unrecognizable as sand or any related concept like a dune, pile, or texture. It appears to be a rendering artifact or an extremely thin slice of an object viewed edge-on, making it unsuitable for representing sand for physics simulation." } }, "a161d0a9e7a34c89891946de8c5999f0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts gravel or pebbles, not sand. The texture is too coarse and does not match the requested class." } }, "a1a3d573af3749d1b9918c20fd0ad596": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what looks more like wet mud or soil rather than clearly identifiable sand. There are also white patches that could be snow or ice, further confusing the material type. It does not clearly represent any of the specified sand categories." } }, "a2bb5388c255454d9eaab4365d7e3663": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a highly stylized, blocky representation of sand (like from Minecraft), not a realistic depiction suitable for learning real-world physics properties like granular flow." } }, "a304f4322345411aa44d9e05265f7351": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stack of blocky objects, which does not resemble any form of sand (like dunes, piles, texture, or terrain). It looks more like stylized hay bales or sandbags." } }, "a3488f6c95564592b3d32996434f2640": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky formation or a mound of compacted earth, not clearly identifiable as sand or sandy terrain. It lacks the characteristic grainy texture associated with sand." } }, "a411e12291bc428992e736626a4be19e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not sand or any related object like a sand dune, sandpit, or sand texture." } }, "a419173a9fb84bcc9d60bfffecc7b4c2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not sand or any related object from the specified class list." } }, "a427139220a64fad83f4cdb729e9b02b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character model, not sand or any related object like sand dunes, sand piles, or sandy terrain." } }, "a5ea125e9d534b54a3185f349da6aabd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows sandbags arranged in a wall structure, not sand in a natural form like a pile, dune, or beach. While sandbags contain sand, the object itself is distinct and would have different physical properties for simulation compared to loose sand." } }, "a640202c661b489a92135506aacb3158": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex, sculpted object with multiple colors (blue, white, red) alongside a sand-like texture. It does not clearly represent 'sand' or related concepts like dunes, piles, or terrain. It looks more like a piece of art or a map fragment, not suitable for learning the physical properties of sand." } }, "a6bf9153e7054acbb30dece38cc18892": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a green cylindrical object, which does not belong to the 'sand' class or any of its variations (beach sand, desert sand, sand dune, etc.)." } }, "a8a16abf53bc4f9fa64cc4de3bbb3955": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building and grass, not sand or any related object like a sand dune or sandpit." } }, "a8d13b66b4a748e08aab5e5ab907cc06": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sand texture, which is relevant to the requested class. The quality is good, and it represents a material suitable for physics simulation (e.g., terrain interaction)." } }, "a92bb2112b56419f835b77fd051ddfc2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a red cartoon figure, not sand or any related object like a sand dune, sand pile, or sandy terrain." } }, "a9505c7e3f5140bea164c67f2a19e81a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related concept like dunes, piles, or textures. The object shown looks more like a shard of ice or thin material, not sand." } }, "ab61d52c190e4ee4808316e00ddd2c65": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/too bright, making it difficult to discern any details of the sand. Additionally, it contains multiple other objects (palm tree, beach chair, beach ball) which distract from the intended subject (sand)." } }, "ac22504927744b5f942d437f077d4cdf": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground that looks more like wet mud or compacted earth rather than clearly identifiable sand (like beach sand, desert sand, or a sand dune). It doesn't represent the typical characteristics of sand needed for physics simulation." } }, "ad025b657f9a4fc7a1ab390d346d1f7d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D model with a default UV checker texture, not sand or any related object." } }, "ad5463064a6947d48552aefa121d000a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to discern any texture or detail. It does not resemble sand or any related object from the provided list." } }, "ad5774492b48448f8dd47f39c6330630": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a low-resolution texture of a large desert area mapped onto a simple 3D plane. It represents sandy terrain at a very large scale and lacks the detail needed to infer the physical properties of sand itself for simulation purposes (e.g., granular behaviour, texture). It looks more like a map tile than a representation of sand as a material." } }, "ae434be96e844550a75270ba6c58fa82": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a solid, flat block with a texture applied, rather than representing sand as a granular material (like a pile, dune, or even just loose sand). It looks more like cracked earth or a solid surface with a sand-like texture. Additionally, there is a small human figure present, violating the single object rule." } }, "b077d7e622fa4be99420beea394e6e50": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict sand or any related object. The few visible shapes are indistinct and lack the texture or form associated with sand." } }, "b0fb3f4ec6d643b9b468cc7724b17f85": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a sandcastle, which is a structure made of sand, not sand itself in a more natural or basic form like a pile, dune, or terrain. While related, it doesn't represent the fundamental material 'sand' for physics simulation purposes as well as other forms would." } }, "b16c8561f3564d89a89ea11af3cfc394": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a framed scene, possibly a diorama or game board, containing sand along with other distinct objects (blue blocks, reddish patches). It does not cleanly depict *only* sand or a sandbox/sandpit as required, but rather a composite scene." } }, "b1a2253e13fb459bb0652857872415d4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rock formation/cliff, not sand. While there might be a small sandy patch at the bottom, it is not the main focus of the object." } }, "b22df09fd40c4c17aad33f65b3e310a0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene with multiple objects (buildings, trees) on sandy terrain, not just sand or a sand feature itself. We need images focused solely on the sand material/object." } }, "b26cd63a17d345e29b5c7082dfba1f06": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a 3D model of a character or figure, not sand or any related concept like a sand dune, beach, or sand texture." } }, "b2782b3f9b484edcbd04e0d1baa9adc2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandbox, which is listed in the accepted object types ('sand box', 'sandpit'). The image quality is good. While there are small toys present, the primary object is the sandbox containing sand, and these additions are contextually relevant, similar to the flower/vase example provided in the instructions." } }, "b4e8db533dcf49e9ae90b4d76aaec69b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely black and does not depict any object, let alone sand." } }, "b4ea7f90b7b94c538a7ae712e6f3c1f3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any object, let alone identify it as sand or related items. The quality is far too low for training purposes." } }, "b518305314704634828a0e4f81a18f69": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts fragmented rocks or stones, not sand or any sandy terrain/texture. The object shown is clearly not representative of the 'sand' class." } }, "b5624062e3e14925b4e98a2c9d22a6b1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a trash bin, not sand or any related object like a sand dune, sandpit, or sand texture." } }, "b6a63acf699d4917924c1c3bec5d6cbf": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a house, not sand or any related sandy terrain/object." } }, "b6f6b255971d4b91bb708e406671535a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a single rock or clod of earth, not sand or a sandy formation like a dune or pile. It does not fit the requested class 'sand'." } }, "b83d80450c484732b15bd128c7fc7fef": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rocky, possibly snow-covered terrain section, not sand or sandy terrain." } }, "b99d83f084fd48aa84c32571f4a14844": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structured object, possibly made of stone and wood/metal, not sand or any sandy terrain." } }, "bacc0cab163c47969b4808272dfbc550": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, fitting the requested class. The quality is acceptable, and it represents a material relevant for physics simulation (e.g., ground interaction)." } }, "bbc6b900e5114844b200789ebd5bc9da": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandcastle on a patch of sand, which falls under the requested 'sand' class variations (sand, beach sand). Although there are small toys present, the primary focus is the sand structure, which is relevant for physics simulation (e.g., collapse dynamics). The image quality is adequate." } }, "bbd838e65d04408e953b1a35248e7dd8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D floor plan of a building, not sand or any related object like a sand dune or sandpit." } }, "bbdb42dca3ef4a859cf9bea9a1321954": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The texture applied to the sphere does not resemble sand. It lacks the grainy quality and characteristic appearance of sand, sand dunes, or sandy terrain. The swirling pattern and scattered colored patches are unrealistic for sand." } }, "bc2fe4e9b478494d98af1b241a6ff102": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an hourglass, which contains sand, but the primary object is the hourglass itself, not sand in the forms specified (e.g., sand pile, sand dune, sandy terrain, sand texture). We need images focusing solely on the sand material/object." } }, "bca5f39fc72b45cd86452fcb1069d5fc": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rock formation or cliff face, not sand or sandy terrain. It does not belong to the requested class." } }, "be02d8cbc5f040089cc4b07849487b62": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict sand or any recognizable object related to the class. The quality is too low." } }, "bea0cb112eaa45dba2f89073cea6c6ef": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a highly stylized, blocky representation of sand (likely from Minecraft). This does not represent the typical physical properties of sand (granular, flowing) needed for realistic physics simulation learning. It represents a specific game object's behavior rather than the material itself." } }, "bee50cc724a640328020bf31be85e91d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a truck, which does not belong to the 'sand' class or any of its related terms." } }, "c0388bd853194a338fd3d0f402f7ec6c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandbox containing sand, which falls under the requested classes ('sandpit', 'sand box', 'sand'). The sand material is visible and the image quality is good. This is suitable for learning sand physics." } }, "c08e96c7f73147c9a8ba862b9c841036": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground that is very light, almost white, with some darker, possibly vegetative elements mixed in. It does not clearly resemble sand and could be mistaken for snow or another type of ground cover. It lacks the typical granular texture and color associated with sand." } }, "c168128668984091aa8b924cb07592d2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a surface with a mixture of sand and numerous pebbles/small rocks. It does not clearly represent 'sand' as the primary component, looking more like gravel or a pebbly surface rather than sandy terrain." } }, "c2208f5ccc004f1681d27de67fe75799": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rock formations, not sand or sandy terrain as defined by the class list. Sand implies granular material, which these solid rock structures are not." } }, "c23473740a5e4d7dbb184d9902ae799f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a large building, not sand. While there might be a sandy texture at the base, it's not the focus and doesn't clearly represent any of the specified sand types." } }, "c481bfe337e74a7bb553486ab4c663fc": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (rocks, a pillar) in addition to the sandy terrain. We need images focusing primarily on the sand itself." } }, "c4fdf903d91d42f3b456efa4b9e07eca": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a composite scene (an island) containing sand, a rock, a palm tree, and water, not just sand itself. We need images focusing solely on the sand object/material." } }, "c57b0c6c51bd4db6b908d9c7edd5d1f6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a street sign and pavement, not sand or any related sandy terrain." } }, "c5977af5b0c744dab5ee46ff473892e7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a statue and its base placed on a sandy/rocky terrain. It does not depict sand as the primary object, but rather includes other distinct objects." } }, "c5fcf8e9f37e4db9aa75d857f1adcf56": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain with a crater, which falls under the 'sandy terrain' or 'desert sand' categories. The quality is good, and terrain like this is often used in physics simulations (e.g., impacts, deformation)." } }, "c64855d8215149e0a3f7112201837f23": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional, unrelated object (a pink star) within the main structure. Also, the texture looks more like rock or clay than sand." } }, "c66e74567d5342e4a25c2cc595df97f4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building structure, possibly made of sandstone or sand-colored blocks, not sand itself in a form relevant for physics simulation (like a pile, dune, or terrain patch). We need images of sand as a material, not structures built from sand-like materials." } }, "c75f303503564945b5d2575775cf80be": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object. It shows an abstract, unrelated object." } }, "c7b8df3fed654bd19b863b897f8e13ba": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a green textured surface that does not resemble sand in color or texture. It looks more like stylized grass or mossy terrain." } }, "c7bbaf0e5c5a425fbbe0a9d76820bf09": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the specified class list. The quality is acceptable for training purposes and represents a surface relevant for physics simulation (e.g., ground interaction)." } }, "c80ba5e17413467c8e021ccfb830e1af": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related sandy terrain. It shows cobblestone, a tree stump, and a patch of green texture (possibly grass or moss)." } }, "c88ba272b72e4800b9e36e34f1ebc60e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid red block, which does not represent sand or any related concepts like sand dunes, sandpits, or sand texture. It is completely unrelated to the target class." } }, "c8b35d665a0a44a5a55c005e0c4ca9f7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vehicle, not sand or any related sandy environment/object." } }, "c8d4f9d79b7d4df7b16bdab03c3fc608": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a robot or mech figure, which does not belong to the 'sand' class or any of its related terms (beach sand, desert sand, sand dune, etc.)." } }, "c919d776c3ff46a49954928ebaedaaf1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere with a water or cloud texture, possibly a planet, not sand or any related object." } }, "c9b5ef07047a4b7a90a4ffd6930ec22c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts sand, but it is heavily covered by seaweed/debris, which is not the primary object class requested. We need cleaner images focusing primarily on sand." } }, "c9e6511f270140abb865f53b7f961789": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block with a grooved, striped texture that does not resemble sand, sand dunes, sandy terrain, or any related concept. It looks more like a metal grate or corrugated material." } }, "ca37b2a37380441d91bbdd54be53a40e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not sand or any related object like a sand dune, beach, or sandpit." } }, "ca7eb1ec527540c1a4f084e656153ba0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a patch of terrain that is not clearly identifiable as sand; it looks more like mud or dark soil mixed with debris. Additionally, it contains multiple small, distinct objects (cones, bucket, flags) that are not part of the 'sand' class, violating the single object requirement." } }, "ca9a1f384f4141b68c9d7567d9cd739c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows pebbles and rocks, not sand. The texture is too coarse to be considered sand." } }, "cb96e8f5a0b743578665a06619dbeabe": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sand, which belongs to the specified class. The quality is acceptable, and it represents a material suitable for physics simulation." } }, "cba16fcda2614105b6dc4e08d2d4d080": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sandal, not sand or any related concept like a sand dune, beach, or sandpit." } }, "cc79ff537fa442d9b6d1e9e75382290e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sandcastle, which is a structure made of sand and falls under the requested class variations like 'sand pile' or 'sandy terrain'. The image quality is good, and while it includes a small shovel and stick, the primary object is the sand structure, which is relevant for physics simulations involving granular materials." } }, "cc8503130f304ffc9a14a9a4738841fd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not sand or any related object like a sand dune, beach, or sand texture." } }, "cceaa2c8a2f04e91953765e47790f02a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a piece of wood or rock, not sand or a sand formation. It does not fit the requested class 'sand'." } }, "cd055c67cd304c97bf56ffa47d66672d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized, blocky shapes stacked on top of each other. This does not resemble sand, sand piles, sand dunes, or any form of sandy terrain. It looks more like stacked rocks or abstract blocks and is not representative of the class 'sand' for physics simulation purposes." } }, "cd3a3d18fcf040a8815adc5210163341": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts sand within a sandbox, which falls under the specified classes ('sand', 'sand box', 'sandpit'). The image quality is good, and a sandbox is a relevant object for physics simulation involving sand." } }, "cd5bca365a054eb98c472d80ecd66435": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pile of sand, which belongs to the requested class. The quality is good, and it represents a single object suitable for physics simulation." } }, "cd6689e6b3034be897761225dd44fa59": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts multiple rock formations sitting on small patches of sand, rather than focusing solely on sand or a sand formation (like a dune, pile, or texture). It contains too many other distinct objects (rocks) that are not the target class." } }, "cd6ee12514d741179619495ca21cea0d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not any form of sand or sandy terrain." } }, "ce09049b2a464c5cb9877a4ee194abd8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Lego vehicle, not sand or any related terrain/texture. It belongs to a completely different object class." } }, "cec32623ef924351a6d58861aa0970cb": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object class. It shows boxes, cubes, and spheres." } }, "cf043f903fbb4efca2680b5c9684e39c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid piece of rock or mineral, not sand or sandy terrain. Sand is typically represented as loose granular material, a pile, or a surface texture, none of which are shown here." } }, "d01b6f328c9d4b419cc090d60f540352": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks more like ice, a glacier fragment, or a mineral formation rather than sand. The texture and color are inconsistent with any type of sand." } }, "d0e50fa7f4204533a363cd14f486adba": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an hourglass, which contains sand, but the primary object is the hourglass structure itself, not the sand material or a sand formation (like a dune, pile, or texture) as specified in the class list." } }, "d104370112984bca976f85a00adc45a1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large-scale terrain model, possibly a quarry or landscape, which contains various elements like rock formations, potential vegetation, water bodies, and a structure. It does not clearly represent 'sand' as the primary or sole object. We need images focused specifically on sand (e.g., dunes, piles, textures) to learn its physical properties." } }, "d1b91b0aab91486e8bc2b3a77402005f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts muddy ground with bags stacked on pallets, not a clear representation of sand or sandy terrain as required by the class definition. The ground texture is not distinctly sandy, and the presence of other objects like bags and pallets dominates the scene." } }, "d1f226d915b643848a2c08b426d9f6b2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of landscape with grass, rocks, and a road, not primarily sand or sandy terrain. It does not clearly represent the target class 'sand'." } }, "d200b776c544466986b4f2fdd067113e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid object that looks more like a rock or compacted earth rather than loose sand, a sand pile, or a sand dune. It does not fit the requested classes related to sand, especially considering the need for physics simulation where sand typically behaves as a granular material." } }, "d23867ec43824beabf7881b0e0814273": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts sandy terrain, but it also prominently features a road or path made of a different material (asphalt/concrete). This violates the requirement of depicting cleanly ONE SINGLE OBJECT class (sand)." } }, "d333ebf8ead74697a1428bafdb97d26b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized rocks, not sand or sandy terrain. While these rocks might be found in a sandy environment, the object itself is rock, which has different physical properties than sand." } }, "d3504289138c486f91da2d82a46749c3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (vehicle, rocks, barrels) in addition to the sandy terrain. We need images that depict primarily the sand or sandy terrain itself." } }, "d362d57152f84e339fa49eb2b5f5c06c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a solid, rock-like object, possibly compacted sand or sandstone, rather than loose sand, a sand pile, or a dune. It doesn't clearly represent the 'sand' class in a way that would be typical for physics simulation of granular material." } }, "d37fd30040ac4d1a88b82cf5851f72bd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a dragon, which does not belong to the 'sand' class." } }, "d3b4f09e1467400f8d3c4d70061ab97a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground that looks more like dirt or mud mixed with rocks, rather than clearly representing sand, beach sand, desert sand, or a sand dune/pile." } }, "d491e5f026234eaea7b3a36fd48da21b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the requested class list. The quality is adequate for training purposes and it represents a single concept relevant to physics simulation (e.g., interaction with a surface)." } }, "d4f8deb6dea647f6898837cf6d1b4b60": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts sandy terrain, which falls under the specified class list (desert sand, sandy terrain). The quality is good, and it represents a type of environment where sand physics would be relevant in a game." } }, "d6b5793fb2004019a49dc30822357952": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a textured surface that can be interpreted as stylized sandy terrain or sand dunes/ripples. While not photorealistic, it represents a type of ground surface relevant to the 'sand' class and is suitable for physics simulation purposes as a terrain type." } }, "d7b86332813f4c89aec4a10f1517dcac": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a strip of sand, consistent with 'beach sand' or 'sandy terrain'. The quality is good, and it represents a material relevant for physics simulation (e.g., interaction with water, deformation)." } }, "d8302e5316a144a19cd4d65694e4092e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains many abstract, blocky structures that are not sand. The yellow surface could potentially represent sand, but it's very stylized, lacks texture, and the overall scene does not clearly depict any object from the 'sand' class list (like dunes, piles, beaches, etc.). The focus is not on the sand material itself." } }, "d8b36dd30e854ffdb968a2151f43b54a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows several cubes with different textures (wood, black, stone/concrete-like), none of which represent sand or sandy terrain. It does not depict the requested object class." } }, "d8c450e049fe40b29e9d7e2d8872d2ab": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized block of sand, but it also includes other distinct objects (pixelated bones/skeleton) on top, violating the requirement for a clean depiction of a single object class." } }, "d8c7c59079c649bfb96ab31afa919378": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a piece of sandy terrain, which falls under the requested classes. The quality is good, and it represents a single object (a terrain chunk) suitable for physics simulation purposes." } }, "d8e2339c9632476bbf0439a6cfedc218": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a skate ramp or structure, not sand or any related concept like dunes, beaches, or sandpits." } }, "d90a04c6708747d39d719f797fc793d1": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a large rock formation sitting on a sandy surface. The focus is not on the sand itself, which is the target class. We need images where sand (dune, pile, texture, terrain) is the main subject." } }, "d944d9c8bd604a7690a6a6b094f64298": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very small, fragmented, and distorted piece of a 3D model. It does not clearly depict any recognizable object from the 'sand' class (like a dune, pile, or distinct terrain patch). It appears to be a low-quality artifact or broken mesh, unsuitable for training." } }, "d97e762d7f5a42d7af2dcc83628fb38c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a 3D model of a rocky terrain or canyon, not primarily sand, sand dunes, or sandy terrain as required by the class definition. While it might be found in a desert environment, the dominant feature is rock/earth formations, not sand itself." } }, "da0abb659bc140fa9836f90f2773383d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rocky terrain formation rather than clearly representing sand, a sand pile, or a sand dune. The texture is ambiguous and the overall shape suggests solid rock more than granular sand suitable for physics simulation." } }, "da0d254ea1dd47478a3a88ff1c24c302": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts the sky, not sand or any related sandy terrain." } }, "da63ec17aa0541cba3f319a2ace6acb5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock or boulder, not sand or any of the related classes like sand dune, sand pile, beach sand, etc." } }, "dab36094d5aa4a6296a9044fd2770267": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a smooth, abstract blue shape that does not resemble sand, sand dunes, sand piles, or any related concept. It lacks the characteristic granular texture of sand." } }, "dabe5d2b39ea45c890d37a46ab288edd": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of terrain that appears to be a mix of sand and rock, rather than clearly representing sand, a sand dune, or a sand pile. It looks like a fragment of a larger landscape model and doesn't isolate the 'sand' object well enough for training specific material properties." } }, "dace3d12197f4f3ab69ac1ff07338839": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict sand or any object." } }, "db4f0853c545455082255df6ad60778f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sandcastle, which is a specific structure made of sand, not just sand itself. It also includes non-sand elements (flags). This does not fit the requested classes like 'sand', 'sand pile', 'sand dune', or 'sand texture'." } }, "dbb4736fff1f404398ddc6a0e03d91ae": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a building structure, possibly made of sandstone blocks, not sand itself in its granular form (like a pile, dune, beach, or texture) as requested by the class list." } }, "dbecacd8b03c409d9b8d638648ef2aa6": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pile of rocks or gravel on a grassy surface, not sand or any related sandy terrain as requested by the class description." } }, "dc012035359441c7b33f39f791f89d95": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a sandcastle, which is clearly made of sand and falls under the broader concept of the requested class. It's a relevant object for physics simulation (e.g., structural integrity, crumbling)." } }, "dc5fddf304f240438a5db2d1e224b526": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a metal crate, not sand or any related concept like beach, desert, dune, etc." } }, "dc6cd441196542d1a8deff14ac05b80c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a prominent plant growing out of the sand, violating the requirement to depict only a single object class (sand)." } }, "dd3c5cc0df3d4f61a046296404dae386": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone sand." } }, "df4c61bbdec048a79b8924f5c0983f8a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a simple, flat, beige elliptical shape. It lacks any texture or form characteristic of sand, sand dunes, sand piles, or sandy terrain. It does not resemble any object in the specified class list." } }, "dfd1dccefe764bf1b448ecb8124cdf16": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts rocky ground with some vegetation, not clearly representing the 'sand' class. It looks more like gravel or dirt mixed with rocks and moss/grass." } }, "e03d10a3ba66421c9c2df3ac165e73a3": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, and it's difficult to clearly identify the object as belonging to the 'sand' class. It appears as a fragmented, low-resolution strip of terrain, not a well-defined object suitable for training." } }, "e09ad65c175149b986c98753677606be": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily distorted and does not clearly depict sand or any recognizable object. It appears to be a rendering artifact or a severely corrupted texture." } }, "e155f482613348e78efe6cbd87f6c236": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden cabinet or shelf, not sand or any related object from the specified class list." } }, "e267b67bb983452fb12cbd3d0478a8ae": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related concept. It shows some small, indistinct white objects that resemble pills or pebbles, not sand grains or a sandy surface. Additionally, the image is extremely bright and lacks detail." } }, "e36863997d8c459aa4f30da9ee650a8b": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a soldier, not sand or any related object like a sand dune, sandpit, or sand texture." } }, "e53238bf00ba4b40adad7356403aa255": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a rock formation on a surface. The surface texture itself does not clearly resemble sand; it has a metallic or icy appearance rather than grainy sand. Therefore, it does not clearly represent the 'sand' class." } }, "e5483874a8ad422ebf26a6d03e2b9832": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (pillars, wall) placed on a sand-textured base, rather than focusing solely on the sand itself as the primary object (e.g., a dune, pile, or texture)." } }, "e8377f4d4bb5431bad2310d66727b179": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a pile of rocks or gravel, not sand. While there is some ground material underneath, it is not the main focus and doesn't clearly represent the 'sand' class." } }, "e97baf55224f4388a067e78d556db4ef": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of terrain that is not clearly identifiable as sand. It appears to be a mix of rock, earth, or possibly dried mud, rather than predominantly sandy terrain, a sand dune, or a pile of sand." } }, "eb6b24a04d4c4a8e9183cd916f73aad0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a piece of sandy terrain or a section of a sand dune, which falls under the specified classes. The quality is adequate, and it represents a form of sand relevant for physics simulation in a game environment (e.g., terrain deformation, interaction with objects)." } }, "ebb007faf9d748a184c93dec82917440": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify any object, let alone sand or related concepts. The quality is too low for training." } }, "ebd539f74b80436793519c16058c5535": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a 3D model of a castle, not sand or any related object like a sand dune, sand pile, or sandbox." } }, "ebdc2c48baf2430cbcf676ca7dc33a6a": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a structure made of sand on sandy terrain, which falls under the requested classes. The quality is good, and it represents an object relevant for physics simulation (e.g., deformation of sand structures)." } }, "ebf1976c0edc4389b87487b525f759ca": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pyramid structure, not the material 'sand' itself. While pyramids are often found in deserts, the image focuses on the building, not the sandy terrain, sand dunes, or sand texture needed for the class." } }, "ec5be55ecdd14632ba8e58bcc55b1a3f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a maze, not sand or any related concept like a sand dune, sandpit, or sandy terrain." } }, "ecb3b89356874d73ba449f6c0bf59cf7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright, almost completely white, making the object in the center barely visible and impossible to identify clearly as sand or any related object. The quality is too low for training purposes." } }, "ee170254bc7c40ee8029132138cfc511": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The texture includes significant non-sand elements (looks like petals or leaves) mixed in, and has an imprinted pattern, making it not a clean representation of sand material." } }, "eee597426c034fe6a91e4f3cd74eb635": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the 'sand' class. The quality is good and it represents a single material relevant for physics simulation." } }, "ef01f221f0f4427f9765449a4a993bf5": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, artificial structure, not sand in any recognizable form (like a dune, pile, beach, or texture)." } }, "ef377acc61ba419b968d666682241c1c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict sand or any of its variations. The texture and coloration resemble a rock, mineral, or possibly biological material more than sand." } }, "ef40c64763014af88da1a17f97b40f6c": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict 'sand' or any related concepts like dunes, piles, or sandy terrain. It looks more like a cross-section of a rocky cliff or terrain, and the presentation with the attached block is unclear." } }, "ef9544134c8d4be0bd9cfef86374f7c9": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a small, isolated fragment that vaguely resembles sand or sandstone, but it does not clearly depict any recognizable form of sand like a dune, pile, beach, or even a distinct texture patch. It's too abstract and small to be useful for representing the 'sand' class, especially for physics simulation purposes where sand is usually treated as terrain or granular material." } }, "ef96e10f1702493f8db71b920b1b8a44": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks any discernible texture or detail, making it impossible to identify as sand or any related object. It appears as a mostly white shape on a white background." } }, "efe362b096804860810e6146aa17c4de": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large-scale terrain model including mountains and other features, not just sand. While it contains sandy areas (possibly dunes), it doesn't focus solely on the sand material itself, making it less suitable for learning specific physics parameters for sand simulation. It represents a landscape rather than a distinct sand object or texture." } }, "f035cae4f7a4498bb073d3ea565336a7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large piece of driftwood or a tree stump in addition to the sand, violating the requirement to depict cleanly one single object class (sand)." } }, "f0ac3957a41043f4a24c5f250644da28": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, rock-like object, not sand or any of its related forms (like dunes, piles, or textures). Sand is granular, and this object does not represent that characteristic, making it unsuitable for the class and for physics simulation of sand." } }, "f0bb051a3d6448398c5e9eec31c1ab8e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation, not sand or any related sandy terrain/object as specified in the class list." } }, "f127dfb3c74244c692b40937aaf1a7c0": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of sandy terrain, which falls under the specified class 'sand' and its variations. The quality is good, and it represents a material relevant for physics simulation (e.g., ground surface)." } }, "f35b8eb1e72f42699ec34069489ac654": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a complex environment or level layout with multiple elements (rocks, structures, terrain), not just sand or a specific sandy object like a dune or pile. It's not suitable for isolating the physical properties of sand." } }, "f3a88e73b78c4696a9a0f8e34a428901": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a low-polygon object that resembles a hat (possibly a cowboy hat or fedora) with a band, not sand, a sand pile, sand dune, or any related concept." } }, "f47e2aed38ec430dbc0c5bb156289732": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a highly stylized, blocky representation that does not clearly depict sand or its typical texture/form. It looks more like a generic voxel terrain piece colored beige, which is not suitable for learning realistic sand physics." } }, "f5d237705357479b9f9f7f3f820368c7": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image primarily depicts a sculpture, although it is placed on a sandy base and might be made of a sand-like material. It does not cleanly represent 'sand' as a terrain, pile, dune, or texture, and violates the 'single object' guideline as it features both the sculpture and the sand base distinctly." } }, "f6bb3efb4f274e49b821ba8edc923831": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere with a wood texture, not sand or any related concept." } }, "f7a959d27d3a4bfb92d68ad13aea5eee": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a distorted, flat plane with a texture that does not resemble sand. It looks more like a fragment of a low-resolution ground texture or possibly metal foil. It does not clearly depict any object from the 'sand' class and is unsuitable for training." } }, "f882c34269f54657b761e69cd18fd242": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it very difficult to discern the texture or confirm that it represents sand. It looks more like snow or ice due to the brightness and lack of typical sand coloration/texture." } }, "f89adeaccd274a25ab92bfb6d5a78f4e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object or texture, therefore it does not show sand." } }, "f96f9a051dd5438380ab799bba7a76e2": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a significant amount of rocks mixed with the sand, making it not a clean representation of the 'sand' class. The rocks are too prominent." } }, "fb2de7083db84046b16f3a4131ed498e": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict sand or any related concept (like a dune, pile, or texture). It looks more like a thin shard or piece of torn material, not suitable for representing sand for physics simulation." } }, "fb68228bdbcb4c499430a2f3ede3d722": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object like a dune, pile, or texture. It appears to be a different, solid object, possibly a stylized wall segment or piece of wood." } }, "fbc6903540be4f2081258af428d10b64": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a green surface, possibly grass or turf, with a small object on it. It does not resemble sand or any related sandy terrain." } }, "fc1ba456dd3a43e8a49ac428a781f0a8": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts patches of sandy terrain or sand texture, which falls under the requested class. The quality is adequate, and it represents a material relevant for physics simulation." } }, "fdd6f27663c049638afbbe30f9e9c93d": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block with two different textures, neither of which clearly or convincingly represents sand or sandy terrain. It looks more like a generic material block rather than a specific sand object like a dune, pile, or texture patch suitable for physics simulation." } }, "fe19aee8cbfc44d68f2af6cd39eb0b72": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict sand or any related object from the specified class list. It appears to be an untextured 3D model of a strap or belt." } }, "fe53ffba425a4c93853944522351a80f": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mix of sandy terrain and what appears to be rock or a cliff face. It does not cleanly represent only sand or sandy terrain, and the quality/resolution is somewhat low." } }, "ff03ddcd2bbb44b8897c86e54ef913e4": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a blocky, voxel-style cube. While it might represent 'dirt' or 'earth' in a specific game style, it does not clearly depict 'sand' with its characteristic granular texture or common forms (dunes, piles, beaches). It's not representative of the general concept of sand needed for training." } }, "ffa1d1b7609d4078a5efddc005ec1089": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a lamp or light box, not sand or any related sandy terrain/object." } }, "ffdfe8ccf41e4ed5b6135665a7efca56": { "obj_class": "sand", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a large cylindrical object which looks like rock or concrete, not sand. The ground texture is also not clearly identifiable as sand; it looks more like rough, rocky terrain or dried mud." } }, "010358568d0544e295126d73c9066a7b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three stacked fruits) instead of a single object as required." } }, "02063b21b136423ebd03471ed875b23d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a squeezed/used half of a citrus fruit, not a whole, fresh fruit. This state might not be ideal for learning the general physical properties (like density, elasticity) of the fruit class for physics simulation." } }, "0224d9084cf94596b514a64800382454": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty basket. While 'fruit basket' is listed as a related term, this image does not contain any fruit, and therefore does not clearly depict an object from the 'fruit' class or its direct examples." } }, "0238adfcca3e4727b9c36eba3a9eb7cb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and looks more like a pencil than any type of fruit, despite the yellow color potentially suggesting a banana. It does not clearly depict the object class 'fruit'." } }, "02ae824805cf44bba70ff98fae77cf4d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a market stall with multiple types of produce, not a single fruit object. It violates the requirement of depicting cleanly ONE SINGLE OBJECT from the specified class list." } }, "03b7e92ec16948959169b42e436ebe81": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation." } }, "0450b57c682d4454b3beb2f8724a73f5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single peach, which belongs to the 'fruit' class. The image quality is good, and the object is suitable for physics simulation." } }, "05cda3ae3dce4f9ba100fc212a44a89e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is too small and faint to be clearly identified as belonging to the fruit class. The quality is too low for training." } }, "06d4d493dc5f4c89a73db2b7c1c9e210": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a market stall or cart, which contains fruit (apples), but the main object is the stall itself, not just the fruit or a simple fruit container like a bowl or basket. We need images focusing solely on the fruit or fruit in simple containers." } }, "06f914b6b3f14eed814013cdd97d7a51": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct fruit objects (strawberry, grapes, orange, apple, cherries, watermelon) rather than a single object as requested." } }, "07daad87c7954896b5e51b0a39c205d9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to clearly identify the object. It does not appear to be any recognizable fruit." } }, "07e7ee97643644c1be2cce6ee7c3871e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects beyond the fruit class, including a pitcher, a cloth, and a table. We need images depicting only a single object from the specified class (or a common arrangement like a fruit bowl/basket, which this also isn't strictly limited to)." } }, "08749fe049654b85a5ebf1079ff55a88": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "08a26ba669844f17a299a1eb368de04d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost completely washed out and unrecognizable. It does not clearly depict any fruit." } }, "08d23f3cd9254e38a696060a962ebb7f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single orange, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation training." } }, "0972d93f991f456aa2662f2085110796": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (table, tablecloth, wine bottle) in addition to the fruit bowl, violating the requirement for depicting cleanly ONE SINGLE OBJECT or a reasonable collection like a fruit bowl/basket." } }, "09a98293085e49688b2c7e7ef9c98b0b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image has significant rendering artifacts (jagged dark edges) around the object, making it appear low quality and poorly processed." } }, "0a4272e070eb4626a90cab98f856ce2f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a cart or wagon, not a fruit. While there are some spherical objects inside that might be intended as fruit, they are not the main focus, lack detail, and the image contains multiple objects (cart, lantern, potential fruit) rather than a single object from the specified class list." } }, "0c31e751e8a0474b9609fc0f72e3a79a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The quality is acceptable for a 3D render, and it represents a single logical unit suitable for physics simulation." } }, "0c7337fc86334435bd0a90263bf73d9c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (likely an orange or grapefruit) which belongs to the specified class list. The image quality is good, and the object is suitable for physics simulation." } }, "0cbb98225b814aadafdffba55bd6c9fd": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "0d293b5a3f00434a8edb779432ac0570": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "0db42e43c0fb4fe7a917513ae23266e1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sword, which does not belong to the 'fruit' class." } }, "0f2103bd899d4f97b11dfa9c852bea48": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a type of fruit or seed pod (which botanically can be considered a fruit). The quality is good, and it fits within the broad category of 'fruit', potentially 'tropical fruit'. It is suitable for physics simulation." } }, "0f3a8a8d256345a2ae48a7c315233877": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree (likely a cherry blossom tree), not a fruit. While cherry trees produce fruit, the image itself does not depict the fruit class requested." } }, "0f93f671ef874e378591842a84a9eaa6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit basket filled with apples, which falls under the specified 'fruit' class (specifically 'fruit basket' and 'apple'). The image quality is good and suitable for training data. It represents an object that could reasonably be used in physics simulations within a game." } }, "10c0b346b17a4587bc95e38a4d9a579e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex scene (a fruit stand) with multiple types of fruits, crates, shelves, and other items, not a single fruit object or a simple fruit basket/bowl as required." } }, "10e2aa83282c41f1b2be4f5d63e860da": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a juice carton, not a fruit itself. While juice is derived from fruit, the object shown is packaging and does not fit the requested 'fruit' class." } }, "111a77ed1fcd4b1e922b3033c175cb41": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a grill, not fruit. The items on the skewers are abstract shapes and not clearly identifiable as any specific fruit. Additionally, it contains multiple objects (grill, skewers, abstract shapes) rather than a single fruit object." } }, "1165679a690b44c4845ca4af6d0e50c6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "11be396039444798bb03151249ee430c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl, which falls under the specified classes ('fruit bowl', 'fruit', 'apple', 'banana'). The low-poly style is acceptable for diversity, and the image quality is good. A fruit bowl is a reasonable object for physics simulation in a game." } }, "11d8e1e33f544e5d85d0c5a6b8e2f29a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (likely a type of citrus) against a clean background. The quality is good, and it is suitable for physics simulation." } }, "147e2dbf27b142f6b4a85c77837ef02e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bottle of juice, not a fruit or any of the items listed in the 'fruit' class definition (like fruit bowl, fruit basket, etc.)." } }, "14d39bea13ae45c6ab1b429693a09eee": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple abstract shapes stacked together, which do not clearly depict any recognizable fruit. It violates the single object rule and the objects themselves are too abstract." } }, "16aa280daffc4606aa332e731ec3b642": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor; it is significantly overexposed (too bright), making details hard to discern." } }, "16bd3a49ab9744348af344ad93150182": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable, and it's suitable for physics simulation." } }, "1843dffc18474564bd2ce993c5b04f17": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a market stall or display stand, not any item belonging to the 'fruit' class." } }, "184b343925de4af9bf5d9ed9fa5a7b98": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an object from an extreme side angle, making it impossible to identify. It does not clearly depict any recognizable fruit." } }, "197785a17620486e9f5d8e5d07ad88f9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl with fruit, which falls under the specified classes ('fruit bowl', 'apple', 'banana', 'pear'). The quality is acceptable for a 3D render, and it represents a common object that could be used in physics simulations within a game." } }, "198f2027842249ce9693ce7dab01b0ac": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a container, possibly a pill box, not a fruit or anything related to the fruit class." } }, "19e6236a1f334717a06128e5c892be2f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the requested fruit class. The quality is acceptable, and it's suitable for physics simulation." } }, "1aa94c9127004536a5f2b14f9743675b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pineapple, which belongs to the 'fruit' class. The image quality is good, and the object is suitable for physics simulation." } }, "1b43efb334f5470f8a7b4658aa51ed8b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not resemble any recognizable fruit. Its texture and color are unnatural for the 'fruit' class." } }, "1bc5925b6a9c46bdb979a62c93cffbfc": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit basket filled with strawberries, which falls under the specified classes ('fruit basket', 'strawberry'). The image quality is good and suitable for training. A fruit basket is a common object and relevant for physics simulation." } }, "1c5abb0dd9424a829ea1e16f6a07fc7a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single mango, which belongs to the fruit class. The image quality is good, and the object is suitable for physics simulation." } }, "1eb5e450d152479fa4a6f16a7242ae54": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (pitcher, glass, table, tablecloth) in addition to the fruit (grapes, apple/lime). We need images depicting primarily a single object or a clear collection like a fruit bowl, not a complex still life scene." } }, "1f5a007441124311a99d1f6156cb17f7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single blackberry, which belongs to the fruit class. The quality is good, and it represents a single object suitable for physics simulation." } }, "1fc702322dae488cb96cfe17d9e6db3d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality." } }, "1fcdadf6a8bf4a008de9196896e3636d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single dragon fruit, which belongs to the 'fruit' class. The image quality is good, and the object is isolated, making it suitable for training data. A dragon fruit is a plausible object for physics simulation in a game." } }, "1fded760e20e465ba0e68762e9fcaa75": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a chocolate-covered banana on a stick, which is a prepared dessert rather than a plain fruit. While it contains a banana, the added elements (chocolate, sprinkles, stick) significantly alter its appearance and likely its physical properties compared to a standard fruit, making it less suitable for learning typical fruit physics." } }, "20e8dfdb74c646539059771567dfd89e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts two bananas, which belong to the 'fruit' class. The image quality is good, and the object is suitable for physics simulation." } }, "22ac4a0d914e49bd9f885c251d1a017f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit." } }, "22dec6ba1a644228ae32b24ce2342273": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts human figures, not any type of fruit." } }, "22ee727c9d8149078e7d4ad36eec7523": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The image quality is good, and the object is suitable for physics simulation." } }, "23428abd790b4df4b7506d653f563905": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single watermelon, which belongs to the fruit class. The quality is acceptable for training purposes, and a watermelon is a suitable object for physics simulation (e.g., dropping, rolling)." } }, "23862854452f40d3a957c20335dcdb0c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a highly distorted and fragmented view, making it impossible to clearly identify any object, let alone a specific fruit or fruit-related item. The quality is very low due to the rendering artifact/fragmentation." } }, "23a95518111049cea598236aacb8611c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, appearing blurry and abstract. It also contains multiple objects/elements beyond the potential fruit (a surface and abstract shapes), making it unsuitable for training on a single object." } }, "242faed7d2604c8a854055ab11872796": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a fruit bowl and a table), while the requirement is to depict only ONE SINGLE OBJECT from the specified class." } }, "2464ac1432da47b29a2c60766e416f05": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple scattered objects, including what appear to be vegetables (leafy greens) mixed with fruits, and a bowl. It does not depict a single, clean fruit object or a standard fruit bowl/basket containing only fruits." } }, "24fefce253dc485da154b6655bde8133": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two bananas, but the requirement is to depict only ONE SINGLE OBJECT per image." } }, "272c283e7e2d48e898d2eb5a8e43815c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it impossible to identify any object, let alone a fruit." } }, "273a3aa035784eacb89db08c1a0710bf": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single object that resembles a fig, which is included in the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "275eb6c21a0a47b3a87829751a7e7721": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable and it's suitable for physics simulation." } }, "28140fa8696743e39341bad4fd96f70b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object belonging to the 'fruit' class. The objects appear to be pieces of chocolate or wafers." } }, "286b323160b3477589e93dfeca2d7145": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (an apple and cherries), whereas the requirement is for images depicting only a single object." } }, "28a73f7774f7455f9cb8c11f2beadc95": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit." } }, "294157ca0d8348389862f45766765aa7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks detail, making it difficult to clearly identify the object as a specific fruit (like a banana). The quality is too low for the dataset." } }, "294b5774d94141358a7b6b1708860dde": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single watermelon, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "2b2d1ec0c18d455798d46cd02c8afa86": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation." } }, "2bb940dcf3d94d43b8c161cdd7d8ccbf": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fruit (possibly an orange or peach) which belongs to the requested class. While low-polygon, it is recognizable and represents a single object suitable for the dataset." } }, "2cbfe12a6e5e467781794f0c5479795c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, with significant rendering artifacts and poor clarity, making it difficult to clearly identify the objects. It does not meet the standard for high-quality training data." } }, "2ce59930a269482b813dc013c0bd413c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (various fruits and vegetables like watermelon, tomatoes, avocado, carrot, peppers), violating the requirement for a single object per image." } }, "2db704bf632746328cfe91d71e293479": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable and it's suitable for physics simulation training." } }, "2eb66af869384273a5f533df64551a0b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts blueberries in a container, which falls under the 'fruit' class (specifically 'blueberry' and 'berries'). The quality is adequate, and this representation (fruit in a container) is acceptable, similar to the vase of flowers example. It is suitable for physics simulation." } }, "2f976bceb8c147b48af795b55399bccb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and abstract (blocky, blue), making it difficult to recognize as a specific type of fruit from the provided list. While it has a stem and leaves, its overall appearance is too far removed from a realistic fruit for the intended purpose of learning physics parameters." } }, "2fb3c8c315474a6caaccc63ec00d0536": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable for training, and a banana is a suitable object for physics simulation." } }, "2fcaa1c882014dbc868519144189be89": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "2ff5660c93a14b88b9aa607f63a8cf2c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of berries (likely blueberries), which belongs to the 'fruit' class. Although low-poly, the object is recognizable and the image quality is good. A cluster of berries can be considered a single object unit in this context and is suitable for physics simulation." } }, "30444fb6cd624e9c8947d3c78cb8199e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of grapes, which belongs to the 'fruit' class. The quality is good, and it represents a single object suitable for physics simulation. The voxel style adds diversity." } }, "3080da4917d94b4b81a914f94364d451": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a 'fruit bowl', which is listed as an acceptable object within the 'fruit' class. The image quality is good and suitable for training. While it contains multiple fruits and a bowl, it represents a single conceptual object ('fruit bowl') relevant for physics simulation (e.g., interaction, spilling)." } }, "30a614e79b2e4c9b8f2b50419cb47622": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts two slices of watermelon, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "30ad17d9af5b42f7ab0ebe9082b438b3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to identify the object. It does not appear to depict any fruit." } }, "31a25f4eec454e04b54c7d4e6f942b96": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and the object is suitable for physics simulation in a game." } }, "31acda95fdaa4470b2621df3b9832fb7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a clear texture seam or discontinuity across the lower part of the fruit, indicating a potential issue with the 3D model's texture mapping, which makes it look unrealistic and low quality." } }, "327864e696374d6cb1c55d541edd9b9d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a box containing items that are not clearly identifiable as fruit. It looks more like a box of chocolates or some other packaged food product, not suitable for the 'fruit' class." } }, "330a644d41b5494cb9e1a126c49b31d5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct fruit objects (banana, pear, starfruit) rather than a single object as requested." } }, "337a24c3b5df48d4a3e9f0696af91ef8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains stylized, anthropomorphic characters that vaguely resemble fruit (orange, apple, banana), not realistic depictions of fruit. It also shows multiple objects/characters, not a single clean object from the specified class. This is not suitable for learning standard physics parameters for fruit." } }, "337e1cf840e94d8cbd1edf134b4cccbf": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single papaya, which is a type of fruit. The image quality is good, and the object is suitable for physics simulation training." } }, "36b61b53906e4274ac1826d1d6de5c5a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts small red fruits, likely berries or cherries, which belong to the requested 'fruit' class. The quality is acceptable for training data, and it represents a single object (a sprig/bunch) suitable for physics simulation." } }, "36cea96efe5b4a9a9581224d6d083ef8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a box with watermelon illustrations, not an actual fruit. It is not suitable for representing the 'fruit' class, especially for physics simulation purposes." } }, "373c679b7bd644aea12373945834e973": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple fruits arranged on a plate, which aligns with the 'fruit bowl' / 'fruit basket' concept within the allowed 'fruit' class. The image quality is good and suitable for game development and physics simulation." } }, "3765dba00e8049799e403c2507945840": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized character, not any type of fruit." } }, "3809ed97320f47f7ab721b5262a59bc7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation in a game." } }, "380ad02238434704b3724984d310ec6d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains many other objects (table and chairs) besides the fruit, which is very small in the scene. We need images that primarily depict the target object." } }, "389bd1eb9d69423a88a73a61940940fa": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The 3D model quality is low. The bottom part clearly shows polygons/facets, and there appears to be a texture seam or artifact around the lower half of the apple. The stem also looks very artificial and blocky. These quality issues make it less suitable for a high-quality dataset." } }, "3910e3cb04b04858a5e3df19b74c6d90": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable, and it's suitable for physics simulation purposes." } }, "3a50c5a4acd243e199fc13e594455f31": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making the object almost invisible and unrecognizable. It does not clearly depict any fruit and is of very low quality." } }, "3a6c2b3587034e91af8d0bcfb7046bda": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple individual bananas stacked, not a single banana or a natural bunch. We need images of single objects." } }, "3add621802554a7ba93197dde5568fe7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl/basket, which is listed as an acceptable class. The image quality is good and it shows a single object suitable for physics simulation." } }, "3b07284ca29d4efa9ec7c4d8019b4e52": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very abstract, low-polygon object that does not clearly resemble any specific fruit. The quality and detail are too low for use in training, especially for physics simulation." } }, "3b339ba70c864b95809bb4b372f72a8c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fruit, which belongs to the requested class. It is a single object, well-lit, and suitable for use in a video game, including physics simulations." } }, "3b658ecad29f4d9a9606dbf8fea7c9bb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plant (likely a banana plant), not the fruit itself. The request is for images of fruits." } }, "3bc16fa2a1df44b38c1ad8534dfa1c7f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl, which is included in the list of acceptable objects. The quality is adequate for training purposes and the object is suitable for physics simulation." } }, "3c78c5cd87454cd59ba29ce177aa0d6b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two bananas and a board), not a single object as requested. The presence of the board and the second banana could interfere with learning the physics parameters for a single banana." } }, "3d10d36fcf8d4baaa30d00be23106115": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single object that resembles a type of berry (like a raspberry or deformed strawberry), which falls under the 'fruit' class. While the texture is slightly low-resolution and there's a semi-transparent overlay, the object is still identifiable and the overall quality is acceptable for training purposes. It represents a fruit suitable for physics simulation." } }, "3d5197b499ff47308fcdddba8650fffb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which is part of the fruit class. The quality is acceptable and it's suitable for physics simulation." } }, "3dba2b6e4098420c86be2a45c14f1ea9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, blocky shape with an unusual texture and a floating triangle. It does not clearly depict any recognizable fruit from the provided list." } }, "3de0ce43a2cc464687177c10fc2e5b8b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit." } }, "3e561da651a24d39b7d7e4bf55a7e48a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is poorly cropped, cutting off part of the object (bananas) and making it difficult to clearly identify or use for training." } }, "3e5fe08f9ee74bf6ab5717fd0c45ba71": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl, which is included in the list of acceptable terms for the 'fruit' class. The quality is good and the object is suitable for physics simulation." } }, "3eb5d14e1502438f803defca2a72420f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts cherries, which belong to the fruit class. Although stylized (voxelated), the object is recognizable and isolated. It is suitable for physics simulation." } }, "3f818967cb6c4be4a86d7d068ef9c506": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "3fdcd7a62fa64a068b8191ffc6506537": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a 'fruit bowl', which is listed as an acceptable object within the 'fruit' class category. The image quality is good, and the object is suitable for physics simulation." } }, "402cf238039d44b79dd84d26835d678e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training purposes and it represents an object suitable for physics simulation." } }, "404dc4d7d06147078b3bc00a82250e0f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and distorted, making it difficult to clearly identify the object as a specific type of fruit. The quality is too low for training data." } }, "40c7776c79d04366a7f9361ef8ab9558": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, the object(s) are blurry and distorted. It's unclear what the object is supposed to represent - it looks like multiple fruits merged or arranged strangely, not a single, clearly identifiable fruit or fruit container." } }, "40fc91554f22460abc593f91067c2b4c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an unrelated object (the stand-like structure at the bottom) in addition to the fruit bowl." } }, "41b2b0867ea846d48146a6cb08bdbdb5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "4205b436b91f44f3a7e57b830746d65c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract green structure that does not clearly resemble any recognizable fruit or related item from the provided list. It looks more like an alien plant or a stylized cactus." } }, "42f05f33f0af4ab28d59593f86c0f5b9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it shows only the object of interest. A banana is suitable for physics simulation." } }, "434284c958ac4afa817b79ee5f8ffd81": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation." } }, "43b0a0c41f0543d09f9501ca1fb1a7b1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a banana plant/tree in a pot, not just the fruit (banana). The request is for images of the fruit itself, not the entire plant." } }, "43f0261d402a40f1a9fc9f4d97824c02": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fruit bowl, which falls under the allowed classes ('fruit bowl', 'fruit basket'). While it contains multiple objects (fruits, bowl, cloth), this arrangement is common and acceptable based on the provided guidelines (similar to a vase of flowers). The image quality is acceptable, though not perfect." } }, "44a7401803434ec1aed0d5407473a1e0": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl containing various fruits (bananas, avocados, apple), which falls under the allowed categories ('fruit bowl', 'fruit'). The image quality is good, and a fruit bowl is a plausible object for physics simulation in a game environment." } }, "45b8cef2122f42e791c1928b9b684a0b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts bananas arranged in an unnatural, weapon-like configuration with additional non-fruit elements attached. This does not represent a standard fruit object suitable for learning general physics properties of fruits, and it violates the 'single object' rule by combining fruit with other distinct parts." } }, "46bd12cea5be4a6d8f0768a98882b1ce": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "46f94085a24949379bf16408946e3f70": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character holding a small object, not a fruit as the main subject. We need images focusing solely on the fruit." } }, "4742dbd74d3f4ead9cbb6d08679c040c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (fruit basket, table runner, table surface) rather than cleanly depicting a single object from the fruit class." } }, "4777b5f5839e47c0864dd6d8181250c1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the fruit class. The image quality is adequate, and it represents a single object entity (a bunch) suitable for physics simulation." } }, "478a1bf5c9a94dae9dff338fd5dad148": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a jar and strawberries inside, plus a separate cluster of strawberries), not a single fruit object as requested. The jar itself is not part of the 'fruit' class." } }, "47f73a9405c344af90b5412bad9f4f12": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. Although it has a voxelated style, it is recognizable and the quality is good. It's suitable for the dataset." } }, "488a3bb858eb4929be657ed74f2d04c5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pineapple, which belongs to the fruit class. The image quality is good, and a pineapple is a suitable object for physics simulation." } }, "4892000e8e1b4479bba1a4cd1f5c93ea": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit basket, which is included in the list of acceptable objects ('fruit basket'). The quality is adequate, and it represents a common object suitable for physics simulation." } }, "4949c773bead49feb5a1bfb6fc893064": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is acceptable, and it represents an object suitable for physics simulation." } }, "49a9b8df2a364a42bbebbdec30e7fca5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (banana) belonging to the 'fruit' class. Although the color is unusual, the shape is recognizable, and the image quality is good. It is suitable for physics simulation." } }, "4a3a8e6db0f4436f9b62a101a8986c56": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "4a751044caa5436e86935a8d1a456b16": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and the object is suitable for physics simulation in a game context, even with the voxel art style." } }, "4b12b781d8b2455d84ed981be1e41744": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows small plants (possibly banana plants), not the fruit itself, which is the target class." } }, "4c4a553f3359470db4f78fca337b52de": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (appears to be a passion fruit), which belongs to the specified class. The quality is good, and it's suitable for physics simulation." } }, "4c6b198b154741edbf4b6d3c49864f38": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional object (the grey circular base) along with the bananas. We need images depicting only the target object cleanly." } }, "4c8029de2dda40159b45949539f6e15d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple fruits (possibly plums or similar) hanging from a branch, which falls under the 'fruit' category. The quality is acceptable and it represents a common way fruits are found in nature, suitable for physics simulation." } }, "4d4c8d85a09b476c8136f0c4cd24c45a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "4dc90206ca244f0e9f9637494757f8d1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two fruits, a cutting board, and a wooden surface) rather than cleanly depicting a single fruit object." } }, "4dd35f8f8c604aacb9500f78eef0fdfd": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (watermelon, cutting board, knife, countertop) instead of just a single fruit object." } }, "4eb072b2cdbd4277b63d80b98c9261ea": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and an apple is a suitable object for physics simulation in a game." } }, "4f0b718d6fd744ffb3adaf4b378a9421": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (appears to be a pear), which belongs to the specified class list. The quality is acceptable, and it's suitable for physics simulation." } }, "4f2597abb411451a90ba26963c8030e3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract structure made of spheres and rods, not any recognizable type of fruit." } }, "4f30d3e65c45487abfa438c0368ce602": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a fruit (possibly a fig or a stylized pear). The quality is acceptable for a low-poly style, and it is suitable for physics simulation as a fruit object." } }, "4fe9650493664a4aac49da9827be7392": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable fruit. It appears to be a stylized, blocky representation that is unsuitable for training realistic physics parameters for fruit." } }, "5070d5496cf2402ca8db881ed9c2d853": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a fruit bowl, which is an acceptable class, but it also prominently features a large pedestal/stand underneath it. This violates the requirement of depicting cleanly ONE SINGLE OBJECT or a naturally grouped object like flowers in a vase. The pedestal is a distinct, separate object." } }, "508d1ad49585475ab0515cd7fa7f60fe": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-poly model of a tree (possibly a palm tree), not an object from the 'fruit' class." } }, "50cffdc3ee6f43bb96fd39cc7efd1658": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl with fruit, which falls under the allowed classes ('fruit', 'fruit bowl', 'apple', 'banana', 'pear'). The low-poly style is acceptable, and the object is suitable for physics simulation." } }, "50f35f0ec8be493ab9f2d478abf89e8a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which is part of the 'fruit' class. The quality is acceptable for training purposes, and a banana is a plausible object for physics simulation in a game." } }, "5124019656c140b7924269dba379a808": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a folding knife or razor, which does not belong to the 'fruit' class." } }, "526d00c728a24311bfbec50bf54142ca": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single watermelon, which belongs to the fruit class. The quality is acceptable for training, and a watermelon is a suitable object for physics simulation." } }, "52a1c24e5f7d45c4b4cd5c2d8300140c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard display stand with pictures of fruit on it, not actual fruit. We need images of the fruit objects themselves." } }, "52b6d5de9f8847dba363a93761874c9e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows a portion (the top part) of a banana, not the whole fruit. It doesn't clearly depict the object." } }, "52db0f93a5344674931e3e34c67a1515": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object (strawberry) is too small in the image frame, making it difficult to discern details and potentially hindering its usefulness as high-quality training data." } }, "52eae9611fb44379a45c8fe8f50e7b2b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects: a bunch of bananas and a plate/board underneath. We need images depicting only a single object from the specified class." } }, "5380460ee97e413a9f169d33007a3174": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The image quality is good, and it represents a single object suitable for physics simulation." } }, "53847ea1cd0343d3be08b1174339b009": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (prickly pear), which belongs to the specified class. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "538a6379acbf493cb5b4ead395e17903": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, with potential rendering artifacts (unclear shadow, cut-out section). It does not provide a clean, high-quality representation of the object suitable for training." } }, "54635b0503eb42b2acc54229b221f42b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a can or container, not a fruit." } }, "548e1212a3e248dd9026ee5aef2820a3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making the object almost invisible and impossible to identify as belonging to the fruit class." } }, "54c76e1842294e4093387ea9dd56e461": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a distorted, abstract shape with a warped texture that includes bananas. It does not clearly depict a recognizable fruit suitable for training or physics simulation." } }, "572492669b514fd19d1e7a3d803145ad": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit basket, which is included in the list of acceptable objects ('fruit basket'). The image quality is good, and it represents a common way fruits are grouped and displayed. This object is suitable for physics simulation." } }, "5763b27fd1b04726b97cbcca71ed11a8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The quality is acceptable and it represents a common form of the fruit suitable for physics simulation." } }, "57673b1e1e3044fda4d562cffdc1c965": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is acceptable for training, and it's an object suitable for physics simulation." } }, "58b521aa0c114a11804196c2e8988c21": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (various fruits and vegetables), not a single object as required." } }, "5914ea701e4648e2bc0d5c265b7b4059": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable, and it's suitable for physics simulation." } }, "5a0ae2276ac845c9a93b240c076aae19": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single watermelon, which belongs to the 'fruit' class. The image quality is good, and the object is suitable for physics simulation." } }, "5a6c3a55c0df4b08bc4e1e7e4181e468": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "5adb698e7afa4054bce8faa29418bfa2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, it appears distorted, incomplete, and fragmented. It does not clearly depict the objects (melons) in a usable way for training." } }, "5ae2ec5da34f47c8b2105d2ac09d5c90": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a very low-polygon, abstract shape that does not clearly represent any specific fruit or the general class 'fruit'. Its stylization makes it difficult to identify reliably." } }, "5c63e2ee4cb849a29aa223a0a3725ac5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a plant leaf or feather, not a fruit. It does not belong to the requested 'fruit' class." } }, "5c857ed29ecf4236843e30ea4a2cde51": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single star fruit, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation training." } }, "5d08c08cef904400b50e3a7d300c4af2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (oranges, lemon wedges, cylindrical objects, base) rather than depicting cleanly one single object from the fruit class." } }, "5dd87a342bc64ffd96a4fd1dc48e89eb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training purposes." } }, "5e68fc39623b4773a53a6d084782a6df": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects, not a single object as required." } }, "5f11a4baa89342a3b91bbd0ee390ba01": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone one from the 'fruit' class." } }, "60d4d9b3a554467d8d5f5504e7e3e9e1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fruit, likely an apple or pear, which belongs to the requested class. Although stylized and low-poly, it is recognizable, clear, and represents a single object suitable for physics simulation (e.g., dropping)." } }, "611e8861e2e247c0b31c5dd5fc93e24c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "613fc896899349e4911ccce2f94e63ee": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty bowl. While 'fruit bowl' is listed as a related term, this image does not contain any fruit and therefore does not clearly depict the intended class." } }, "61b22e6495d64783abd8bc2265f635b1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a 'fruit bowl', which is an acceptable sub-category within the 'fruit' class. The image quality is adequate, and the object is suitable for physics simulation." } }, "6293781bab0d4b6ea6fff983309b92b6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract, stylized object composed of stacked shapes. It does not clearly depict a recognizable fruit from the provided list. The lack of color and realistic texture makes it unsuitable for training." } }, "62f91fb253f7413b929a2b67cdafde54": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The image quality is good, and it represents a single object entity (the bunch) suitable for physics simulation." } }, "6376baa9579e4e2b9328a41b4cc0ee3d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a 'fruit basket', which is an acceptable object within the 'fruit' class list. The quality is adequate and it represents a common object suitable for physics simulation in a game environment." } }, "63c7b826b3cd4d74a48e645e0d3e90fc": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a banana tree, not the banana fruit itself. The class is 'fruit', and we need images of the fruit, not the entire plant." } }, "63e760de39444aa4b36449eabce07290": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable fruit. It looks more like a scribble or a very low-detail drawing, making it unsuitable for training data." } }, "64c3d61ba7b549b5b7c72b37d7532b48": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a fruit bowl, which is included in the specified list of objects ('fruit bowl', 'fruit basket'). The image quality is acceptable, and a fruit bowl is a suitable object for physics simulation." } }, "64eb678ed9e64709871b7386c0f872e8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the 'fruit' class. The quality is good, and it is suitable for physics simulation." } }, "654373ea10f44ed0bdfce38c30ed1d35": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts stacked colored cubes, not any type of fruit." } }, "65c771ba0f18489bbe1c44fd039de643": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image quality is low, the texture appears somewhat blurry, and the lighting on the bottom is too bright, washing out details. It's also not immediately clear what specific fruit it is supposed to be, potentially resembling a pear or even a potato." } }, "6725fa757760455a812f4684474c150a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality. It does not clearly depict any fruit." } }, "67abe8435fe94482acfaf4b6eae3bf45": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple types of fruit arranged in an unnatural way with skewers/sticks, not representing a single, clean object or a typical fruit arrangement like a bowl or basket. This composite structure is not ideal for learning the physics of individual fruits." } }, "687d9677bd4042d4b2f6b5a7d627b3e7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts bananas in a bowl, which falls under the 'fruit bowl' and 'banana' categories within the broader 'fruit' class. The image quality is acceptable for training purposes." } }, "68bdaec560934db5acecd06817146a20": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including several types of fruit pieces and other non-fruit items (like chocolate and decorations), violating the requirement for a single object depiction." } }, "6918cdb22a284c18a68cc1bda011b3b9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it represents diversity (a ripe/bruised banana). It is suitable for physics simulation." } }, "6983319875f2476aac24de7566b138e6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too distorted and fragmented. It does not clearly depict any recognizable fruit or object from the specified class. The quality is too low for training purposes." } }, "69883bd31384456891bb96ad7cee6581": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a market stall structure containing fruit, not a single fruit object or a standard container like a fruit bowl/basket as specified in the class list. It contains multiple objects and the focus is not on the fruit itself." } }, "69ad2ce1101a479bbd166f5ca37f996b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a 'fruit bowl', which is an acceptable object within the 'fruit' class. The quality is adequate for training." } }, "6a7373118edf484c8ce6c8104cf8da9b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "6b01d76f958b4fb38eb4674ee72e4d88": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a pumpkin. While botanically a fruit, it is not included in the provided list of fruits for this class and is often considered a vegetable in culinary contexts. It might belong to a different category (e.g., 'vegetable' or 'gourd')." } }, "6b85ce0741944f069cb7bd6c06177ba2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (one whole peach and several cut pieces), violating the requirement for a single object per image." } }, "6cd716ecfa2941d5a8e30f3abb8cb5c9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very small, indistinct object that cannot be clearly identified as a fruit. It lacks detail and is too small to be useful." } }, "6cebf458de3c49ffab3bd78dca6a4c85": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image quality is poor. The bottom half of the pear is excessively bright and lacks detail, appearing almost self-illuminated, which makes it look unrealistic and low quality." } }, "6d99c6c1a8bc4b3e97cebbc49d62115d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is adequate for training, and it's a suitable object for physics simulation in a game." } }, "6d9ab27e71684e5c9d20dd0aee6c631c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a box of Pop-Tarts, which is a processed food product, not a fruit according to the provided class list." } }, "6e95a8cb47114f2285be08a70e8990b6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation purposes." } }, "6efbc52181554ee6b33b6e2fee802946": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized banana, which falls under the fruit category. The quality is good and it represents a single object suitable for physics simulation." } }, "6f3ad7ba286e4eea82ecef273190857a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a partially peeled banana, which belongs to the 'fruit' class. The quality is acceptable for training data and it's suitable for physics simulation." } }, "6fff96296d924b32b457e2598e708254": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fruit (likely a peach) which belongs to the requested class. It is a single object, the quality is good for a game asset, and fruits are objects commonly used in physics simulations within games." } }, "705046e0bada408fb3aae9b771337504": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts highly stylized, anthropomorphic characters resembling fruit and peas in a pod. It does not represent a realistic fruit object suitable for learning general physics parameters. Additionally, it contains multiple objects/characters and is not a clean depiction of a single fruit." } }, "7186ebfc24fc42c599f81713cd28d55e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a banana plant/tree, not the fruit itself. The requested class is 'fruit'." } }, "71d2ea7c02e34220842511612766adc8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The quality is acceptable and it only shows the object against a clean background. Bananas are suitable objects for physics simulation in a game." } }, "74400c6fc6ec4ae0b11e381de7de2c04": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which is a type of fruit. The quality is good, and it's suitable for physics simulation." } }, "74d0e58d73a644bfa8412ff9ec318d67": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (fruit bowl, table, tablecloth) instead of just a single object from the 'fruit' class list (like a fruit bowl)." } }, "756355d885594e0f87f8cc74e327579a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cart with an umbrella, not an object belonging to the 'fruit' class." } }, "7579a5b6399343a88dd75e59865e3198": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training data, even though it's stylized." } }, "75adb9ab48d748eeaeb3e09ca72bdd24": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including fruits (coconuts, watermelons, oranges) and non-fruit items (cans). We require images depicting only a single object from the specified class." } }, "76041258057f4bd2810eeb04cdc8c49f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts bottles, not any object belonging to the 'fruit' class. Additionally, the image is too bright and lacks clear detail." } }, "7765a2dcd41f439782b975eedc6bd519": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a plate of fruit, which falls under the 'fruit bowl'/'fruit' category. The quality is acceptable, and the object is relevant for physics simulation (e.g., dropping a plate of fruit)." } }, "7832db33cab6491eae156be33ba792f5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plant or tree, not a fruit, which is the required class." } }, "7862e9827a1c46f0b63da65e092b7005": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed (too bright), making the object almost completely invisible and impossible to identify. It is of very low quality." } }, "79d2efd45f6c4782a822e693e6d50585": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation training." } }, "7a0d2491b22141398f19c7f11a2f2edf": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, the texture resolution appears poor, and the shape/appearance of the banana (especially the stem and the bottom) is somewhat distorted or unrealistic for a typical banana model. This might not be suitable for high-quality physics simulation training." } }, "7b9cab5e984e496c81a78cddf5b3f8b9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a juice carton, which is packaging, not a fruit itself. It does not belong to the requested 'fruit' class." } }, "7ceb56913ca04412b5b8d67623a449e7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pomegranate, which is a type of fruit listed in the allowed classes. The image quality is good, and the object is suitable for physics simulation." } }, "7d766389b33c4a70985244c35b26fca2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The image quality is good, and the object is suitable for physics simulation." } }, "7db25a2b1d4b4f33be8a2bf2f7356181": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized Santa Claus figure made partially of strawberry elements and cream/frosting. It is not a clear representation of a single fruit object, but rather a composite decorative item." } }, "7e3b35368929485d89df5fe9071afd06": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The image quality is acceptable for training purposes, and the object is suitable for physics simulation." } }, "7e826cc096ea49279ea5db3bf7c58fc6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower (blossom), not a fruit, which is the requested object class." } }, "7f485fbde1b14204a7bff0b72fec2b4f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a collection of fruits (fruit bowl/platter), which falls under the specified class 'fruit' and its sub-categories. Although it contains multiple items, it represents a single conceptual object ('fruit bowl') similar to the 'vase of flowers' example, making it acceptable. The low-poly style is acceptable, and the image quality is good." } }, "7f57d76eb95d456ebaf5274a8c6e7c66": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple fruits (oranges, strawberries, blueberries) in a fruit bowl, which falls under the allowed classes ('fruit', 'fruit bowl', specific fruit types). The image quality is good, and the object (fruit bowl with fruit) is suitable for physics simulation." } }, "7ff74f3fc53e464c92e04c719f8bdd0e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The image quality is good, and the object is suitable for physics simulation." } }, "805f46f8914342db82d107ac19b4b653": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training, and it's a suitable object for physics simulation." } }, "81766a35ea874e12996f5976b5283ab7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, with blurry textures making it difficult to clearly identify the different types of fruit. Additionally, it depicts multiple items (a plate and various fruit pieces) rather than a single, clearly defined fruit object or a standard fruit bowl/basket, which is less ideal for learning specific physics parameters." } }, "81c1fe8557f74983b723383b34b8675c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark, making it difficult to clearly see the details of the fruit bowl and the fruits within it. This low quality makes it unsuitable for training data." } }, "823ca185916d48d0972f8694aceb3829": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex, abstract structure made of various colorful shapes. While some elements might vaguely resemble fruits (like a banana or orange), the overall object is not clearly identifiable as a fruit or a standard fruit arrangement (like a fruit bowl). It contains many other non-fruit elements and does not represent a single object from the specified class cleanly." } }, "82978d2bf11845f49c0d4dfebd78b7b7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pineapple, which is a type of fruit. The image quality is good, and it's suitable for use in physics simulations." } }, "845e106c589e4578bc51fe1c3094dfe3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the 'fruit' class. The image quality is good, and it is suitable for physics simulation." } }, "84a0b929f88f4538bd790c5fd0b898e2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cup or container with a floral pattern, not an object belonging to the 'fruit' class." } }, "850b0ae1514247aeb069eb1d63738ff0": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The image quality is good, and the object is isolated against a clean background. It is suitable for physics simulation." } }, "85695b82c7ba4b3497a663616cc3bf25": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plant (looks like a banana plant), not a fruit. The requested class is 'fruit'." } }, "86361fa497e84f13928b7e000e032615": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object is ambiguous. While it has some fruit-like elements (berry structures), its overall appearance strongly resembles a flower (like a Protea or Waratah) or an ornamental plant rather than a clearly identifiable fruit from the provided list. It is not clearly depicted as belonging to the 'fruit' class." } }, "87e3b074405847ec94c1e4ad6aac4dcc": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized, anthropomorphic fruit characters with limbs, not realistic depictions of fruit. It also contains two objects instead of one. This is not suitable for learning physics parameters for the general 'fruit' class." } }, "885fa3a9c60e4279ba7eb0d29c64ae3d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including items that are not fruits (e.g., mushroom, eggplant, chili pepper), violating the requirement for a single object from the specified class." } }, "8865c2ea3b4647f18a215d3c096f81c3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a fruit bowl, which is listed as an acceptable object within the 'fruit' class. The image quality is good and suitable for training purposes. While it contains multiple objects (fruits and a bowl), this is expected for a 'fruit bowl' and fits the common sense exception for composite objects." } }, "88afb31d1e5e4b31af2777e31ace429c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. While stylized and low-poly, it is recognizable and suitable for a video game asset, including potential physics simulation." } }, "89ab416f35cf40da952c634ac955b300": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is acceptable for a 3D render, and it's suitable for physics simulation purposes." } }, "89f8295add4d459c86fb714d30341875": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple strawberries and also a plate/packaging underneath, violating the requirement for a single, clean object depiction." } }, "8aca95daa6764757af71e027892caec6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, showing a distorted and fragmented 3D model. It does not clearly depict any recognizable fruit object suitable for training." } }, "8acb6f9fde2e4f2fa4b87fbdf589f0d2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized watermelon, which belongs to the fruit class. The quality is acceptable for a game asset, and it shows a single object suitable for physics simulation." } }, "8b521e0e9fc247a38b0e0cfbe142319d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl containing several fruits (pineapple, banana, melon slice), which falls under the allowed 'fruit bowl' category within the 'fruit' class. The image quality is sufficient and it represents an object suitable for physics simulation." } }, "8b7831b323234d70b8a553b67de90ed2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to show a banana with a significant texture discontinuity or cut about two-thirds of the way down, making it look unnatural and potentially representing a flawed 3D model or texture." } }, "8c0d285c1e6b4ba3b5ea777b563c4c80": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very low-detail, ambiguous shape that vaguely resembles a fruit like a banana or pear, but it does not clearly depict any specific fruit. The lack of detail and texture makes it unsuitable for learning realistic physics parameters." } }, "8c55ed62a9194e328d86f5ffe3bc547c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the 'fruit' class. The quality is acceptable for training purposes and it represents an object suitable for physics simulation." } }, "8d575568119c4d108cbc9e9560531690": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized, low-poly representation of a fruit, possibly a strawberry or a fantasy fruit. It is a single object, clearly rendered, and suitable for a video game context, including physics simulation." } }, "8d6355cf00f44d7b9bdd26330f486c01": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl containing grapes, which belongs to the specified 'fruit' class list (specifically 'fruit bowl' and 'grape'). The image quality is adequate, and it represents an object suitable for physics simulation." } }, "8d8b8ebdb8414aa6895dbf37ddba319d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (container of strawberries, strawberry plants, ground covering) rather than cleanly depicting a single object from the fruit class. We need images focused solely on the fruit or a container of fruit without significant background elements." } }, "8de5d8f3c31f45b997feea9067b69f45": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which is a type of fruit. The quality is acceptable, and while the banana is overripe, it is still recognizable and adds diversity to the dataset. It is suitable for physics simulation." } }, "8dece80994ab4e24bbce686cfb9100cc": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree, not a fruit or a collection of fruits as specified by the class list." } }, "8e194394fb864e2da73913b89e240a71": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "8eb28a763eb448ba9443380c6054119b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a fruit stand, a cushion, and several individual fruits), not just one single object from the 'fruit' class or an accepted collection like a fruit bowl/basket." } }, "8f591ee93e2f4690b896b14f2b2a5202": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The image quality is good, and it only shows the fruit against a clean background. A bunch of bananas is a suitable object for physics simulation." } }, "8f653bc14bb14f75a20e9a12a7c0b879": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fruit, which falls under the requested class. It is a single object, well-lit, and clear. The low-poly style is acceptable for dataset diversity and suitable for physics simulation." } }, "8ffce3a498da47c0930f41fa58371e54": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "90493b11ff7147509aa641202551186e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or its details. It is not suitable for training data due to low quality." } }, "90e846bc8ba84c489aabc5b5c51040a3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the 'fruit' class. The image quality is good, and it's suitable for physics simulation." } }, "90f793145e2d4b9293cdc26d8324fe5b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "91555e2ae7904ffbbd52a1a7dd15a40e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a 'fruit bowl', which is an acceptable class. The low-poly style is acceptable, and the image quality is good. It represents an object suitable for physics simulation." } }, "917ef5baa4874f3ea0914bd7486fc2e2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows a small, cropped part of the banana (the tip), not the whole fruit, making it unsuitable for representing the object." } }, "923ea2b1927d4c24ab88860ee416ce6c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any recognizable fruit. It appears to be a stylized flame or light effect, not an object belonging to the 'fruit' class." } }, "9352d565df404f0cbc25a7f5e28f39aa": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The quality is adequate, and it represents a single object (a bunch) suitable for physics simulation." } }, "94a7782580604ae5a81c001c12dcd769": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a compartmentalized box or tray, not any type of fruit or related object like a fruit bowl or basket." } }, "94d1fe920ecd4069b5962e5ce68c5f49": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation in a game." } }, "952b5aa4fc4e4ea49602832d02004152": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single, stylized fruit (likely an apple or citrus). While low-polygon, the quality is good, and it represents a type of asset commonly used in games, suitable for physics simulation." } }, "955d7663348d48ea9defca64e8626064": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it is suitable for physics simulation training." } }, "95782f462b0641cbb0cc24e0a9cdcd47": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (resembling an orange or tangerine) which belongs to the specified class. The quality is good, and it's suitable for physics simulation training." } }, "96102c9e1160466f9ceee0bb54c1fb51": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit." } }, "964bc8cb4cda4c44955493ab7af25e44": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty basket. While 'fruit basket' is listed in the class description, this image lacks the fruit component, making it just a basket, not representative of the 'fruit' class." } }, "96988e437fe841059ccf1ed150cca65f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract geometric shape, not any recognizable type of fruit." } }, "970bb25d5b1e48e39353ee49bd16cebb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (an apple, a plum, a banana, and a plate) instead of depicting cleanly ONE SINGLE OBJECT from the fruit class." } }, "9729d01c38534df6955c310376a71096": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as an apple, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "97427c7b7fae4d709b843c86d39a9546": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (an eggplant-like object, a lemon/pear-like object, and a market stall in the background), not a single fruit object as required." } }, "9838d845604f4d55bfe327433009962f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any fruit. The objects appear to be chocolate pieces or bricks, which are not part of the 'fruit' class." } }, "983aecd197b742b3a61e7da0565021a8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object, an orange (which belongs to the fruit class), cut in half. Although the peel color is unusual (blue), the internal structure is recognizable, and the instructions allow for unusual textures if the object is still identifiable. The image quality is good, and it's suitable for physics simulation." } }, "985db5dbec184aa0ade8c87717316e40": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and does not clearly represent any recognizable real-world fruit from the provided list. Its shape and color are too abstract for general 'fruit' class training." } }, "9956de47e327480cb902877676cd63f7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "9b1694d3bab34687b0b269fe0b776c92": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (half a fruit) belonging to the 'fruit' class. The quality is good, and it is suitable for physics simulation purposes." } }, "9b42ef1096da4103a12fb80cad01ac15": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "9c642d742fcc4cdfb9724cd45f94e0e3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble any type of fruit. It appears to be an abstract geometric shape or pattern." } }, "9d123e87fc7c44439934a0b0165c680c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the 'fruit' class. The quality is acceptable for training, and the object is suitable for physics simulation." } }, "9d9e45a57353493385a609ea7278816a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The image quality is good, and it shows the object cleanly against a neutral background. A banana is suitable for physics simulation." } }, "9f43e7805fd64ecfa25949f703406932": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a utility knife or cutter shaped like a banana, not an actual fruit. The grey tip looks like a blade." } }, "a0d6db58a3364cd783ddaf27cf83a86b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the bananas, which belong to the fruit class, but it also prominently features the surface they are resting on. We need images depicting only the object itself, without additional elements like plates or surfaces." } }, "a12a36bc58004b8fa10689fa3ca62594": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an apple core (partially eaten apple), not a whole fruit. While technically fruit, it's not representative of the typical object state needed for learning general physics parameters of an apple or fruit." } }, "a1b7c76f69a94b6b809646208aa40d85": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (watermelon slice, plate, and another surface) instead of just a single fruit object." } }, "a32a74b2b306478dbece5a79c5e5cf23": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "a371c26b79d444d988dfa59df78d8017": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation purposes." } }, "a422d22e0ff64b3f87bd8c6fea8cd3fe": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single watermelon, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation (e.g., dropping, rolling)." } }, "a4b48c52de524a049099f8acb1487752": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily shows a purple container or tray. While it might contain fruit, the fruit itself is not clearly visible or identifiable. The object depicted is the container, not the fruit, making it inappropriate for the 'fruit' class." } }, "a548ec65b43844fb90f570ba132a0391": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit basket, which is included in the allowed list of objects for the 'fruit' class. The image quality is good, and it shows a single object suitable for physics simulation." } }, "a54a75cf96814759adee2bc998720d7d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoon character, not a fruit." } }, "a565d7d298c9443398c7468800641e7a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a carton, likely containing coconut water or juice, not a fruit itself. It depicts packaging, which is not part of the specified 'fruit' class." } }, "a6193c4a6e4547d19060b8e120dcc377": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is acceptable for game development and physics simulation." } }, "a6bff8037fe044a5bffc20bacf3e5afb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects (an apple and a banana), while the requirement is to have only one single object per image." } }, "a715630c566b40b280a7651de5321d3d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "a72d8d894d314232a67504a56e3864d0": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several different fruits, a cutting board, and a surface), not just a single fruit object as required." } }, "a79686c60df34d46aedf315bdf586c5a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract stack of various items, including fruits and possibly non-fruit items (like mushrooms). It does not represent a single, clearly identifiable fruit object or a common arrangement like a fruit bowl/basket, making it unsuitable for training on the 'fruit' class, especially for physics simulation purposes where individual object properties are important." } }, "a7a3d2a6837f465a9fcdbfeb730ec99e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a banana plant/tree, not the banana fruit itself, which is the requested class." } }, "a7c4a7a70c824bad8a6790ec3e672408": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single dragon fruit, which belongs to the 'fruit' class. The quality is acceptable for training purposes." } }, "a8397fa398364cc884e896ae1d50b82d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the fruit object but also includes the surface/paper it is resting on, which is an additional object. We need images depicting only the fruit." } }, "a8404dde81464052ab14206a172f10c7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized fruit (likely an apple), which belongs to the requested class. It is a single object, well-lit, and clear. While stylized, it's recognizable and suitable for a video game context, potentially involving physics simulation." } }, "a942be6abe1f4626863d4883d07d3179": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image doesn't clearly depict the object class ('fruit'). The object is fragmented, distorted, and unrecognizable." } }, "a949852edb624114b5118bcb1527790f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (pineapple, other items, plate) rather than a single, clean fruit object as requested. It also includes non-fruit items (plate)." } }, "aa3ff203214d40dca682e6e30fae1230": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple fruit objects scattered on a surface, along with other elements (leaves/fragments). We require images depicting only a single object from the specified class." } }, "ab8ff5d8326149a8948b583e505e6eb0": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. Although stylized and low-polygon, it is recognizable and the quality is sufficient for training. Bananas are suitable objects for physics simulation." } }, "ac1dcbeb1d9441c9b9026fa13e6e0136": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bowl of strawberries, which falls under the 'fruit bowl' and 'strawberry' categories within the 'fruit' class. The image quality is acceptable, and a bowl of fruit is a reasonable object for physics simulation in a game environment." } }, "acb5ac53c42c4039b6175e717a10a40a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation training." } }, "ad4eadbdef9a40ddb12cc0cd88528f2b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any recognizable object, let alone a fruit. It appears to be a distorted or corrupted 3D model render." } }, "ada7c35a1a5742f1b4c528eb3daee35b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low due to rendering artifacts or transparency issues on the object, making it look unnatural." } }, "ade2b59ff37c44059433414f39c94abe": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which is a type of fruit. The quality is acceptable for training data, and a banana is an object that could reasonably be used in physics simulations within a game." } }, "ae04942bf9264acfb40db2772602c773": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple fruits (banana, apples, oranges) on a plate, which falls under the 'fruit' class and is analogous to a 'fruit bowl', an allowed sub-class. The image quality is adequate, and the object is suitable for physics simulation." } }, "ae1b6d6e73754c0482749930d4cbc499": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. Although it is overripe, it is still recognizable and adds diversity to the dataset. The image quality is adequate for training." } }, "ae274daf47e341a6bfddbb1b47e73f58": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "aeeddc5692234bb793460be149e611db": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex fruit stand with multiple crates and various types of fruit, not a single fruit object, fruit bowl, or fruit basket as required. It contains too many objects and the overall structure is not suitable for simulating as a single physical entity." } }, "b04b61ce982140f3bff549b4bc6e8115": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including shapes that are not clearly identifiable as fruit (cylinders, bone shape) and a large base structure. We need images depicting cleanly ONE SINGLE OBJECT from the fruit class." } }, "b0707bf71f1a4fa196384bac5086d0be": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit." } }, "b14c650484f5429cae6cc7cb91075c62": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single dragon fruit, which belongs to the fruit class. The quality is acceptable for training purposes." } }, "b16d68d82fa7451ba92b15854f8fb555": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a shoe, which does not belong to the 'fruit' class." } }, "b1a119dde1714a97892614a14e928f86": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (fruits, plate, table). While a collection of fruits might be acceptable under 'fruit bowl' or similar, the prominent table is an additional object not belonging to the 'fruit' class, violating the 'one single object' requirement." } }, "b23047086bb54eb7a0b7ce5d61cadec2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (strawberry) belonging to the 'fruit' class. The quality is acceptable, and it represents an object suitable for physics simulation in a game." } }, "b282c8df0b1e4b6da97880b74a093305": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an untextured grey object that does not resemble any fruit listed in the class description. It lacks the necessary visual details (color, texture, recognizable shape) to be identified as fruit." } }, "b2c8b68bce9f487a8df2a015d0da87f4": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "b3579e0323a14fae8161d4d754f0dfad": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a pedestal in addition to the fruit bowl. We require images depicting only the object belonging to the specified class." } }, "b3cd5dcc5a8b4e0b8043776050102b93": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, blurry, and fragmented. It depicts multiple objects (keyboard, plate with food, fabric) rather than a single, clear fruit object. The potential fruit (red slices) is not clearly identifiable and is part of a larger, poorly rendered scene." } }, "b3cdf54936bd481184560a00f4e47bf3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a cluster of fruit (likely berries or cherries) in a low-poly style. It belongs to the 'fruit' class, is of good quality, and represents a plausible object for physics simulation in a game." } }, "b3df6e6788d840af902443eafae2e11f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "b4065dd5ce9d46be90db3e1f3e4b9cc1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "b44c3736b3b345b2a31e38c46b0b3a1e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional, unidentified flat object attached to the side of the bananas, which violates the requirement of depicting only a single object from the class." } }, "b46433e262994bfdb9f6515b310fe825": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "b51a0d71217c400eb147d966249320ba": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a market stall which contains multiple objects (stall structure, awning, sacks, bowls) in addition to some fruit-like items. It does not show a single fruit or a fruit bowl/basket cleanly as the primary subject." } }, "b62dfc66750a49a99119a0b821ab7aa0": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single green apple, which belongs to the fruit class. The quality is adequate for training, and an apple is a suitable object for physics simulation in a game." } }, "b6d1b506c687424187c87ab913a210ba": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts an apple, which belongs to the fruit class. Although stylized and showing a slice, it's recognizable and the quality is acceptable for a stylized 3D asset. It represents a single object concept suitable for physics simulation." } }, "b7c8bd2cf3a44192b537028a165cc3ed": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a long, green, blocky object that does not clearly resemble any fruit from the specified list. It looks more like a stem or stalk in a voxel art style." } }, "b8d3745c818b4e3c96671d9418996a4a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (likely a pear or avocado) which belongs to the requested class. The quality is sufficient, and it represents an object suitable for physics simulation." } }, "b8de8fcb893141e09c2e0be9373ac4ac": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, stylized object that does not clearly represent any recognizable fruit or fruit-related item from the specified list." } }, "b9c654a534e1436ebabb541042bf5fe8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl filled with oranges, which falls under the allowed classes ('fruit bowl', 'orange', 'fruit'). The image quality is good, and this object could plausibly be used in physics simulations." } }, "b9c794147d164ac89316ce93b8abeef6": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of cake topped with fruit (likely cherries or berries). The primary object is the cake, not the fruit itself, and it contains multiple components." } }, "ba4903793bb14dd292014c6735755190": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single dragon fruit, which belongs to the fruit class. The quality is acceptable, and it's a suitable object for physics simulation." } }, "baec4e6262c14527b387b381265e58eb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is distorted and does not clearly depict any recognizable fruit object. It appears to be a fragmented scene, possibly from a store aisle, rather than a single, clean fruit item." } }, "bc31628d29f843a09c89dcaaed59136f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation training." } }, "bc56d1e241dc4fe68202154c0a10a211": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized, low-polygon fruit, which fits within the 'fruit' class, especially considering the need for diversity in game assets. The image quality is adequate, and it shows a single object suitable for physics simulation." } }, "bc639c5346134cd880ddaacd3d9c7d77": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image includes a large section of the stone surface the fruit bowl is resting on, which is not part of the object itself and violates the 'cleanly ONE SINGLE OBJECT' requirement." } }, "bcb912c64c7b40d284044e58f5354ca7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what appear to be chicken wings, not any type of fruit." } }, "bcee47f9119f46a1a758064690f21941": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a silhouette and lacks texture, color, and detail, making it low quality and unsuitable for training data, especially for learning physical properties." } }, "bd363a8274954a619811f5a0fb730272": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as an apple, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "bd5596d3b4ff49d79d284fe770cd6728": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The 3D model appears incomplete or cut off at the bottom, making it unsuitable for accurate physics simulation." } }, "bea608ee370f4bbdb4df0a6c88b03c37": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a strawberry plant in a basket, which falls under the 'fruit' (strawberry) and 'fruit basket' categories. The quality is acceptable for a stylized asset and it represents an object that could be used in physics simulations (plant swaying, fruit interaction)." } }, "beb3bf85b53c489b990f75a28499b667": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a banana plant/tree, not the banana fruit itself. The requested class is 'fruit'." } }, "bf366c0a649e4a0c8c12d697d5622748": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a container of strawberries, which falls under the 'fruit' and 'strawberry' classes. While it contains multiple strawberries and a container, this is analogous to a 'fruit basket' or 'fruit bowl' which are explicitly listed as acceptable concepts. The image quality is adequate, and the object is suitable for physics simulation (e.g., dropping the container)." } }, "bf76ef97ff844d5ca9c0de2e7985544e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which is a type of fruit. The low-poly style is acceptable for diversity, and the object is suitable for physics simulation." } }, "c09d0a4be605463e98ac6bcf99818fa8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, making it difficult to discern the details of the object. While it vaguely resembles a peeled banana, the quality and clarity are too low for training purposes." } }, "c0a183ee0c5d4d88ae41f82c6026ba86": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl, which is one of the specified classes. The quality is acceptable, and it's a common object that could be used in physics simulations within a game." } }, "c0cb1be0dfcd430ab6b8944b51c74e48": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a plastic crate, not a fruit or a fruit container like a bowl or basket, which are the target classes." } }, "c173e5e550544f83808081bb80815d0e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains significant background elements (floor, cabinets) in addition to the target object (watermelon), violating the requirement for cleanly depicting only ONE SINGLE OBJECT." } }, "c26b74fff40d45e4ae6faa37e987d7e5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any object belonging to the 'fruit' class. It looks more like a patch of dirt or debris." } }, "c293dcbfff4740cebe79d939437fd04a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation purposes." } }, "c30b276e2e174109b8e159512f3bc8da": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern the details of the objects. This is considered low quality." } }, "c35e341535684eb9b6a7ad6ebdcda73b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts strawberry plants, not individual strawberries or a collection of fruits like a fruit bowl/basket. While it contains fruit, the primary object is the plant itself, which is not the focus of the 'fruit' class as defined (individual fruits or containers)." } }, "c36d736d644e4a949d1301fafdb65249": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable, and it's suitable for physics simulation." } }, "c384f15c43ca48c29ba8de8b13229759": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two pears, violating the requirement to depict only ONE SINGLE OBJECT." } }, "c43cb4d55fde4dea9c51e79428c35c69": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it impossible to clearly identify the object or determine if it belongs to the fruit class." } }, "c47478e286564aa790328e8b4baea5ce": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit." } }, "c4c6d477919c4c69b00b662f62bf39e2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl, which is included in the list of acceptable objects for the 'fruit' class. The image quality is good and it shows a single object." } }, "c52d6e9d725f4791ad491cd8f6d5d739": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any recognizable fruit. The object is extremely thin and distorted, making it impossible to identify." } }, "c5e3db928b984f7586d6acad70976596": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cup with a banana logo, not an actual fruit object belonging to the specified class." } }, "c6f67e740d3242ef97f4e7a8d338de2c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable, and it represents a type of object that could be used in physics simulations within a game." } }, "c790d0afd4e24f08981f7e82cf871b99": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an empty wooden crate, not any object belonging to the 'fruit' class (like apple, banana, fruit bowl, fruit basket, etc.)." } }, "c796e2e7cc574d5f986c93dcb4f278f1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily distorted and fragmented, making it impossible to recognize as any specific fruit or object from the requested class. The quality is too low for use." } }, "c7bf17a5c1f54924a02a1ef1b7bd123b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training data, and it's suitable for physics simulation." } }, "c7db97126ff74a88b288329534b106cc": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is highly abstract and voxelated, making it difficult to clearly identify as any specific fruit or even fruit in general. The lack of color and realistic texture makes it unsuitable for learning realistic physics parameters." } }, "c7fd163741614859ba02f302ce0bce32": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a banana peel, which is directly related to the 'banana' class within the 'fruit' category. The image quality is good, and it shows a single object suitable for physics simulation (e.g., dropping, slipping)." } }, "c81d1ae0ca664e8ba643432e9695e232": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a market stall containing multiple types of produce (fruits and vegetables), not a single fruit object or a fruit bowl/basket as requested. The main object is the stall itself." } }, "c8b47452e3bb40acaa0bfaca3c9b4083": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a fruit bowl, which is acceptable, but it also includes a large stand underneath it. We need images depicting only the object itself." } }, "c8e80ca14f1c4d3eb1195de37deccb07": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The object in the image is highly stylized and geometric, resembling a gem or crystal rather than any recognizable fruit from the provided list." } }, "c8f59cd0563a4b15a148fb7f1eb5f291": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, blurry, and fragmented. It shows bananas but also includes parts of other objects and background elements, failing the requirement for a clean depiction of a single object or a standard grouping like a bunch." } }, "ca517a7caf134c9a804469d6adee627f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality. It does not clearly depict any object from the fruit class." } }, "ca9d03af291b45d0b2a77e739c713754": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single orange, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation (e.g., dropping, rolling)." } }, "cab161d3a7894c30a9f7c1ff137d22e2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional object (a board with colored dots) along with the banana. We require images depicting only the target object." } }, "cadef64df1df497e85f401561b64975c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The image quality is good, and it is suitable for physics simulation." } }, "cb8d98ee49274d4697406d327492b87a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The voxel style is acceptable for diversity, and the image quality is good. A bunch of bananas is a suitable object for physics simulation." } }, "cbdf758f21924c168c1c3da1afed9754": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts half an orange, which belongs to the 'fruit' class. The quality is good, and it shows a single object suitable for physics simulation." } }, "cc6e0d7591514f14b9e67dd459f31d1c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a green apple, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "ccce35bd77c3495f95baed929d531343": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct types of fruit (starfruit, kiwano, dragon fruit) stacked together, violating the requirement for a single object depiction. While fruit bowls/baskets are acceptable, this is an artificial stack of individual fruits." } }, "cd51597956bb4ece8bb3dd02a5abe840": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the 'fruit' class. The image quality is good, and it's suitable for use in physics simulations." } }, "cda55553163c469ea47fc666ef8f6f30": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a pear, which belongs to the fruit class. The image quality is good, and the object is suitable for physics simulation." } }, "cda9d8983e4e44bfa9aa176a079d676d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training, and a banana is a plausible object for physics simulation in a game." } }, "cea016cbfb8f490593d737ede5fec8b1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "cefa7285c9654559969cebe5db8bff6d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low, with blurry textures and jagged edges. Parts of the object appear cut off or incomplete, making it unsuitable for high-quality training data." } }, "cf0fc54bc6b2404698bfb995fc887cff": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bunch of bananas, which belongs to the fruit class, but it also includes a significant portion of the surface (like a countertop) they are resting on. This violates the requirement of depicting cleanly ONE SINGLE OBJECT, as the surface is an extraneous element attached to the fruit model." } }, "cfd0a5186de3408cbb6fbde0cd6144ce": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "d115e527ee3a412892fd34cccd5af7f2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation training." } }, "d11e358b91764426b3cfb0e90f33c7da": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and appears to be made of wood or chocolate, not resembling a realistic fruit. This makes it unsuitable for learning typical fruit physics properties." } }, "d241f8b58a304f788fbddec1c314bc8c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts two fruits, likely some type of berry, which belongs to the 'fruit' class. The image quality is good, and the objects are suitable for physics simulation." } }, "d2a33405d2fe447fb1ebb5d82a71acb9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too low, it is blurry and lacks detail, making it difficult to clearly identify as a specific fruit. It does not meet the requirement for high-quality training data." } }, "d2d8e5f696bc421181a91b21c8b58a87": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building, not an object belonging to the 'fruit' class." } }, "d33baee44dbd4b98bcac423cabc4c31e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable, and it represents an object suitable for physics simulation in a game." } }, "d35b5a6c707345c7a66c81c40087c43d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "d3be8fed96eb48be88b47bbe8d2951e1": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a large collection of various fruits and possibly vegetables) arranged in a grid, not a single object as required." } }, "d3e905f49e9946768cf316f8a634ce17": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional object (the surface the banana is resting on) besides the main object (banana). We need images depicting only the single object of interest." } }, "d4285b671d8d4d008f71e100954dc5b8": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a fruit bowl, which is appropriate, but it also includes a pedestal, which is an additional object not belonging to the 'fruit' class. We need images depicting only the target object." } }, "d431960780804c13ae6e287199524065": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including non-fruit items (what appears to be a whole chicken and garlic) alongside the fruits. We need images depicting only objects from the specified class list." } }, "d48a903d948345e9904fba6e19345f85": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is low quality, blurry, and does not clearly depict any recognizable fruit. It looks more like an abstract shape or perhaps a stylized lamp." } }, "d7c35c091223445b9fb38ca5aa89629c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and low-polygon to be clearly identifiable as any specific fruit or even as a generic fruit piece. It lacks sufficient detail for the intended purpose." } }, "d85078aa7cc64e439e4ce6a775af7e0f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it impossible to identify the object or determine if it belongs to the 'fruit' class. The object is barely visible against the white background." } }, "d91caa4e142b43b5a940abfa4d38bb14": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a large, complex structure (like a market stall or display) made of many individual fruits, vegetables, and other items, not a single fruit object or a simple fruit bowl/basket as required." } }, "d953f75c23764b2b945661a1735e774b": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized character or creature, not an object belonging to the fruit class." } }, "dacce3ead18d429a859c59c0d0f7a92f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "dbb37e2dee554cc3bbc8647faa7a55e2": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low; the object appears blurry and lacks sharp details, making it less suitable for high-quality training data." } }, "dc6a18ebda324162a7eff88fc0cb924d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The object is ambiguous and does not clearly depict a recognizable fruit from the provided list. It looks somewhat like a stylized pear or banana, but also resembles a bottle or lamp, making it unsuitable for training." } }, "dcb4f2a93635420084d3e351768759ab": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an additional object (the wooden board) besides the main object (dragon fruit). We need images of the fruit isolated against a neutral background." } }, "dd6a424807614544835c8cc4529d6f0d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is adequate for training purposes, and it represents an object that could be used in physics simulations within a game." } }, "dd84cdb121754138a863d29d4feb5248": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit object (possibly a pear or similar fruit) against a clean background. The quality is adequate, and it represents an object suitable for physics simulation." } }, "dda3a1f707a94c52bed79578e120937c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation." } }, "df487287ffd5496b91b33f52857cbe9f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The image quality is adequate, and it shows only the object against a clean background. Bananas are suitable objects for physics simulation in a game." } }, "df99c4f106bd4176ad467848994b7b8c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts pears in a fruit basket. Both 'pear' and 'fruit basket' are listed under the target class 'fruit'. The image quality is good and suitable for training." } }, "dfcd54c92f6b43adb6c72fd7fb9f0c0d": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct fruit objects (apples, bananas, pears) laid out separately, not a single object as required." } }, "e00fbaa4034e48859bec55fb429fa390": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it very difficult to clearly identify the fruit objects. The quality is too low for training data." } }, "e0998438e00d442f833888522bf289bd": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single grapefruit, which belongs to the fruit class. The image quality is good, and the object is suitable for physics simulation. The sticker is acceptable as it's common on real fruit." } }, "e0c2951ac0ca47b8978b2a6eca426c3f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "e144d17029244b2a9a6abeadd25991ee": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a banana with robotic limbs attached, not a standard fruit. This composite object is not suitable for learning the typical physics parameters of a banana or fruit in general." } }, "e43882cbcb684e33bd8f09293b8e00b3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a 'fruit bowl' with various fruits, which falls under the allowed classes. The image quality is good, and the objects are suitable for physics simulation." } }, "e4f975e363c1491f9a4c06df15c4c39a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two stacked cups and a separate lid/label element), not a single object as requested. It depicts a packaged food item rather than a simple fruit or fruit bowl." } }, "e51a79f35d1a4d4ba33aa5a81cec5935": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains the primary object (banana) but also includes a distinct surface (wooden texture) underneath it, violating the requirement for depicting only ONE SINGLE OBJECT cleanly." } }, "e56ba8d694294fc4bd5a753d61b4f9aa": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single apple, which belongs to the fruit class. The quality is good, and the object is suitable for physics simulation in a game context, despite its stylized, low-poly appearance." } }, "e5c50afa83604537babdec3198322fd7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "e5ca16ab58af4c41a5536e973592d61c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sweetgum ball, which is a dry seed pod. While technically a fruit botanically, it does not fit the common understanding or the examples provided for the 'fruit' class (which are mostly edible, fleshy fruits)." } }, "e66e65af490642d9956a83d330320c01": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single strawberry, which belongs to the fruit class. The quality is good, and it is suitable for physics simulation." } }, "e69e134aac6149a3afe9068026d1bd72": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single dragon fruit, which belongs to the 'fruit' class. The quality is acceptable for training, and it represents an object suitable for physics simulation." } }, "e7822dcde0c448289e62daeb6075d680": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fruit tart, which includes a pastry base along with the fruit. This is a composite object and not purely fruit or a collection of fruits like a fruit bowl/basket. The request is for images primarily depicting fruit objects." } }, "e946cd4a578d40c9b8fa72fe93c51b60": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts two citrus fruits (likely grapefruits or pomelos) attached to a stem, which falls under the 'fruit' and 'citrus' categories. The quality is good, and while there are two fruits, they are naturally connected as a single unit, which is acceptable for this class and relevant for physics simulation (e.g., how they might hang or fall together)." } }, "ea5beba3e10d47f99bc81e5a0af00e16": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized banana, which is part of the 'fruit' class. The image quality is good, and it represents a single object suitable for physics simulation." } }, "eadc9424f7ed46d698dba6144ee34325": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a dessert in a glass with a spoon, garnished with a fruit. It does not depict a single fruit object cleanly, but rather a composite food item." } }, "eaeb9e3707714c4ebd2512549d7224d5": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a highly stylized, low-polygon object with an unnatural blue color. It does not clearly resemble any recognizable fruit from the provided list, making it difficult to classify definitively as 'fruit' for the purpose of learning realistic physics parameters." } }, "eb4c9396126c4686873a04e33956d55c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is acceptable for training purposes, and it represents an object suitable for physics simulation." } }, "ec6d6bc9aa4b4c9dbab6641596d46556": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct objects (a large fruit, a bowl, and other fruits within the bowl) rather than focusing on a single object. Additionally, the models are very low-poly and abstract, lacking sufficient detail and realism for high-quality training data." } }, "ece5889ef94f4411998063bd0aa9de34": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple distinct fruit objects (a banana and two round fruits), violating the requirement for images depicting only ONE SINGLE OBJECT." } }, "ed0537c2201d4ad7b8ddb8368d844174": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "ed061d28c5e744dcaed0a38ef92fcacf": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a banana peel, which is directly related to the 'banana' class. The quality is acceptable, and it's a single object suitable for physics simulation (e.g., slipping hazard in a game)." } }, "ed1f4008a11f42ab972b2a7138168548": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bunch of bananas, which belongs to the 'fruit' class. The image quality is good, and it represents a common configuration for bananas. It is suitable for physics simulation." } }, "ed3479f72218405a9b54bbc52dc77bc9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single citrus fruit (like an orange or tangerine) against a clean background. The quality is good, and it fits within the requested 'fruit' class. It is suitable for physics simulation." } }, "ed9502b8951f44369dc23c73c6894518": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (a whole watermelon and a half watermelon), violating the requirement for cleanly depicting ONE SINGLE OBJECT." } }, "ef8633f392ac4aeb99998ab321dec7d3": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a whole plant (possibly a banana plant) rather than just the fruit itself. The request is for images of fruit objects, not the plants they grow on." } }, "ef9c7c894f26450d9f7a33eba715c96f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "efa9dbd09d3d43a3b11818a436b42854": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains an avocado, which belongs to the fruit class, but it also includes a wooden stand/board, violating the requirement for only ONE SINGLE OBJECT." } }, "efe0becd8419449aafc7505241d0bd59": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image only shows a partial view of the banana, not the entire object, making it less useful for training." } }, "effc348522c84ea883b44b4b06e6ee84": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily depicts a cake, not a fruit. Although there are strawberries (which are fruit) decorating the cake, the main object does not belong to the requested 'fruit' class, and it's not a single object representation of a fruit." } }, "f00c59365ba74273a305618852da792f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single dragon fruit, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "f120452f84bf4e979139b106bf9f096c": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (half a watermelon) belonging to the 'fruit' class. The quality is acceptable, and it's suitable for physics simulation purposes." } }, "f145e8e08ec54ba2a0a62c21e49cc70e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (bananas, paper/leaf, larger leaf/surface) rather than cleanly depicting just the fruit (bananas)." } }, "f164fef5e78d49bc91f5180ce68c7629": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a strawberry plant/bush with multiple strawberries, leaves, flowers, and a base of grass/earth, not a single fruit object as requested for the 'fruit' class." } }, "f18ad30747b54028a71b8431e6714a4a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (likely a lemon or guava) which belongs to the specified class. The quality is acceptable for training data, and the object is suitable for physics simulation." } }, "f216bec46c3d4d54abd73455bae47ebb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a type of fruit, possibly a melon or pear, against a clean background. The quality is good, and it's suitable for physics simulation." } }, "f25e5865ff8746879c61c4b8158259f9": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a recognizable fruit. The shape is ambiguous and looks more like a bottle or vase than any specific fruit like a banana." } }, "f2f3e5593ad247b1a203a87b2df26311": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (several fruits and a mushroom), not a single object as required. Additionally, one object is a composite of a fruit and a mushroom, which is not representative of the 'fruit' class." } }, "f30bb81bc8d34db78d8da225b3cb847f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single fruit (appears to be an Asian pear) which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation training." } }, "f351f78796074b36a64d27552db5a462": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation." } }, "f378af9cc4034196aed8fc4e6a369a19": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, the object is extremely small and pixelated, making it impossible to clearly identify as belonging to the 'fruit' class. It is too ambiguous." } }, "f39360ca9e264a96b45cce0a18c963d7": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the 'fruit' class. The quality is good, and it's suitable for physics simulation training." } }, "f3a172605d9345b384ed9e32a469ca69": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-polygon, abstract object with unrealistic colors (yellow, green, purple) that does not clearly resemble any specific fruit or even the general concept of 'fruit'." } }, "f3faf497d2594b9e8ca61b7b016428bb": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a fruit. It is unusable." } }, "f4f50e818f644aa3941b8f8134b236df": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "f6dd4c962ee345c9b03f00f1c045eb1e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple juice cartons with pictures of fruit on them, not actual fruits. We need images of the fruits themselves for physics simulation." } }, "f71dd6c8d9a84ff6ab723920b6acfc8e": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts only half a banana, not the whole fruit. The object appears incomplete or cut." } }, "f760a03831db4a409ec0c60bad9a34aa": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a single fruit object. The banana is shown inside packaging and placed on a distorted surface, which makes it unsuitable for training. The overall image quality and composition are poor." } }, "f7b7dc0b8e2c490ca83efc1a651a9334": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts an apple, which belongs to the fruit class. The quality is good, and it shows only the object (cut in half) against a clean background. This is suitable for physics simulation." } }, "f7d22e5427174a9bb92d1e43e95acf0a": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The image quality is good, and the object is suitable for physics simulation." } }, "f830aa10c0274c3994f47ca0ed990681": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too low. It is extremely bright, washing out almost all detail and texture, making it difficult to clearly identify as a banana and unsuitable for high-quality training data." } }, "f8c4843c9a05468c97af2661921c93d0": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single mango, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "f91931714ac5496ea72b3818224cdddf": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a highly stylized banana with a skeleton inside, which is not representative of a real banana and therefore unsuitable for learning realistic physical properties for simulation." } }, "f9ac5185507b4d0dbc744941e9055b96": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the fruit class. The quality is good, and it's suitable for physics simulation." } }, "f9ba91dfe1a848d5a1213f61aaddcf62": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any recognizable fruit. It appears as a stack of colored blocks." } }, "fa74a39529f5462e978b4f5dbc0b8add": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The pear has an unnatural, bright yellow band around its middle section, which makes it look unrealistic and potentially unsuitable for learning standard physics parameters for a fruit." } }, "fb2bb27ded7d409b9a86f7190e17da51": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fruit bowl, which is included in the specified class list. The image quality is adequate, and it shows a single object suitable for physics simulation in a game context." } }, "fb3243e54dd84080bf8e84a6af26ec10": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and lacks color and texture, making it difficult to discern details. It appears more like an ambient occlusion render than a high-quality asset suitable for training." } }, "fbecd3d497594041a5170e24d2d6bf40": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pear, which belongs to the 'fruit' class. The quality is acceptable for training purposes, and a pear is a suitable object for physics simulation." } }, "fc2b47ccf968426f9af981a3e4581675": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pomegranate, which belongs to the 'fruit' class. The image quality is good, and it is suitable for physics simulation." } }, "fca96798057a4d949abee3631cf39365": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts sliced bread or cake (possibly fruitcake), not a fruit as defined by the class list." } }, "ff07d2e7345c45cb8f628c7a4d0b120f": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a donut with cereal topping, which is not a fruit." } }, "ff2d841d2f15424689a851c17d452efc": { "obj_class": "fruit", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single banana, which belongs to the fruit class. The quality is adequate, and the object is suitable for physics simulation." } }, "0087882cc6fc4f47b0280f0cbf876aff": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container, which fits the 'metal_crates' class description (e.g., 'metal container', 'metal storage box', 'industrial container'). The image quality is good, and the object is suitable for physics simulation in a game." } }, "00a0d119fa7b45d4a22005405663e8c6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or metallic box. The quality is acceptable, and it's a suitable object for physics simulation in a game." } }, "00b78531614546cd8a9706e3891eaa38": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is a cylindrical item and does not resemble a metal crate, steel box, or any of the other descriptions provided for the 'metal_crates' class." } }, "0155f1bb291245c4ba25e0db02e90238": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is shaped like a crate or storage box, but the texture is completely flat and lacks any visual cues (like shine, texture, rivets, etc.) to suggest it is made of metal. It looks more like plastic or an untextured 3D model, making it inappropriate for the 'metal_crates' class." } }, "0180a9f54e3a4f66acd006f068d1cacc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a modified shipping container that looks more like a small building or shop, not a simple metal crate or storage container. It also includes a ground plane, violating the single object rule." } }, "018a2be65a65434ca4406d2df0a1908c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, albeit with a stylized design. The quality is good, and it's suitable for physics simulation as a rigid body." } }, "025247ea296640be8b163361e7aa797e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a food storage container, possibly made of plastic or mixed materials, not a metal crate or similar industrial container." } }, "037d2624e22f4fb4b7066676c6321903": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for use in a video game and physics simulation." } }, "03cbe98cebfa40c3b5819d5809156275": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation in a game." } }, "042201dac61041fabb88f483368daa3f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container/crate, which fits the requested class. The quality is good, and it's suitable for physics simulation in a game." } }, "047dc1845148425cb13cec24cd2550f3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class 'metal_crates'." } }, "04f2f2258ed345c0a9b788282411cfaf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "067885f0eefd460cb15521feeaf990a4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood or cardboard, not metal, based on the texture and color. It does not fit the 'metal_crates' class." } }, "0679002fd7a0424485392565e6d3c5dc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for use in a video game and physics simulation." } }, "0742ed52fe3c486bbf3edb0895aef664": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "07a3eef5ff7147e69969766bcbb78da7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or industrial container. The quality is good, and it's suitable for physics simulation." } }, "080af208590f4b56ac88c60631571e9f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "0833c62cc79842d2a7dd1b4db0dd0064": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood or cardboard, not metal. It does not fit the 'metal_crates' class." } }, "093e96d1dfd347cbbf101d06b451eed6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "09f01d62a51a4e1f8ae8c59ea0426f3a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class." } }, "0af88d0aa1d24a9382e7864b6034bceb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for use in a video game and physics simulation." } }, "0ba9d0000b6d47a79b0704cc72dad7d7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a stylized metal container or crate. The quality is good, and it's suitable for physics simulation." } }, "0bcaa5a224e4440f8ab0d8dcd473cad3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate covered with a cloth, not a metal crate." } }, "0bd87da299374e898802546e1d0d4f87": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture and construction clearly indicate wood, which does not fit the 'metal_crates' class." } }, "0be633a727c149b5b74391f7d8816825": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "0c543427225447bdb7cf2a362497f6e9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be a wooden crate, not a metal crate as required by the class definition." } }, "0d354b3f9b6b43e2a1cbe047edd3a379": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a truss-like structure, not a metal crate or container. It does not fit the specified object class." } }, "0d361e9909c743daa7f547bb634aa42d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden crates, not metal crates as required by the class description." } }, "0d558523d4fb4fdab3e75f087f19fca8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate with metal reinforcements, not a metal crate. The primary material is wood, which does not fit the requested class 'metal_crates'." } }, "0db114d7753344d6825aa4f21ec56db9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class." } }, "0def9e3a41c044f6a6a17160fdad05cd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three crates) instead of a single object as required." } }, "0e24de6fa4e04971aa20c22d258cde32": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily made of wood, although it has metal bands. It does not fit the definition of a 'metal crate' or related terms which imply the main construction material is metal." } }, "0e4e63c63614433d84bb2534f3a19175": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily made of wood, not metal. While it has metal bands, it is a wooden crate, not a metal crate." } }, "0e60a62a8f1e4048b638a32eb0661015": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for a sci-fi setting. The quality is good, and it's appropriate for physics simulation use cases." } }, "114b4a09c9f24f10abd5439b0804fc70": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood material." } }, "114c846790cc46fea119833b6b82f5eb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects (stacked crates), while the requirement is for images depicting only a single object. Additionally, the material appears more like plastic than metal." } }, "123c7146d631425683fca388494042a0": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for physics simulation." } }, "124c8eab5a5046699d29aa1d84c75137": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container (an ammo box), which falls under the 'metal_crates' class. The image quality is good, and the object is suitable for physics simulation." } }, "12629e83cdb142e895c5a3829bfd49b2": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. The material is incorrect for the requested class." } }, "12f5cec5558545ffa13081576a65d53c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/chest, which belongs to the target class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "134d0d1134b34649a2cc8b8a51d8f0bf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate with some metal fittings (handles, corner reinforcements), not a crate primarily made of metal. Therefore, it does not belong to the 'metal_crates' class." } }, "134ef83544d545fc970c4295cd140c3d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal crate, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "137cbaeaf95e495db6d0c1a4d9a5760d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal crate/container, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game context." } }, "13d08f5db8104f2693ee32e08dc836b3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely black and does not depict any object." } }, "1447cee3d4a7489ba77b5e272996d2f4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "149556201a8a4200b216eb9eab13541c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container, which falls under the 'metal_crates' class. The quality is good, and it's suitable for physics simulation in a game." } }, "14c8445c05d54559a74148d7475706aa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the requested class. The quality is good, and the object is suitable for physics simulation in a game." } }, "155398966f0a49a1bc3d6c3186f9e47f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a shelving unit, not a metal crate or container as described in the class list." } }, "15bb6b0f2ded49da947665d94f1f002e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it very difficult to discern the details or material of the object. It lacks the quality needed for training data." } }, "15d00d76890d458ea454d34ce08cbda5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. The texture clearly indicates cardboard, not metal." } }, "15ea2fcc2ed84e449bed0af826861b3c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate as required by the class description." } }, "166e97868ea44c0fb37a0b45812d7ebd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "16ccda0f28d04b3d8b5b480a5f53df3c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal container/crate against a clean background. The quality is good, and it fits the requested class 'metal_crates'. It's a suitable object for physics simulation in a game." } }, "1745fd7ace2846bba2b34e31a448049a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden crates, not metal crates as specified by the class name and description." } }, "17f4b98f15b2454a904acdcae0778340": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal shipping container, which falls under the 'metal_crates' category (specifically 'metal container', 'shipping crate', 'industrial container'). The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "18ec2b067ad94baeb79cb5f2041e474c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a crate that is primarily made of wood, with only metal reinforcements on the corners. It does not fit the class 'metal_crates'." } }, "19a32159a3d6443e95105f4f7cb51c39": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "19c459ae193744dd9aee75e038cb6cbf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate, albeit in a stylized/sci-fi design. The quality is good and it's suitable for the requested class." } }, "19c943e409644a8281cc96f63e6743c6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation in a game." } }, "1a7c9da570fd44d189da0560bf3a37d1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, albeit with a sci-fi aesthetic. The quality is good, and it's suitable for physics simulation as a rigid body." } }, "1aea9cf34de840cc830a75e1d1ebc229": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates as requested by the class 'metal_crates'." } }, "1bcef93a72c74e9683720788716ed9a6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. The material is incorrect for the requested class." } }, "1c5d571c069f4cb2a993556ec8ee0889": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "1cbd24c66ea2479490b1515382801885": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic, not metal. While it is a crate/container, it does not fit the 'metal_crates' class description." } }, "1d8edb9fb6c74a52a3a661e2371568ae": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its details. The quality is too low for training data." } }, "1dd42bdf61c74428ba730f0fcac4327e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made primarily of wood or a mix of wood and metal, not clearly a metal crate as required by the class description." } }, "1dfcb9bd7b6f42339109ad65d06ef237": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture and material are clearly wood." } }, "1ecd6f2521e64abdbbc40f24a3356b07": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily shows a large textured surface (floor or platform) rather than clearly depicting a single metal crate. The crate itself is very small within the frame and lacks detail, making it difficult to identify clearly. The image does not cleanly depict one single object as requested." } }, "1f97e554b5c44978ae8e89b0cb3dcca8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container suitable for the class. The quality is good, and it's appropriate for video game use and physics simulation." } }, "1fee34f4d452494ea867ae17dc15517f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "20771851c5754dd5a94a1e09572c426c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a metal crate." } }, "209733c30f7f479ba97c01e83e78c2b1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor; the bottom part of the object is significantly overexposed and washed out, making it difficult to discern details and material properties." } }, "20d8b8dc92cf4fa4b359023a3aea9b20": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or storage crate. The quality is acceptable for training data and it's suitable for physics simulation." } }, "2103afffe38f4e5f878409878d8ed506": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood material." } }, "2114c491f9534120b71233479c0ed72c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic or possibly wood, not metal. The texture and color do not align with the requested 'metal_crates' class." } }, "213a49f471024b6f8584dc5d7edcf070": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The primary material is wood, although it has metal fasteners." } }, "215ea58143db4a7e947c0dc9eea9e1a6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a type of metal crate or container, suitable for the class. The quality is good." } }, "2266c4677036435f9a0ed23a89b1da8b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. The texture is clearly cardboard." } }, "22d789c645db4f0b908b66e31240638e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily a wooden crate with metal reinforcements, not a metal crate. The main material is wood, not metal." } }, "22da4fd40bfc4e21be1092d5e5905088": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a stack of wooden crates, not metal crates. The texture and color suggest wood." } }, "22f817092ff34ed8b622281b5c3e7dcf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. Additionally, the image quality is very low due to pixelation." } }, "231b3275ccf540378f9cadf27e7de56d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is primarily made of wood, not metal. While it has some metal parts (reinforcements, handle), it does not fit the description of a 'metal crate' or 'metallic box'." } }, "23af43363ba84509ae7ab7a1ff1580c4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and lacks detail. It's essentially a black silhouette, making it impossible to determine if it's a metal crate or any specific object." } }, "241dd821296544f9a2507e53351459b0": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "2506fe4fa73740d6ac6cbb1f495b4fd5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/box. The quality is good, and it's suitable for physics simulation." } }, "25dbd827927a4f4a82001232876b08cf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which fits the requested class. The quality is good, and it's a suitable object for physics simulation in a game context." } }, "25e04de3ba4b498b94fa7e570437bfbf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation in a game environment." } }, "25f6f7ce1c18404a99ff0742cf1fc7fa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The quality is good, and it's suitable for use in video game development and physics simulation." } }, "26a4cd13ed0048239a0f61dd5e4562d4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for use in a video game and physics simulation." } }, "26ac670ee9a84e5397749590f2b12745": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very basic, untextured grey box. It lacks any details or textures to identify it as a metal crate or any related object. It appears to be a low-detail placeholder model, not suitable for high-quality training data." } }, "272386dbe3894114ba4815bbbe579a5b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which fits the specified class. The quality is good, and the object is suitable for physics simulation in a game environment." } }, "2a0c2342956648ba813e9a56533b4cc2": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden crates, not metal crates as requested by the class description." } }, "2a561fd3efde4de589400b159a4909fe": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The quality is good, and it's suitable for physics simulation in a video game context." } }, "2b82f2d72ca54dc89726e83e5293ee2e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. It does not belong to the specified class 'metal_crates'." } }, "2b8ad0ee3b474161b888aeb02254f422": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate." } }, "2bedf3cab81a4e8ea6b772405ceafa00": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class." } }, "2c228962c4dd4429a0ce4d6ee9a23600": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, fitting the class description. The quality is good, and it's suitable for physics simulation in a game." } }, "2cc4b6e6a6bd4e3f932fde64a21b7fda": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a metal container or storage box, fitting the requested class. Although it has a wooden panel on one side, the main structure appears metallic. The quality is good, and it's suitable for physics simulation." } }, "2d48359fb3d449899f9dee69dc1fa46b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate with metal straps, not a metal crate. The primary material is wood." } }, "2e372e24cd2f4b70beac8b1dbbb2634b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "2f3daeb2126146cc81dc4ca8bcf96c4e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, suitable for the class. The quality is good, and it's a relevant object for physics simulation in a game." } }, "2f48782f3c924079a2554113e086b539": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building (possibly a barn or shed) on a ground plane, not a metal crate or similar object." } }, "2fef678ed4924bf0a157d7fb06cc3f75": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is rendered in plain white without clear metallic textures, making it ambiguous whether it belongs to the 'metal_crates' class. The reflective elements in the lower part appear low quality or like rendering artifacts." } }, "3142669aa80142eb93f316c81bd18d85": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate with metal reinforcements, not a metal crate. The primary material is wood, which does not fit the target class 'metal_crates'." } }, "3154c6751cd345eea0b263a1c822ac30": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container, which fits the 'metal_crates' class. The quality is good, and it's suitable for physics simulation purposes." } }, "317cefbb22c545eebe78ef61b8a84566": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "32cf33de834343caba3a160b7d26aee9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class." } }, "32f726f65d0c49fe928785cbdead8ea7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class definition." } }, "3422a5b3a08c476495acc3ceb04bace6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood, not metal, based on the texture." } }, "342efe4d70f94d37a4edd66a15c39502": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for the class 'metal_crates'. The image quality is good, and the object is isolated against a clean background. It's appropriate for video game development and physics simulation." } }, "34ad0195e1314393ae3e4539f69292f0": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box with a game controller inside, not a metal crate. It also contains multiple objects." } }, "350c8f386351437680d0035f7da61b46": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is clearly a crate, but the texture and color make it look like wood or plastic, not metal. The requested class is specifically 'metal_crates'." } }, "35f1d78d5b7d41b9b8f8e0d403b7f379": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate, suitable for the 'metal_crates' class. The quality is good, and it's appropriate for physics simulation use cases in a game." } }, "36380c606bae46848237e9bbe073fa3b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container, which fits the requested class 'metal_crates'. The image quality is good, and the object is suitable for physics simulation." } }, "3659be7564a34c3ca158a1d5586cb386": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts two distinct objects (or one object and its separate lid), violating the requirement to show only ONE SINGLE OBJECT." } }, "37e7f7e4b6c54bcc838fbbf660dc1f7f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "383d9b9cc552446788a6d9bc11f2c0fe": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The object is a well-rendered, single metallic container with an industrial/sci-fi aesthetic. It fits within the broader definitions of 'metal container', 'industrial container', or 'metallic box'. The quality is good and it's suitable for physics simulation." } }, "384a82afd57b420193a6b7d2ac48e1d8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The material appears to be wood planks with some metal reinforcements, but the primary material is wood." } }, "387b46af5a35413aaa20073fb7bfc197": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is made of wood, not metal. It resembles a wooden pallet or crate, not a metal crate." } }, "390e8201432a4ef3813316953cacee95": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate. The material is incorrect for the requested class." } }, "3a0038be8ff94941a01713507c52f089": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "3a35e0733ffd4856be74cb2929293429": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost completely white and does not clearly depict any object, let alone a metal crate. The quality is extremely low." } }, "3af0c95925984efd9015899b5cbe4c7f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks texture, making it impossible to determine if the object is made of metal. The quality is too low for training." } }, "3b1ca8760f5541a8b3e65d983dd9cdcd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation." } }, "3b342f9d809b471c99ffd046ba08b94f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture and material are clearly wood." } }, "3b37b34e19334a05894cc4dff7685eaa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a very small, indistinct object that cannot be clearly identified as belonging to the 'metal_crates' class. It lacks sufficient detail and clarity for training purposes." } }, "3b44675a239e4781a4b1ead8f7065aa4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal crate/box, fitting the class description. The quality is good, and it's suitable for physics simulation." } }, "3cca6b5c03e94738839c815ee1433632": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate as required by the class description." } }, "3cd5e9c8e7e4438db89169445afd7ccd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "3d86014e5f9b47bfbfd7aaa764c6cedd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate as required by the class description." } }, "3daeaf6bf7a2454faaf1f97131bdb664": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "3e679f329a314583ab0cbb7caf33c163": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows cardboard boxes, not metal crates as required by the class description." } }, "3e9fe238a2984bceb107bc2568db2653": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a stylized metal container or crate. The quality is good, and it's suitable for physics simulation in a game context." } }, "3fddc1e9ae1e4cb0bd39cbbd2c7fcf4f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "40b8381fbd3f4177b97e72203e8f8852": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making the object almost completely invisible and impossible to identify as a metal crate or anything else. It is of very low quality." } }, "41857abdae7e4d02a6c5f247355ede22": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate as required by the class description." } }, "41e1bb4ed33443d3999369897bcb20bc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The objects in the image resemble generic boxes or crates, possibly wooden or cardboard, rather than specifically metal crates. They lack the visual characteristics typically associated with metal (texture, sheen, construction details). Additionally, the image depicts multiple objects, not a single one." } }, "42987b77eae64e4c9013843eac500c32": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is an IBC tote, which consists of a plastic container within a metal cage. While it has metal components and could be considered an 'industrial container', it doesn't strongly represent the core concept of a 'metal crate' or 'steel box' due to the prominent plastic part." } }, "438b59afc7b0413f90c2daf657102d89": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class." } }, "43c1323074be441daa304250ed154583": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation." } }, "4412b693cb0443349ac556023a9c5f15": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of cardboard or wood, not metal. The texture does not fit the 'metal_crates' class description." } }, "445fb0bbf14d46a8ba3e67ffcb435c14": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal box/crate, which fits the requested class. The quality is good, and the object is suitable for physics simulation in a game." } }, "44bbcc3f08914eefa6e50691c30fbf38": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a very low-polygon, low-detail box with a plain brown texture. It lacks any characteristics that would clearly identify it as a *metal* crate (e.g., metallic sheen, rivets, specific construction details). It could be made of wood, plastic, or other materials." } }, "451bb83c53e14366858fb5f2eedef9d4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is excessively bright, washing out almost all detail and texture. It's impossible to determine the material or properly assess the object's features, making it unsuitable for training." } }, "45589060a79549ecb85de59d045127d9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden crates, not metal crates as requested by the class description." } }, "456220674897457ca25fe03892c48c5f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "47a78ed269db4024b7d56ec95b5de8d1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be primarily made of wood with metal reinforcements, not a fully metal crate as required by the class description." } }, "47f7f9679a95418b98a5a360c17cd43c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "48ef7267d1c447d886e399fe3b3dfb3f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate of good quality, suitable for the specified class and physics simulation." } }, "48f7e5255e4040fe9ba28874b4787a39": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is rendered without any texture or material definition, making it impossible to determine if it represents a 'metal' crate. It looks like a generic, untextured box, which is not suitable for learning material properties for physics simulation." } }, "495ac1b58684421db00091a63047ed1a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate with metal corner reinforcements, not a metal crate as required by the class description." } }, "49f912d0a3aa47e1abb2bc3d5f367aa8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object lacks any texture or detail to suggest it is made of metal. It looks like a generic, untextured box rather than a metal crate." } }, "4a3d8703810c4fdb9edd86750c24e535": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or industrial container, suitable for the 'metal_crates' class. The quality is good, and it's appropriate for physics simulation in a game context." } }, "4ae035ea89ea40bbaa82403b9c36afab": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "4ae27fce65084ec7bbc83fd89babe82f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a type of crate or container, fitting the 'metal_crates' class description. The quality is good, and it's suitable for physics simulation." } }, "4b9c63c0cfd644d988c5712797cb7e2e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "4ba8fdf5fc60482ba4f73cd7a519f6e9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "4c16015731624e57b89cba406b15362b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for the class 'metal_crates'. The quality is good, and it's appropriate for physics simulation in a game environment." } }, "4c1fd6d2525d4872b569fb1377cd20b5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "4c5ac05c16494435b456e7deabbc42b7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal crate or container, suitable for the 'metal_crates' class. The quality is good, and it's appropriate for physics simulation." } }, "4c5d81d4b18644df9f9f2959f198f186": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "4d49691a269745cabe0e1d5c1c3bef9b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate. The quality is good, and it is suitable for physics simulation." } }, "4d96d8b2aab94df399fbd365f30acacb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is clearly made of wood, not metal. It does not belong to the 'metal_crates' class." } }, "4e098cbe642a45659ce92d1f18b737cd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal shipping container, which belongs to the 'metal_crates' class. The quality is good, and it's suitable for physics simulation." } }, "4e34e0802dd04e1592082504a05c181d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object's colors (purple and blue) and features (panels, vents) make it look more like an electronic device or a stylized plastic container rather than a typical metal crate. The lack of metallic texture is also problematic for this class, especially for physics simulation." } }, "4e4115d08eae4e549422245059c7cff7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as requested by the class 'metal_crates'." } }, "4e470e6125984d95ab88973a9385478f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a storage crate or industrial container, fitting the requested class. The quality is good, and it's suitable for physics simulation." } }, "4e622ef1a09c43e28a49d9fa37f9eeee": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate. The material is clearly cardboard, not metal." } }, "4f664b8d9beb46a89e5a7618340482aa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object (shipping container) which belongs to the 'metal_crates' class (specifically 'shipping crate', 'metal container', 'industrial container'). The image quality is adequate and it is suitable for physics simulation." } }, "4f6ebf2c87d546498591a6b28f84a4ef": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, likely for cat food, not a metal crate." } }, "5058de3cd6134e158b92a4737e62a9ab": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, albeit with a stylized/sci-fi design. The quality is good, and it's suitable for use in a game and for physics simulation." } }, "516a1ef5df1c4fb288f1566c5c5525d6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate." } }, "525f8a47128d4caba44c455725694bf6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box (specifically an Amazon Prime box), not a metal crate or container as specified by the class description." } }, "52999802cc9049d7a66a617cc02a5b61": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very low-detail, untextured 3D model that doesn't clearly depict a metal crate. It lacks the necessary visual features and texture to be identifiable as belonging to the target class and is too simplistic for high-quality training data, especially for physics simulation purposes." } }, "542a0569139e4c1d84e6d98d8b129e9d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that can be identified as a stylized metal container or crate, fitting the requested class. The quality is good, and it's suitable for physics simulation in a game context." } }, "547d328361eb4ed98a4af7333dae4ffc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single crate with a metal frame, which fits within the 'metal_crates' class, including terms like 'shipping crate' or 'storage crate'. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "54a322cd61554ff18793960cdff0c00a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate (specifically a TNT crate), not a metal crate." } }, "54e507afc9484daaba001f6d77635d24": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a metal crate or container. The quality is good, and it is suitable for the specified class and potential physics simulation." } }, "55f4aa26a4f04a07b1f9489e88cdb3eb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The object appears to be a plastic crate, not a metal crate as required by the class description." } }, "5627e9c3e0b64f01ac5b96f9e66de0c0": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class definition." } }, "56298d9c30624704a6aef678e08d3010": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or industrial container. The quality is good, and it's suitable for the intended use case." } }, "5827545d50c04bfc82edbb45264f0456": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily made of wood, not metal. While it has a metal frame, it doesn't fit the description of a 'metal crate'." } }, "593ce32ae06d4026b8f968d6f04ce506": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "596fe5fcb4634ca7bba889748adb9bce": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate. The texture and color suggest wood rather than metal." } }, "5a19896777a24097892cc7410eb3c414": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation." } }, "5a24ee58200349e98979c05ea5d87f0d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal container or industrial crate. The quality is good, and it's suitable for physics simulation as a solid object." } }, "5b0b9491c41f4d31addf043112284394": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "5b6f27adb8a541e3953a6ade24723740": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class 'metal_crates'." } }, "5bdfc5dfa5ff4b499f49923e1a7c6d02": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or industrial container. The quality is good, and it's suitable for physics simulation." } }, "5c3363d18084408c881ab725b111c8e3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is acceptable, and it's suitable for physics simulation." } }, "5c9ab8ad1f4f4dcc8b0a76cb9cebd0e2": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "5cb4d0165aea4fecbc84f7400e57082b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of cardboard or wood, not metal. It does not fit the 'metal_crates' class." } }, "5d02dfbe63044777a6c5627e0a9e80a1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "5d5e799b652f48d094d33c200da9cc68": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be primarily made of wood with some metal framing, not a fully metal crate. Additionally, the image is quite dark and has strong shadows obscuring details, reducing its quality for training." } }, "5e19260f32d64c74a3e6f4a78a7381b3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "5e3dc08e6f174dbaa90f03a0d2c4332c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate as required by the class description." } }, "5e6cf3d76e744600b35d5d71ea51e81a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "5e7c981ad2974772bf85028039ab9d35": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate. The material is clearly not metal." } }, "5eb6d7d8e0ab4db9928486ffe958c297": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "5ed066e472a341b7b29b2535e3fc3feb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic, not metal. It is a storage crate, but not a metal crate as required by the class definition." } }, "5f1d96c109d64df98859df24c9d9b1b6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, not a single object as required. Additionally, the objects themselves are not clearly identifiable as 'metal crates' or similar items from the class list; they look more like electronic components or small project boxes." } }, "5f328b69346a42bc8fb6e4c03b17bdd5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate. The quality is good, and it's suitable for physics simulation." } }, "5f50066a5a154386b201d11c9d99fefb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/box/chest. The quality is good, and it's suitable for physics simulation." } }, "5f7ee0b43aaa4e36bfaa7e25f5609f96": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The material does not match the requested class 'metal_crates'." } }, "5f8a853682c84669825f554429dc9fb9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or storage box, suitable for a video game context. The quality is good, and it's appropriate for physics simulation." } }, "5fa3567665a4436899f7e3bad6e3db7b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'metal_crates' class (specifically, it resembles a metal storage box or chest). The image quality is good, and the object is suitable for physics simulation." } }, "5fdd10083f664eb7b18bf71c054bfafd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts cardboard boxes, not metal crates. The material is clearly cardboard, not metal." } }, "605263600fb4447199e53a8e2fe9d975": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate. While it has some metal elements (banding), the primary material is wood, making it unsuitable for the 'metal_crates' class." } }, "60d83f34fbb34d2da4300be7b86ee691": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate, suitable for the 'metal_crates' class. The quality is good, and it's appropriate for physics simulation." } }, "60ff6990d7bf4e55ba8cec8c0743beab": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low (blurry, low resolution, distorted geometry). It's difficult to clearly identify the object as belonging to the 'metal_crates' class, and it does not meet the requirement for high-quality training data." } }, "6134600590fb465aa81084727e8c4a81": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object lacks texture and detail, making it impossible to determine if it's made of metal. It looks like a basic, untextured 3D model rather than a realistic metal crate." } }, "61f824c988674eba80b64ffdefdf793d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it is suitable for physics simulation." } }, "62411693da734fdd97d37ceab494bfd6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "629ba19d493643ecbac87769548f6c5e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture and material are clearly wood." } }, "63eff560f5fb43f097dc4e7184759f41": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for physics simulation." } }, "6403fc9a2a504b9fb83723029c0d0b2a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as requested by the class description." } }, "643354db2cf34657a876357bce295a80": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container, albeit with a sci-fi design. The quality is good, and it's suitable for physics simulation purposes in a game context." } }, "648fe0b4f71848fb87e692e1fed75fe8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a crate, but its construction (planks, framing) strongly suggests it is made of wood, not metal. It does not fit the 'metal_crates' class description." } }, "64ab5a96c7eb4ac290976530c0721048": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate with metal reinforcements, not a metal crate. The primary material is wood, which does not fit the requested class 'metal_crates'." } }, "6509af6a6f4d4ad5b61757c2aa3b840e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate as requested by the class." } }, "65136c26f8f74ec297f6ea7bd225562e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single crate object which fits the general description of 'storage crate' or 'shipping crate'. Although the texture is plain and not explicitly metallic, the shape is recognizable and the image quality is good. It is suitable for physics simulation." } }, "6597d3858df94da698ece8e0038f50b7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/box, which belongs to the specified class. The quality is good, and it's suitable for use in video game development and physics simulation." } }, "65be3c894ac640768ee8c6743e079c6e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily a wooden crate with metal reinforcements, not a metal crate as required by the class description." } }, "66293c629658413b8b9c0b822cb5264d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, which fits the requested class. The quality is good, and it's suitable for physics simulation." } }, "663bd45da96b4e0b8113389cb01125ad": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class." } }, "67cc0124e2404201a455dd5078c3f46c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'metal_crates' class (specifically, it looks like a metal storage box or industrial container). The quality is good, and it's suitable for physics simulation purposes in a video game." } }, "67f10b946eb84e21a2d12bbf03b844ac": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "6862d3ee2d0141199173631314467143": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single one. Additionally, the objects do not clearly resemble metal crates; their appearance is more akin to wooden or plastic containers, and they are depicted in a highly stylized (voxel) manner." } }, "693dc5335d70418999ebbf7a8c9efb59": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single crate object against a clean background. While the texture is simple and not overtly metallic, it fits the general shape and form of a crate ('storage crate', 'shipping crate') and is suitable for use in a video game context, including physics simulations." } }, "69fe3211493c4a4db26ad0c4e2e49a83": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is clearly a crate or container, but its texture and color (bright white, smooth) do not strongly suggest it is made of metal. It looks more like plastic or a futuristic composite material, which doesn't fit the 'metal_crates' class requirement." } }, "6a1cfc1e05284c3d803f735c86f2e405": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class." } }, "6a73900ab29d417c9145c584dcda0fba": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood, not metal. The class is 'metal_crates'." } }, "6b6588fae0af4f4d94842f397df5554b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The target class is 'metal_crates'." } }, "6c93ab64f1854d398def02a5cf0b440f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "6cec1cd86b50477b842494f4278c8e1e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is severely distorted, low-resolution, and does not clearly depict an object. It is impossible to determine if it belongs to the 'metal_crates' class. The quality is too low for training data." } }, "6cfc60d55bd149a99a078fd49744ae93": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates as required by the class description." } }, "6d198f56b295451a972e63c95921436d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a metal crate, which fits the requested class. The quality is good, and it shows a single object suitable for physics simulation in a game." } }, "6d888811b3204a25817e333eb531fff5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "6e54bbfa62b24e58a767152d230b2a01": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "6eb58182e9f04ccc855b036bbea5db98": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate. The texture and overall appearance suggest wood as the primary material." } }, "6ec160372ee646938961f716276d4976": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate with a weathered texture, which fits the class description. The quality is good, and it's a suitable object for physics simulation in a game environment." } }, "700b0a7b336f4cb6ba5dea874bd76585": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a piece of machinery or a generator with wires and gauges, not a simple metal crate or storage box as defined by the class list." } }, "70d7a6a685d04ce7ace7092b2461e1fa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "70f748401ee04dafbdb3fdb54748795f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as specified by the class." } }, "713484d8f2284528bbd28ad41e197b24": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows cardboard boxes, not metal crates as requested by the class description." } }, "7174c6167d854c59a98d56e8550af2e6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or chest, suitable for the class 'metal_crates'. The quality is good, and it's appropriate for physics simulation." } }, "72ffa9b10cf642f0a03ddbe35d9ef784": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "73abcde06128458d8ce339636f997176": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it very difficult to discern the object's details or material. It looks more like a wireframe or schematic than a textured 3D model, and therefore does not clearly depict a metal crate." } }, "73fcb1589b81413ead568e0bae450d08": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a mug or tankard, not a metal crate or any related term like steel box, metal container, etc." } }, "748f17ab03b14b65a6bcda52be71b971": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be a wooden crate, not a metal crate as requested by the class description." } }, "74d467eb13b44d3890862046c3539992": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "74d5ce81aacd4c9c82290d3f90635513": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic, not metal, and resembles a storage tub rather than a metal crate or box." } }, "74eb2faadee44757b7e6d579d78d9000": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too severely cropped and does not show enough of the object to determine if it belongs to the 'metal_crates' class. It only shows a small fragment of a surface." } }, "75dd762ba2d748cd9e341551bd0631a2": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture, making it impossible to identify the object as a metal crate. The quality is too low for training." } }, "76563bcfa9be4a1d9977fb8057f3021d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily a wooden crate with metal corner reinforcements, not a metal crate as required by the class definition." } }, "76fa80950b1f48a8ad6a8441fe443241": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate as required by the class description." } }, "779290935b8b4dedbd39c2259d44faef": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation." } }, "7810db828acb44108390e2b861f55105": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class definition." } }, "785d0ee143bb422d80742db1c1ab82a9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a metal crate." } }, "78ada3be359c403a95d374e87240ec00": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern any details or even the shape of the object clearly. It does not resemble a metal crate." } }, "795e775f06e24bb4a3c741d2b9560c84": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood, not metal. While it has metal fasteners, the primary material does not fit the 'metal_crates' class description." } }, "7a09f75755af4975a5cb3dfa57c7f53b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container/crate suitable for the class. The quality is good, and it's the type of object that would be used in physics simulations in a video game." } }, "7a6368d0e3ed4edf919cb0b7a0f8787f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class 'metal_crates'." } }, "7a6a826f1d564304bd779c6607180e1f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is depicted with a bright green, non-metallic texture, making it look more like plastic than a metal crate. This does not fit the 'metal_crates' class description." } }, "7a78be45d1bc4c359b0d410484efa565": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal chest/crate, which belongs to the target class. The quality is good, and the object is suitable for physics simulation in a game." } }, "7ad5476043e041d8bf42054d6a2bcea3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "7b2aa5debc054c3a8f70c07c35352d46": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a crate that appears to be primarily made of wood, not metal. While it has metal corner reinforcements, it doesn't fit the 'metal_crates' class description well." } }, "7b9426222f0c4838bfbc13850095bb3f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be a plastic crate, not a metal crate as specified by the class." } }, "7cca6fac16954e6b9799c7f28001c05b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates as required by the class." } }, "7ec06f3b181c47149d31b521b87ed799": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate. It does not belong to the requested class." } }, "80030a7b36d740fa97480e9a469e9ac1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate with good quality and lighting. It fits the requested class and is suitable for physics simulation." } }, "80ad4238859c41c1b3e62d4c215410c1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the metal_crates class (specifically, a sci-fi style metal container/crate). The image quality is good, and the object is suitable for physics simulation in a game context." } }, "8105239f45d5483096d3ffbc309e799b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal crate or container. The quality is good, and it is suitable for use in a video game and physics simulation." } }, "811d56f436dd4b99a670ef2824577693": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not clearly resemble a metal crate or any of the related terms. It looks more like a stylized container, possibly made of plastic, and its specific identity is unclear from this angle and rendering style. It also contains another object inside, violating the single object requirement." } }, "8136ea79bbbc433990d15313c4051528": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container, which fits the 'metal_crates' class. The quality is good, and it's suitable for physics simulation." } }, "81b915ffcf9c4f888935d42142bed8dc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate." } }, "82e0bcfe1f6b41efbe10deed14185b88": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate with metal reinforcements, not a metal crate as requested by the class description." } }, "8367053dfc3e4e0896138d9a864e264d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, fitting the class description. The quality is good, and it's suitable for physics simulation in a game." } }, "84b9533174174bea8b3117ad6ff08512": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects: the metal crate and the platform it is sitting on. We need images depicting only the primary object (the metal crate)." } }, "84d141ab1742471c8135e4843235c354": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation in a game environment." } }, "857afcd1a0ab4c958f5c912474d4f430": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (four metal containers), not a single object as required." } }, "872687e760cb4cf19b1aeb102b5039b0": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class definition." } }, "872d41d63510485eb30915c510ee1c33": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for use in a video game. The quality is good, and it's relevant for physics simulation." } }, "87d2912496bf4d689ba3df0df137d068": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "8862181b9fb94836aa2f3f0d41bf2c4c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single shipping container, which falls under the 'metal container' or 'shipping crate' categories. The quality is good, and it's a suitable object for physics simulation in a game." } }, "88fe205708fd424db0cb4fa7a05347b5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "893532ea87284c749c4b12b39dcdc218": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The class required is 'metal_crates'." } }, "898d2bdc7aff4543a367f65941c47426": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate as required by the class description." } }, "8a590234c3fb479a901d172fa5e64323": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "8a97a4bfb3e440e5b0720312eaf81401": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too small and far away in the image to be clearly identified as a metal crate or any related item. It lacks sufficient detail for training purposes." } }, "8b5c570dab694d8bb9191f279e8372b1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates. It also contains multiple objects (crates, shovel, and an artifact)." } }, "8b942eb1fdbd4204a54d0e613bfc16ec": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "8c5581a8e6b94a7f8133d9eed2d8df5c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate. The material is clearly cardboard, not metal." } }, "8d3cd20c25cc4557b2afb41edf2b0769": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, suitable for the class. The quality is good and it represents an object commonly used in video games and physics simulations." } }, "8dce2290f0164abf8b5296c83d7e7d8a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, which fits the requested class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "8ea1c246a6714a9e9849df1f62efc5af": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a metal crate." } }, "8ea36edd521b4c1fa44f0403311e467c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for use in a video game context, including physics simulations." } }, "8eca936ac38e4939bb39fe046c2d8173": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate." } }, "8eda583592f34498a350f6cc5a650042": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal container or industrial container, which belongs to the 'metal_crates' class. The image quality is good and the object is suitable for use in a video game and physics simulation." } }, "8ef0562ae2104c04aa5b1e440c96c5be": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted looks more like a barrel or a pot, not a metal crate or any of the related terms. It does not fit the visual characteristics of the target class." } }, "8ef839e8b29e4247adc65c81b88fed40": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. The material is incorrect for the requested class 'metal_crates'." } }, "8f10a3a580644eb5b8e8cab6ac2627a9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, which fits the requested class. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "90857110cb2b440ea9c856b36eb331a8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely black and does not depict any object. It is unusable." } }, "90d05914d8684a9faf5fd40adc134374": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class 'metal_crates'." } }, "9243b637052840cc8583b4b8db9c9a22": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood material." } }, "9390828526ad4798ba27986f3f668402": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects, not a single object as required. Additionally, the objects themselves are not clearly identifiable as typical metal crates or containers from the provided list." } }, "93d4333ad5764cf7941744b09cafff78": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate. The quality is good, and it's suitable for physics simulation." } }, "9450f244bb2f4eac831d7b4bbaa25de5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is extremely low, the object is very small and pixelated, making it impossible to clearly identify it as a metal crate or related object." } }, "948a3970e3654f0682cb3393f7e1a367": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "95004774386840b8825de93a659eb63e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "95255e9beb17457b973ae00aa1966832": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "95ed17dd04a54fd1a22e4ae550502995": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture is clearly wood grain." } }, "96003dd7d1c245cfbc0581b6f5de63dc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture and color indicate wood, not metal." } }, "96f76294a9dd4b10b7b8684feffa59df": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to discern the object's material or details. It does not clearly depict a metal crate due to the poor image quality." } }, "97a98d49d74c499bacfd3b21cc5af27c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "97ef0711288249ee96a3810d265b55f6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single, high-quality 3D model of a sci-fi style metal container/crate, which fits the requested class and is suitable for game development and physics simulation." } }, "989ae21dfb7b4640b6762635c7be7d96": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "98cb37c872b34841a5f1541f5ea6a13f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "98d27ccc3d99403d8483c66dabf2d152": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The material does not match the requested class." } }, "9aef660680a549a69d94e0579231a0c3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container with good quality textures and lighting. It fits the requested class and is suitable for physics simulation." } }, "9b6eef6e7a1b459fa0c6a2234878363c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, which is not a metal crate or any of the related terms provided (metal crate, steel box, metal container, shipping crate, metal storage box, industrial container, metal chest, storage crate, metallic box)." } }, "9b777fb2bf8143e096b4bf4f0093e0c0": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation." } }, "9c16eca520724b1e921d6b81d8346063": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "9caf5bf86b424d9097e95b37f3f08006": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "9dda05572f7b49e1afb42bbb55d733d7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it difficult to discern the object's details, texture, or material. It does not clearly depict a metal crate due to the poor quality." } }, "9e50e7cb25924ea5a383eb51bf53679f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal storage box or industrial container. The quality is good, and it's isolated against a clean background. This type of object is commonly used in video games and relevant for physics simulation." } }, "9ef5bade86ae4a9c9b23980e095016ff": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "9f4a475312454cf2897146ea52c84c3c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "9f7189d9837642559575b38873046aab": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for a sci-fi or industrial setting. The quality is good, and it's appropriate for physics simulation use cases in game development." } }, "a0416e5fd229436d954f36f85f30e873": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "a0420be44c944b94b63bb030698ce16a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic, not metal. The class requested is 'metal_crates'." } }, "a13ed974eac14cbcbc0d758a6263e927": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of cardboard or wood, not metal. The texture and color do not resemble a metal crate." } }, "a16632b00f8f4415acaec84dc642f266": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for a sci-fi or industrial setting in a video game. The quality is good, and it represents a solid object appropriate for physics simulation." } }, "a20cd92533584fe988c6f5a9122cfe01": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate as required by the class description." } }, "a28078666f27474faec569b15c1dbfec": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "a2b6230f3a8d4c83a314116579d211f8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "a4e05f6c3ee44792b0fa5822df65ca78": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate as requested by the class definition." } }, "a64d7c4641f24032a4e4c86444519afa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The quality is good, and the object is suitable for physics simulation in a video game." } }, "a6692085da0c4314a9712229b8453af2": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "a725f4f4f79a4b3e82de4dbf8ea7f906": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of wood or plastic, not metal. The texture and construction resemble a wooden crate rather than a metal one." } }, "a759d9e4d1a84d919a7891de52273c56": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that belongs to the 'metal_crates' class (specifically an industrial or futuristic metal container/crate). The quality is good, and it's suitable for physics simulation." } }, "a78c1a93dd124f7eade179e74236f0e1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as requested by the class 'metal_crates'." } }, "a851a3d0458f4a0e914c4e67cccdac2c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, distorted metallic object that does not resemble a metal crate or any related item from the provided list. It is not clearly identifiable as the target class." } }, "a874edf82e5c4e7c9ffdaf6ff921bb7d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "a8d21e002144447eaf30ce41944d8f67": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, which fits the requested class. The quality is good, and it's a suitable object for physics simulation in a game." } }, "a9a8d779af6b411cb896c6fcc355820b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be a wooden crate, not a metal crate. While it has a rusty texture, the construction suggests wood planks, which does not fit the requested 'metal_crates' class." } }, "aa5f33c901c345939dc8050962f77b02": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'metal_crates' class description. The quality is good, and it's suitable for physics simulation purposes." } }, "ab13d353e48b48e8946ec4a92856519d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal box/container, which fits the 'metal_crates' class. The quality is good, and it's suitable for physics simulation." } }, "ab68b62f284d4d91ab19449da793c1cc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a stack of three crates), while the requirement is for images depicting only a single object." } }, "ac07a9f765ef40b791e7f72ceb8445c7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate with some metal reinforcements, not primarily a metal crate as required by the class definition." } }, "ac36898521304e51a8e305aa602f1f5b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for physics simulation in a video game context." } }, "ad1d4996b2d54afb9f3aa274f0093ed1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily a wooden crate with metal reinforcements, not a metal crate as required by the class definition." } }, "adce07d83d5d4fadb11361d0ebe66db9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is a small, rounded container made of wood and metal, standing on legs. It does not resemble a metal crate, steel box, shipping crate, or any of the other descriptions provided for the 'metal_crates' class." } }, "ae0298ab52e441868d5dd826ce936b00": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily a wooden crate with metal reinforcements, not a metal crate as required by the class description." } }, "ae81a6d59b73468b81003f355518e573": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate or container as required by the class description." } }, "aea0114349fa4237ac236adda62ecf00": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "aea66bf3414045c5a796c92cd1295e1d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple instances of the object (four crates) instead of depicting a single object as requested." } }, "aef83530272b46d6ab2432576d7b2d71": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, albeit with a sci-fi aesthetic. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "afa76ada817b44ea91096ab60adc4408": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a metal crate." } }, "afdc5b74ec474eefaf4a6ca50007bfa7": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple crates, which appear to be made of wood, not metal. They are also partially covered by a tarp. This does not clearly depict a single object from the 'metal_crates' class." } }, "b019f3602b6a4dc9a49223533e0079fc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, albeit with a sci-fi aesthetic. The quality is good, and it's suitable for a video game context and physics simulation." } }, "b01d7ca19765412fbed81fef8c96db07": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "b0526c0d265b44dfbcab712e003fcdf1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a 'metal chest' or 'metal box', which are included in the class list. The image quality is good, and the object is suitable for physics simulation." } }, "b0e935d3008b4c2f866e1a8fffe2bc1f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts cardboard boxes, not metal crates. The requested class is 'metal_crates'." } }, "b0f3e65d0c3c4a53893b6b2d650f4e95": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern the object's details or material. It does not clearly depict a metal crate due to the poor quality." } }, "b13996abd5644ada91f9719f08316c98": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal crate/container, which fits the requested class. The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "b23d9f7f39944bfe8548982d405ee176": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood." } }, "b25d011ed0e64283b2a596db7ea7b38b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple objects (a stack of crates) instead of a single object as required." } }, "b2833a9bcfdd44b2aa5c4075c3283385": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two distinct objects (crates), while the requirement is to have only one single object per image." } }, "b2d390dcedfd44bd9c6a0f887329725a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden chest with metal bands, not a metal crate. The primary material is wood, which does not match the requested class 'metal_crates'." } }, "b2e90b524e2c471899b2cf64784ee47a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "b5745885d86c4fd59b6f78464d01316b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container, albeit with a sci-fi design. The quality is good, and it's suitable for physics simulation as a rigid body." } }, "b5b4395ecfa4429eba168823f41bdbe2": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts multiple metal crates strapped together on pallets, forming a single unit commonly seen in industrial or shipping contexts. This configuration is suitable for the 'metal_crates' class and relevant for physics simulation as a single object in a video game." } }, "b658f15a9708442c956f5d0baa0ea665": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic rather than metal, which does not fit the 'metal_crates' class description." } }, "b6865b94afd14dc9b7f6c0c8c28ad25e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too abstract and stylized. It lacks any texture or detail to suggest it is made of metal or represents a crate/container from the specified class." } }, "b6874ec16705414483dae2f5597e76d3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for physics simulation." } }, "b71803cd9d264f87b66429d7c7f88b8f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks texture, making it impossible to identify the object as a metal crate or determine its material properties. The object blends into the background, rendering it unusable for training." } }, "b830b15979404f0287b575bf774cd15e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is highly stylized and futuristic, and does not clearly resemble a typical metal crate, shipping crate, or storage box as described in the class list. It looks more like a sci-fi prop or component." } }, "b830e8375d334578862a384fb466b042": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal crate, matching the class description. The quality is good, and it's suitable for physics simulation in a game context." } }, "b8e9ef6ea3084b599888b9cfd7d143cc": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "b929b766c3794ae7ba05426cba609038": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or industrial container. The quality is good, and it's suitable for physics simulation." } }, "b9f0f890580545fea51e80b4ce9791fe": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "ba06c2a925be47c4a78042ed3fa987ab": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its material. The quality is too low for training data." } }, "ba69fd0799284d13bcdae1ef801eae21": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for use in a video game and physics simulation." } }, "bb003bfb11a64e6c85cfa2e0e72c4ba4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, fitting the class description. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "bbeaa4b040c34a2f80fa8127783f2ff4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates." } }, "bd501310761c44619e8a3e792bfb808c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two crates and several smaller cylindrical items), not just a single metal crate." } }, "be0e4f9eb1164e0bb3474d0fd7c4c6db": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The image quality is good, and the object is suitable for physics simulation in a video game." } }, "be3970d0629340dba495612d30911c6a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "bf36f5faec21413ea8e8252a37dcb243": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, washing out details and texture. It is difficult to determine if the object is made of metal; it looks more like plastic or a stylized, non-metallic container." } }, "bfa7bca55970470c95be46b9e65e60aa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates. The texture clearly indicates wood." } }, "c10c95e4154b41509bfbb93d209ded82": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for physics simulation in a video game." } }, "c1ccd9c9c2564177bf3c8bb16b7a992d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate." } }, "c4de39793682473aa808eb5d9798c669": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single container/crate object that fits within the specified class, particularly 'shipping crate' or 'industrial container'. Although it has wooden textures, the overall structure with metal reinforcements aligns with the class concept for game assets. The image quality is good." } }, "c4e96709c1c9469bace0dceec55ae608": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, which does not belong to the requested class 'metal_crates'." } }, "c50d7a37b9ec483f8abfdbecd162aa35": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for a video game environment and physics simulation. The quality is good." } }, "c5370ce0ab5a47ac838e391c03afbd99": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, which fits the requested class. The image quality is good, and the object is suitable for physics simulation in a game." } }, "c56e5dea70c141c18ec9c8401bba72a1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is primarily made of wood, not metal. While it has metal reinforcements on the corners, it does not fit the description of a 'metal crate', 'steel box', or 'metal container'." } }, "c5a9111b47764a1d8bf71667cda0420a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object's appearance, particularly the bright purple color and lack of metallic texture, makes it look more like a plastic crate or basket rather than a metal crate. It does not fit the visual characteristics typically associated with metal crates, steel boxes, or shipping crates." } }, "c5ed8f2d27484e6083a4988f1a5913f3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image looks like an electronic device or a specialized case, not a typical metal crate, steel box, or shipping container as defined by the class." } }, "c7e4c17e948b42ed9bfdd6b8b7663890": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a 'metal container' or 'metal chest'. The quality is good, and it's suitable for physics simulation purposes in a game." } }, "c7ecc05315a247d39c1c49017338fcfa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden chest with metal accents, not a metal crate. The primary material is wood, which does not fit the requested class 'metal_crates'." } }, "c800a2ee71664377a4a7ba5b0a6eb43a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "c8dff60785ba43b3bcdde483d806d1f9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, which is not made of metal and does not fit the class description of 'metal_crates'." } }, "c97e6b791e3448348e63a89e3bc49c16": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate of good quality, suitable for the requested class and physics simulation." } }, "c9ed92c2050a4f6caced5892d6775dfa": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "ca25fc29172842c1b05eedec43666ddf": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate/container. The quality is good, and it's suitable for physics simulation." } }, "ca880d4e9a6d4ba893a6d9cdf5dd86e3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture is clearly wood grain." } }, "cab0ad733b60471b81536ca00a83b669": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a crate, which could be interpreted as a metal crate or storage crate, fitting the specified class. The quality is good, and it shows a single object suitable for game development and physics simulation." } }, "cb73084fbb9d401387ed1ba8aa8b2942": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class definition." } }, "cc46f64862634850be76c2d23490f119": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "ccafb16e849b4ee1af0471127610c410": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "ccd9102a8b404bfea71ca7576addcf32": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a crate with a metal frame, which fits within the broader definitions of 'metal crate', 'shipping crate', or 'storage crate'. The image quality is good and shows a single object suitable for physics simulation." } }, "ce0f406117424bbaabe062c17e8d6421": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it's suitable for physics simulation in a game environment." } }, "ce424b2adaef4a30affd3b67047726cd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate, which belongs to the specified class. The image quality is adequate, and the object is suitable for physics simulation in a game context." } }, "ceaece2b126f4e4da3cde91dfca3a35e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good and it is suitable for physics simulation." } }, "cfb621e11f9a4f5f9f55752daf1d6d95": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'metal_crates' class (specifically, a metal container or storage box). The image quality is good, and the object is suitable for physics simulation in a game environment." } }, "d018e9ed85fb4678b3e9ba3d1354738f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, albeit with a sci-fi design. The quality is good, and it's suitable for physics simulation in a game context." } }, "d04202740aeb4d528e3dbaa3d106f1bb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container, fitting the class description. The quality is good, and the object is suitable for physics simulation in a game environment." } }, "d0a335d156854aac847973ec14708dfd": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood material." } }, "d0a60a2fecc44598a6c4642a988c925a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal box/container. The quality is good, and it's suitable for physics simulation in a game." } }, "d0b1fcdb50aa4aa8bdb64b460e5398a6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The material does not match the requested class 'metal_crates'." } }, "d13e72515cb04404985095f149af783e": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or crate, suitable for the 'metal_crates' class. The quality is good and it represents a type of object often used in game physics simulations." } }, "d159eb02dba640109a41be31a2e18128": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The crate is primarily made of wood, not metal. While it has metal reinforcements, it does not fit the class 'metal_crates'." } }, "d1acfd4970924dea86e5d254cd219517": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows plastic crates (like milk crates), not metal crates as required by the class description." } }, "d25c31c0d4654606bbba59bf142f7417": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "d2a3aee1e9714ca680af207d150cb339": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or its details. The object is barely visible against the white background." } }, "d2a91216a3bc438eb15837894b448c32": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates as required by the class description." } }, "d331f79189704cd49ba013752f2b8d80": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates. The class specified is 'metal_crates'." } }, "d34b76983371465a92d0d9af162db51c": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a crate, but the low-resolution, pixelated style makes the material ambiguous. It does not clearly represent a metal crate and could easily be interpreted as wood or another material. This lack of clear material definition makes it unsuitable for the 'metal_crates' class, especially for physics simulation training." } }, "d45ac7fcc13c42b89756f6b4e4033674": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin side view of an object, making it impossible to identify as a metal crate or any related object. The texture also appears more like wood than metal." } }, "d45df95e06c748618424f8d7c5b0e529": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container. The quality is good, and it is suitable for physics simulation in a game." } }, "d49fa1098c274faea8fffe8744d2a5e1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a simple box, but the texture does not resemble metal. It looks more like wood or plastic, or is simply untextured. It does not clearly depict the 'metal_crates' class." } }, "d4fd095f607445d8a4efa137145744d3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'metal crate' or 'metal container' description. The quality is good, and it's suitable for physics simulation." } }, "d524be98711546f9b4512393e99c1ff3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a plastic Lego crate, not a metal crate as required by the class description." } }, "d5f82831026b4285ab0bf60da9b91fb9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "d774928d546144019d0103f9c63f3d19": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "d783cbc474fd42cbb8fd1b46ce28555b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects (crates), but the requirement is for images depicting only a single object." } }, "d891e65968f346d9b1980c69c2a1eed1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it very difficult to discern the object's details, material, or even its precise shape. The quality is too low for training data." } }, "d8c9437ef45b4908857a9579d68eece3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (three crates), while the requirement is for images depicting only a single object." } }, "d9580270cf2e404d91cf4bf3bb255823": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and does not clearly depict any object, making it impossible to determine if it belongs to the 'metal_crates' class." } }, "d95e99ae6f854d578cdf6c61b0a94695": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden crates, not metal crates. It also contains multiple objects (crates, fence, contents) rather than a single clean object." } }, "d98b915a30774027936d436c199af41d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal container (specifically an ammo box), which falls under the 'metal_crates' category. The image quality is good, and the object is suitable for physics simulation." } }, "d98deca6fc3341869fd6f86ba4813d29": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal container or storage crate. The quality is good, and it's suitable for physics simulation in a game." } }, "da03fee7919347fe8ab37c0b8c666544": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single crate-like object with a metallic frame. While the texture is stylized (spiderweb), it fits within the broad category of 'metal crate' or 'metal container' for game development purposes and adds diversity. The quality is good, and the object is suitable for physics simulation." } }, "da599568ca4743559607b4b62e697ce6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "da74b7f09e3243aca2aab707572efb6f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal crate/container of good quality, suitable for the class and physics simulation." } }, "da9bdecb502f4dd3a2b74d99ac03485f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows only a partial view of the object, making it difficult to identify it clearly as a metal crate or any related item. It looks like a fragment or an incomplete render." } }, "dac8e74d847745b4bbe8ccf2a22883be": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a metal crate or container. The quality is good, and it's suitable for the target class and physics simulation." } }, "dc653c6feea54f75929bc820a71dfef3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is clearly a wooden crate, not a metal crate as required by the class description." } }, "dd4b297789cc4034ac697f29a36f74e6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood grain." } }, "de9301b36ee44bcba697b84807a3f9fe": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a wooden crate, not a metal crate." } }, "df0511efc31b431daebe5825eefcc12d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The requested class is 'metal_crates'." } }, "df5fd0e719cb409698955384dab4a533": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object does not clearly resemble a metal crate or any of the related terms. It looks more like a futuristic device or machinery component." } }, "e031f782e34346c58661c087c8daf7f6": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cardboard box, not a metal crate. The material is incorrect for the requested class." } }, "e0613851ca1e4dadaf605d401c460771": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "e0720dafe15d4e7ab4f63d1e9619785f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metal shipping container, which falls under the specified class 'metal_crates' (specifically 'metal container', 'shipping crate', 'industrial container'). The image quality is good, and the object is isolated, making it suitable for training data and physics simulation." } }, "e0aee19073b6418b9d95636b3b660626": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a plastic crate, not a metal crate as required by the class definition." } }, "e12fde1101b84b6da40056336a7b309d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates as requested by the class description." } }, "e1a6856037c54d0d9019aedf61315569": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The target class is 'metal_crates'." } }, "e1df4005fa884e29ae1110784e713671": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "e2ad0b682eca4104abcafa2907cc74d3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the 'metal_crates' class (specifically a sci-fi style metal container/crate). The image quality is good, and the object is suitable for physics simulation in a game context." } }, "e2ea420d392a4ea79155b0077dbb9880": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a plastic or styrofoam food container, not a metal crate or related item." } }, "e3d28114b208463593282d6abdb7e6ea": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class description." } }, "e5ff4978225c46c6bbac1b886cea9d25": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture clearly indicates wood material." } }, "e5ffcfd769be4fbf961bd0ab21991ec8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate covered with a cloth, not a metal crate. It also contains an additional object (the cloth)." } }, "e6b85f49358e4d31b7a773b0dacae8b8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a simple cube, but the texture does not clearly resemble metal. It looks more like cardboard or a generic low-quality texture, making it difficult to definitively classify as a 'metal_crate'." } }, "e6bcb1a9fcf64568ab6fea17220126c8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows cardboard boxes, not metal crates. Also, it depicts multiple objects instead of a single one." } }, "e6c020aea0434ee884c5642464d16c39": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single metallic box, which falls under the requested class 'metal_crates' (specifically 'metallic box' or 'metal container'). The image quality is good, and the object is suitable for physics simulation in a game." } }, "e6ddf2c652904679afb4fb3a911341a5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single metal container/crate which fits the class description. The quality is good, and it's suitable for physics simulation in a game." } }, "e72e3e2abff04d02b33822b69362e22a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate. The texture and construction clearly indicate wood." } }, "e7af861512bb42d189bd38952651b538": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as specified by the class 'metal_crates'." } }, "e8b7b508c49f4030996fc161c45ea5d8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that fits the description of a metal crate or storage container. The quality is good, and it's suitable for physics simulation in a game." } }, "e9d9f75917494f71aa6da035bfd48bee": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any object, let alone a metal crate. The quality is extremely poor due to overexposure." } }, "eac1f95a64f5400ebf67d2129b1414d8": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted appears to be a wooden crate, not a metal crate. The texture resembles wood grain." } }, "ef167367572d45be919338101f2c6354": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "ef4a8cc61e3542809e9f91392507d5c5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that falls under the category of 'metal chest' or 'storage crate', which are included in the target class list. The quality is good, and it's suitable for physics simulation." } }, "ef9fc77f71c241188979deee34223922": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a cylindrical container with sci-fi elements, which does not strongly align with the typical appearance of a 'metal crate', 'steel box', or 'shipping crate'. It looks more like a futuristic canister or power cell." } }, "f02cdb76c0204dcc8654820f54b66c9b": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or industrial container. The quality is good, and it's suitable for physics simulation." } }, "f0596d78d9d24107a4401fd6ef1843c4": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows crates covered by a tarp and placed on a pallet. The crates themselves are not clearly visible, and it's uncertain if they are metal. Additionally, the image depicts multiple objects (crates, pallet, tarp, straps) rather than a single, clean depiction of a metal crate." } }, "f07344aa9ff949ca834209d343816d3a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates. The texture and construction clearly indicate wood, which does not match the required class 'metal_crates'." } }, "f0fb2b1176714579ba51c2a0b054ced5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "f2d4f12e33aa4b15898a20e75d588ec3": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "f322aea00b0346d6b3e2fff589144ab9": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be made of plastic, not metal. It resembles a plastic storage bin or tray rather than a metal crate or container." } }, "f43199f19c3142c68cc672db55d9a40d": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cardboard box, not a metal crate. The material is clearly cardboard, not metal." } }, "f472223f61ce44fa84f3a8b4aa4689ed": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate as required by the class definition." } }, "f52a672d12804ae7b8145a6f9fc28102": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate. The texture clearly shows wood grain." } }, "f58240b02f154d09b3f8d92023f78205": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be primarily made of wood with metal reinforcements, rather than being a fully metal crate as required by the class definition." } }, "f76dd90ef9924a3082ecab7460f5cc41": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class description." } }, "f8d4ea80e4204a63af6212def8601861": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden crates, not metal crates. The requested class is 'metal_crates'." } }, "f8daa77a55c14fabb71e606bba71e74a": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden crate, not a metal crate as required by the class definition." } }, "f9ec7019b72944058ba8597e75bbeafb": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pixelated character holding balloons, not a metal crate. The image quality is also very low and stylized, making it unsuitable." } }, "fb01473792a541b09cc0acc07ac3dbc1": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks detail, making it difficult to clearly identify the object or its material. It appears almost entirely white, which is not suitable for high-quality training data." } }, "fb53654ba855407c93da9f579d93e443": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for the 'metal_crates' class. The quality is good, and it's a relevant object for physics simulation in a game context." } }, "fc1adadc7ab14a8ca03a433cc301fcd5": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a crate, but it appears to be made of wood or plastic, not metal. It lacks the visual characteristics of a metal crate (e.g., metallic texture, rivets, paneling style)." } }, "fc84962a144a410e9fa11f84c80ad16f": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that fits the description of a metal crate or container, suitable for a video game context. The quality is good, and it's appropriate for physics simulation." } }, "fd06a84dcdf043f5a188cfd675208537": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class." } }, "fdace784dc054dc6be70a5fe6fef5b79": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate as required by the class definition." } }, "fee352aba19f4f7d88c534f7ea187517": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a wooden crate, not a metal crate as required by the class description." } }, "ff5c300efb5b45f296246eed2d1a1007": { "obj_class": "metal_crates", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden crate, not a metal crate as required by the class." } }, "008e06f99cb64b0bb31622ea18af2935": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dead tree branch, not a tree, ficus, or fern. It is not appropriate for the specified classes." } }, "00d889fc1b0a4dfaa2847fce94dffd1b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the 'tree' category. It is a single, clear object, and suitable for physics simulation (e.g., how it sways)." } }, "00feb57ff6234154a155da0c1d69331c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "01269c6a8b9341d280abdeeacbd98c4f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, suitable for physics simulation." } }, "01316ec16ea842c9a552dbe48fbd0568": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object. Therefore, it's not appropriate for the intended purpose." } }, "0145b29365d94680b12716168179fc8f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees, rocks, snow) and a background, which is not suitable for learning physics parameters of a single object." } }, "0216997f680248ea876a806b5fba7baa": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump and the surrounding ground. It does not cleanly depict a single tree object that would be suitable for physics simulation. The ground and other elements are distracting." } }, "035fd1e06ee1412d8a0d29755f742ebf": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "03b54df236e649daa15f8d955ca6d044": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree trunk, which falls under the 'tree' class. It's suitable for physics simulations involving tree swaying or impact." } }, "0530f0268ca94672a5e1f6da3b091c5b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree stump with a lot of surrounding debris. It doesn't cleanly depict a single object from the specified classes." } }, "0616de35aaa9494ea6e9b99f3f576aa3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is a suitable object for physics simulation in a video game." } }, "06fffbe7900d48dba177582fb31c03ef": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It is a single object, and suitable for physics simulation." } }, "07620356513a473ab4d07e2d0da95f8f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify a specific object from the given classes. It's difficult to determine if it's a tree, ficus, or fern with enough detail for physics simulation purposes." } }, "076b5b497cc94b40bfe177148e254e7c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we want. The image contains only the tree, and it's suitable for physics simulation." } }, "080854f1f4b64d69a66fd412d8c37d0d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we want. The image contains only the tree, so it is appropriate." } }, "080cf564597244a7b0161b40fab32371": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. It's a single object on a plain background, making it suitable for physics simulation." } }, "08d54891025d4fc6957bbb9ca9ed3050": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we are interested in. The image shows a single tree clearly, making it suitable for use in a physics simulation." } }, "09675fa16b1849829616a20c55cab66f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object. This violates the requirement of having only one object per image for physics simulation purposes." } }, "0983d8933531491f9be71c669e8a907b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The image only contains the tree, and it is suitable for physics simulation (e.g., swaying in the wind)." } }, "0a09060ef7b54987a1a448c4a1eed64b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree trunk without any branches or leaves. It's just a stump. It's not a complete tree and thus not suitable for physics simulation of a tree swaying in the wind." } }, "0a1ab706256c488d9133dacab6a1ec7d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees. We need images with only one object." } }, "0a44558064e44aabb2972803e0b0753a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rock, which is not in the specified classes of tree, ficus, or fern." } }, "0a8f81e4e533460c99cda9215794d129": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "0aa60d1a1e5d4965b0544b5bdee55cce": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts two objects that appear to be fused together. This makes it difficult to isolate a single object for physics simulation purposes." } }, "0b1b92d6d5584284b59aaab57b1009a1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is a single object and suitable for physics simulation." } }, "0b37f431365347db80e99a24e57e8c94": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pine tree branch, which falls under the 'tree' class. It's a single object and suitable for physics simulation." } }, "0c047f4b052142e292a726037f3f9c6a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is nearly blank and does not clearly depict any object." } }, "0c32a322258e42d5884f0b0fb98b1864": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the object classes we are interested in. It appears to be a single, isolated tree, making it suitable for physics simulation purposes." } }, "0ca5790e8b1445ee91b40c44245d7c38": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is also a single object, making it suitable for physics simulation." } }, "0db99cd3a57540e2b78da2e1ed727329": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It shows a single object in isolation against a white background, making it suitable for use in a physics simulation within a video game." } }, "0ff1465f83764428ad71e4c27af3cbf8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree on a rock formation, and the base is cut off in a boxy manner. This is not ideal for physics simulation as it's not a natural scene and includes other elements." } }, "102cabf0155243e094282c0cd74e79e0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single palm tree, which is a type of tree. It's suitable for physics simulation as it can be used to simulate swaying in the wind." } }, "1053b1f8eeed4ca4b17227ed399c1b8f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is one of the specified classes. It's suitable for physics simulation as it shows a tree that could sway in the wind or have objects dropped from it." } }, "1066cc5b342c4226a41f3221ce91f130": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of wood, not a tree, ficus, or fern. It is a processed product of a tree, and not the tree itself." } }, "10f422716d354af9ab33bc25e5574dc3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is an abstract representation of a tree, not a realistic depiction suitable for physics simulation in game development. The geometric shapes don't allow for accurate material and young modulus estimation." } }, "11db5146e947452db4cf3f56e0b86129": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree stump and other objects like stone and pathway. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "11fbf29cf48743abb02437a24fbe6d40": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "13645aac20424df992fdd0b76fc0fc37": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It appears to be a single object suitable for physics simulation (e.g., swaying in the wind)." } }, "13ffed56faa042a184149931939afb0a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a simple tree model, suitable for physics simulation in a video game." } }, "147428d048e64ecd95300e36cae3a07e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is suitable for physics simulation in a video game." } }, "14e39d8e7043497e890d4732cd2ac7c6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree in a pot. The pot is an additional object that is not part of the tree itself. We want images of single objects only." } }, "14fb5bc1aa0349e3aba4923d1a5accea": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we are interested in. The image shows a single tree clearly against a white background." } }, "161c0623834347baa75237e16b4ad330": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any of the specified objects (tree, ficus, fern, etc.). It's impossible to determine if it's suitable for physics simulation due to the lack of visible content." } }, "167c5c4b537b4cc89eaa2a6f74fe0aa9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the category of 'bonsai tree' and is suitable for physics simulation as a tree swaying in the wind." } }, "16b48b0be958453caa18e3469c0aa29a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It's suitable for physics simulations, such as swaying in the wind." } }, "16fbadc669454c26aa0927445b3c6ffd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in a video game." } }, "1710f5553283441ea2b041e4738314ec": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' class. It is a single object and suitable for physics simulation." } }, "17f64b52dbdf42f3a9b5c61cb4f1bdb0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which belongs to the specified classes. It is a single object and suitable for physics simulation." } }, "1838eb728be2452a8e4683c166e4c9b5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is one of the classes we are interested in. It is suitable for physics simulation." } }, "19ec2f4036cb4247abf4cf5294cb3467": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we are looking for. It clearly shows the object and is suitable for physics simulation." } }, "1a7ffd432c99499baccd432a9791d496": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single palm tree, which is a type of tree and is suitable for physics simulation in a video game." } }, "1a897071a50a4c95947a0384597a6924": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a bonsai tree in a pot. The pot is an additional object that we don't want." } }, "1aa60e1bc5d44dff9a51efb2dd5316c3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a stylized tree, which is suitable for physics simulation in a video game." } }, "1aaab4e7d4c64771a73c40aa7c24e462": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two tree stumps and a patch of ground. It does not clearly depict a single tree or other object from the specified classes." } }, "1b3fa8a0df7f4767a6b566aa0d36eaa6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the broader category of 'tree'. It's suitable for physics simulation as it shows a single object that can be used to simulate swaying in the wind." } }, "1b9e348fd260410a85f1f19fb18a2988": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot, which fits the class 'bonsai tree'. It is suitable for physics simulation as it can be used to simulate the tree swaying in the wind or being dropped." } }, "1c704c61519347719e30b5a0f121d81a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we want. It's a simplified model, but it's still clearly a tree and suitable for physics simulation." } }, "1cec07d259e943da90bfd6c7e1be2ce9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "1cec99d96a5043e1a6997e106d00c09a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of wood, which does not fall under any of the specified classes (tree, ficus, fern)." } }, "1dbdbb8bd6f445cf87efd1081f463066": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is a valid class. It's a single object and suitable for physics simulation." } }, "1fc7497d33324c98bd02a14e15f8a3b9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "200fbb44fd6e4ef18d9f8b7105ae89d5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which is suitable for physics simulation in a video game." } }, "20b3c53cd75443d2b47c8bffdf7d8982": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree against a plain background, suitable for physics simulation in game development." } }, "20f8a8d5054b4191afb7cf3270dbd586": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object suitable for physics simulation." } }, "2128328672f6410f9a37a4e0e08c9f8f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "213783903af8483ea8a8187d307447c9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It is a single object and suitable for physics simulation." } }, "216271a1857343b995678db4d3b3d7d2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we are interested in." } }, "21d92eb1b7e14908aeeb86856a7cb34a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bonsai tree, which is a miniature tree, but it is also part of a larger scene including a table and a cracked ground texture. The bonsai tree is not isolated, and the scene is not suitable for physics simulation of a single tree." } }, "2236a6ed98754cb7b45542fca3822872": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree, which is a valid object for physics simulation in a video game." } }, "22b89df35cb941c08210cd8dbb75e8eb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in video game development." } }, "230a40a979af4652a0218db05c912db7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pine tree, which is suitable for physics simulations like swaying in the wind." } }, "23a16e74154443d7b67149db31eee816": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we are interested in. The image clearly shows the tree and its roots, making it suitable for physics simulation." } }, "23b68a8ced7346e39faf0818483666bc": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump on a patch of ground. While the stump is part of a tree, it's not a full tree object. Also, the ground is included, which is not what we want." } }, "24a28ab7c7794778ba23ee8275c1febb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus in a pot. It is suitable for physics simulation as a tree swaying in the wind." } }, "26882c89c5e248eeabc8f7ef114b64b0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It's suitable for physics simulation (e.g., swaying in the wind)." } }, "26884c099c3c4c639c4a064376e6a49b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. The image is isolated on a white background, making it suitable for use in a physics simulation." } }, "27f8b5a471bd4459bdd8d11f791e01fb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple palm trees, not a single object." } }, "28328631321a45c89991c876eed07eec": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "There are two palm trees in the image and they are on a patch of sand. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "2884eeef3d324910b50d10061dd884ae": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the broader category of 'tree'. It is a single object on a plain background, making it suitable for use in a physics simulation to study parameters like swaying in the wind." } }, "28d7e578f73d442ca433a58854b41a69": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a log with moss, which doesn't clearly fall into the specified classes (tree, ficus, fern). While it's related to trees, it's not a tree itself, nor is it a ficus or fern. It also includes moss, which is not a single object." } }, "28db2fc0596348448f648e37cd13eb93": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It's a single object and suitable for physics simulation." } }, "296d973b8d804797b842d5eac701bb1d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree and other objects like rocks and grass. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "29abe7af4e694b81adf724df71e70ac2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree, but it is part of a larger scene with other trees and a building. We need images that depict a single object clearly." } }, "29bc5f131cf34977ad13ae226b74d346": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and lacks clarity. It's difficult to definitively identify it as a tree, ficus, or fern, making it unsuitable for physics simulation purposes in video game development." } }, "2aad745c9e2642419cca98429aab9d42": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single tree. This is not appropriate for learning physics parameters of a single object." } }, "2c0c7e5bfb104a4cb5ccae0cc6b0eb8d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a very abstract or incomplete representation of one of these objects. It's difficult to discern the object's features, making it unsuitable for learning physics parameters for simulation." } }, "2e28b75aaf43484cb16714cd9c3a6d91": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and indistinct to clearly identify any of the specified objects (tree, ficus, fern). The lack of clarity makes it unsuitable for use in a physics simulation where accurate object representation is needed." } }, "2e6950175eec48ecacbc3b47ce7626ff": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image appears to show a bonsai tree, but the rendering is very distorted and unclear. It's difficult to discern the shape and structure of the tree, making it unsuitable for physics simulation purposes." } }, "2ec7ccf413a841e2b51be9494a66c9df": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' category. It's a single object and suitable for physics simulation." } }, "2f4c3aa70baf48a3a214dc65f515c0ee": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It is a single object on a plain background, making it suitable for physics simulation in a video game." } }, "303a25bfbf05460390f469ede3319be9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a palm tree but also other objects like bottles and rocks. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "30e74d872e3645bbbe6a26c9292eb3a2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which is a type of tree. It is a single object and suitable for physics simulation." } }, "3179ffc777db4dc3a5e51a241848de84": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree, a bridge, and a waterfall, making it unsuitable as it doesn't depict a single object clearly." } }, "31a7ce1bd1854b47bf6bfa254213f900": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. It is a single object and suitable for physics simulation." } }, "320fe1e4ba8c442f84cb94e833935944": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot, which falls under the category of 'bonsai tree' and is therefore appropriate. It is a single, clear object." } }, "3296b31fcf084ec4a60dc539b0d86a81": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, specifically a palm tree. It's a single object and suitable for physics simulation." } }, "33110be314184563b81e4a4b7d44e819": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It is a single object and suitable for physics simulation (swaying in the wind)." } }, "33e22946bb5c4ae2b5fdc5def212c9b6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation in a video game." } }, "34f37f0db015421585cc7bfaaf57b3eb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we want. The image contains only the tree, and it's likely to be used in a physics simulation (e.g., swaying in the wind)." } }, "36541983bf84455786eff55780fba13f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The tree is isolated and on a white background, making it suitable for physics simulation." } }, "366f46ca0f4c4aa7a66545cb6f77f27e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is a valid class. The tree is isolated and suitable for physics simulation." } }, "36932cdf046d4988aaae50347e2065a7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It is a single object on a plain background, making it suitable for physics simulation." } }, "36a71eafb2104b369c04f86030ce91fb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it's difficult to clearly identify the object." } }, "36adf1780cc94bec8aaa3d854e28400b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "3837d4d05c064d21a16848518a8df516": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulations like swaying in the wind." } }, "390240fe08d042d38a2419147cab933b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree clearly, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "39c14b1d1d63467588ab6bd44a5525d0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a plant in a pot. While the plant itself might be a ficus, fern, it is not a single object. The pot is also part of the image." } }, "3a3adc8327ef4718a52a76ae18257d6a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it is a single object on a white background. It is suitable for physics simulation." } }, "3a6f50d6103c4047b8172de0c1d7f4af": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which is a type of tree and falls within the specified classes. It is a single object and suitable for physics simulation." } }, "3b584dccbf404ea787b25481da690db4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it's isolated against a white background, making it suitable for use in a physics simulation within a video game." } }, "3d9a9f41acc54e62bfcf207066cda282": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized fern model, which is not realistic enough for physics simulation. The model is made of flat planes with fern textures, which would not behave like a real fern in a physics simulation." } }, "3dbd40d5510745aea8f4f5d6bfe1f130": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two palm trees, not just one. We need images that depict only one object." } }, "3dc59560f2d24345bdbe65c44636453b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it's isolated on a white background, making it suitable for physics simulation in video game development." } }, "3e08f972eec346319c8d35a0e7584d6e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree, which falls under the 'tree' category. It is a single object clearly depicted, making it suitable for physics simulation in a video game." } }, "3eaadee08005473ca78174e0efae5da4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees and a patch of sand, which is not a single object. We need a single tree for physics simulation purposes." } }, "3eb7e9cfa57f44c7aac41faed87a77a4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "3ef00a7105c54d37b3a0e528e1466b0b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two trees, one with leaves and one without. It is not a single object." } }, "3f17f07cab954cde84499e8941742dc1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes specified. The image clearly shows the tree, and it is suitable for physics simulation." } }, "3f27e8c0879142f3b788381f50ff0727": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple palm trees, which are connected. We need images of single objects for physics simulation." } }, "3f39aa5485e94477a36b435f7a1a8b54": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "4009aa3704844d32ab6835f0d293709f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. The image shows a single object in isolation, making it suitable for learning physics parameters." } }, "40263ae7273d4e8bab5198276a3a375d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump on a patch of grass. The grass is an additional element that is not part of the tree, and the flowers on the stump are also distracting. The stump itself is not a tree." } }, "4065ce1f72ed4c9c9de14cd041bbaf58": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree stump, which is not the same as a tree, ficus, or fern. It's part of a tree, but not the whole object." } }, "4085b6fd22e3422fb8cd9674ec7d7abf": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is difficult to identify. It's not clear what kind of tree it is, and the image quality is poor." } }, "40ae149c73e64f3e8647083c6bfe3203": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not clearly a tree. It also includes ground and grass, making it unsuitable for physics simulation of a single tree." } }, "40cf5dc6c7854745a5e9c3615d076d06": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "415bf937db704f47b9776de6f15f69d7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. The image shows a single tree object against a plain background, making it suitable for physics simulation purposes." } }, "417ad544f8174c5e8e412b24ce306054": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object on a white background, making it suitable for physics simulation purposes in video game development." } }, "4187ffb271c84c58bea464ec3182a6a6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The image shows a single tree against a plain background, making it suitable for use in a physics simulation for video game development." } }, "41ba64e142c344279a3724d131c295c1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump with moss and leaves, which is not a single object belonging to the specified classes." } }, "4206ce4caeaf4ba1a1bdbb83f26cb4e3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we want." } }, "42a54553251b4c2bb2c174a904f64876": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation purposes." } }, "4332edd145da4b12ae33de6e95d1ea13": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two trees, and the task requires a single object per image for physics simulation purposes." } }, "4396681a4c784ef5bc63a3492e52b660": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree surrounded by rocks and flowers. It doesn't depict a single tree clearly, and the surrounding elements are distracting." } }, "43a94afe9fc849cc98574c80d94b2e5e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes specified. The tree is the primary object in the image." } }, "4474e6c1ad5046efaebb56a2ebe7e091": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is one of the classes we are looking for, and it is likely to be used in a physics simulation." } }, "450f43fee63e4b32b331ae00a9e56e44": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not representative of a full tree and therefore not suitable for physics simulations involving tree swaying or falling." } }, "45689792fda244e8a6880e2f58bc70bd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (logs, grass) on a patch of land, rather than a single, clear tree object suitable for physics simulation." } }, "45a74e13bdcb433fa77a24b7113c189d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "460c8f3034a844159826fac3b8aa35a5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pine tree, which falls under the 'tree' class and is suitable for physics simulation." } }, "46f75152650b46c8aa30f88a02e7e6c0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the category of 'tree' and is suitable for physics simulation in a video game." } }, "470499f5479f4c63b5ab8e02f0370375": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and doesn't clearly depict any object from the specified classes. It's difficult to discern any details of the object." } }, "479c6b90ff634dcbb13c629a5a85972b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is a valid object for physics simulation in a video game development. The tree is isolated and clearly visible." } }, "47e57de2e2ce4bbe8a6d06becf9d7fd9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree, although in a stylized, blocky form. It is a single object and suitable for physics simulation in a video game." } }, "481dec023faa4edd900784f7862e9e1a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a tree stump, not a full tree. The image shows a stump and some ground, which is more than just a single object. Also, the fact that it is a stump limits the physics simulation that can be done." } }, "48e40533d8764c2d956ab6bc5dd21c4d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a simplified tree, which falls under the specified classes. It's a single object and suitable for physics simulation." } }, "4a652944e6ae45e7a4c3c83b7849fe91": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object on a plain background, making it suitable for physics simulation." } }, "4a8a90b9883d46d0967052f4228fc2e5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object on a white background, suitable for physics simulation." } }, "4ab4f373ec7b449eab568275932e1d5f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not in the list of acceptable objects. Also, the object is not a tree, ficus or fern." } }, "4ac8c83ec7c5432eafd3235eb4faa93b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it is a single object on a plain background, making it suitable for use in a physics simulation within a video game." } }, "4b27adcf92f644bdabf8ecc6c5bef399": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we want. It is also likely to be used in a physics simulation." } }, "4c8bd896abda4ac68b5e17d022fa4670": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree, which falls under the 'tree' category. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "4d04ccf7bef7498abcd4bfd50533bba8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and the style is suitable for use in a video game. It's also a single object." } }, "4e7c7e2c2bdb48d491a786186ac792e4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes specified. It is a single object on a white background, making it suitable for physics simulation." } }, "4e94e5b04db64103bf4c6ae8739aaeec": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a ficus in a pot. The image clearly depicts the object class. The object is likely to be used in a physics simulation." } }, "4f78fea8200245209bfeac2d461b3f02": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "There are multiple trees in the image. We need only one tree per image." } }, "4fc2f0efee824d6190171e15474e74ed": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, purple object that does not clearly resemble any of the specified classes (tree, ficus, fern, or related objects). It is not a realistic depiction of a plant." } }, "50631fd00b6c4197b4ac331a21e6e976": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The tree is on fire, which is not a typical state for physics simulation." } }, "50c308517a7045e0b9df11e534e472ea": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to be a broken or fragmented representation of a palm tree, which makes it unsuitable for physics simulation purposes. The disconnected pieces would not accurately reflect the behavior of a real-world object." } }, "511fe20c46d54ee7a1cf1674c3f18114": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "51bb7f3e0e1249fcab1d11df054c7292": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, suitable for physics simulation in a video game." } }, "5219efa371084917a851c8aeeaba71c5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too small and blurry to clearly identify the object as a tree, ficus, or fern. It's difficult to determine if it's suitable for physics simulation based on this image." } }, "52d7a2ffb8604dddbc3f0e0fbe3f98c1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' class and is suitable for physics simulation in a video game." } }, "532fd063790541a58905dbfe09898059": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' category. It is a single object and suitable for physics simulation." } }, "540ff1b0818a444c84b8e23eb6d578f4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to confidently identify the object as a tree, ficus, or fern. It's difficult to discern the object's shape and characteristics, making it unsuitable for use in a physics simulation or video game development." } }, "542f5595a1444a419b9103663b8b5a2f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "547548c8003a479a971727aace7d50bd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot, which falls under the category of 'bonsai tree', a subclass of 'tree'. It is a single object and can be used for physics simulation, such as swaying in the wind." } }, "54c38fc5f1ab4edf9d2499d7304a1c51": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree-like object, which falls under the specified classes. It is a single object on a white background, suitable for physics simulation." } }, "556752eb551d4ee7b342092c3bd3ed5e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which is a type of tree. It is a single object on a white background, suitable for physics simulation." } }, "55690379305145488e20afb05fc687e6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree-like plant, which could be used for physics simulation." } }, "5681ec20122043cc9543b4a33afa32a6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict the object class." } }, "56a3de000fb64537adeb2d8dac348b7a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "58498c4c22d64948b97453e3f1781623": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pine tree, and it is suitable for physics simulation in a video game." } }, "585fb6e03ffe490bbfa8efc9b26cc7d3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It is a single object on a plain background, making it suitable for physics simulation in a video game." } }, "58cd53de211e4a97b6172c43b82aafca": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two palm trees, not a single tree. We need images with only one object for physics simulation." } }, "58f448209beb43659e95ca0e1ad59ac2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation." } }, "594e8b9d51024e06b970ebe0d7cf5ace": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It is isolated and suitable for physics simulation." } }, "59f558b807774317acd8f1e87e9a613d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a tree, which is one of the classes we are looking for. It's isolated and suitable for physics simulation." } }, "5a90748a174b42ec8d31ebd12c8089cd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. The tree is isolated and suitable for physics simulation." } }, "5b95e29388e74e549f350927e4f4a5fb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we want. The tree is isolated and suitable for physics simulation." } }, "5d025bda189a44999a1c146d773c98e5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It's a single object and suitable for physics simulation." } }, "5d60c5b0b4cc4d6385dca9a4a6f68459": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It looks like a small part of a tree trunk with some branches, but is not representative of the whole object." } }, "5d861e5d40e74f7589c07921db55179e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. It is a single object on a white background, making it suitable for physics simulation in a video game." } }, "5ddfc1bb3c8a44eda940ada1b7a98bbe": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a tree, but also other objects like rocks and mushrooms. We only want images that depict one single object." } }, "5de4bf05101e49ca8842e9b21e65fc07": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single palm tree, which falls under the 'tree' class. It's suitable for physics simulations involving trees swaying in the wind or objects falling from them." } }, "5ec1e157943d461cbb858d2957df0bca": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of vegetation or ground cover rather than a single, distinct tree, ficus, or fern. It's difficult to isolate a single object for physics simulation." } }, "5eea036525ee4ecca7f575f01573b6c6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree. It is a simplified model, but it is still recognizable as a tree. It is appropriate for use in a physics simulation." } }, "5f540e89fe73437f859fafe0269a1eee": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we are looking for. The image is clean and the object is clearly visible." } }, "60b069186ba346148d2ff11e07dacabe": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object." } }, "60bf40c9dd1a4f7cac3e608dda856797": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot, which falls under the 'tree' or 'bonsai tree' category. It is a single object clearly depicted and suitable for physics simulation (e.g., swaying in the wind)." } }, "6125c5ec76454b778bee37b562ec299c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree against a plain background, making it suitable for physics simulations in a video game." } }, "615fbc82493c49569dab81a7b7e535e5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is a single object and suitable for physics simulation." } }, "6278f2e20c3d4db1b80d311a65f90771": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "641663ec393a44e7a17f8d07f887a56b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, isolated against a white background. This makes it suitable for use in a physics simulation within a video game development context." } }, "642f4b9e8e58461ba208b071cde0306b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It is a single object on a plain background, making it suitable for physics simulation." } }, "6468dd4d3eb240ef902b9057d9913606": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game development context." } }, "660fce6c94b647d4b81c9d9d6e8df89c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not just one single tree. Therefore, it's not appropriate." } }, "671f98d889664528b335131f5fe7a36d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is one of the classes we need. It is suitable for physics simulation." } }, "6778f9c83db04afc9f3a45ef348cbe69": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object on a plain background, making it suitable for physics simulation purposes." } }, "68890d1e814c4d329056ef79221e542b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a plant in a pot. We only want to simulate the physics of the plant itself, not the pot. The pot is an extra object that we don't want." } }, "68f519af77cb4a018903af69d38aed0b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree trunk, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., being knocked over)." } }, "6954be8532d042e4b1bcf9b5ce867a41": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not a complete tree. It's not ideal for physics simulation of a full tree swaying in the wind." } }, "69fed9e43a324d529da20391cfcd42ae": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It is a single object on a plain background, making it suitable for physics simulation purposes." } }, "6a1d449fc3664aa88eb1b029c13753b8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a palm tree, which is a type of tree. The image depicts a single object." } }, "6a8cb8febb2a4f83b898b67af2e90de4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a small tree, which falls under the specified classes (tree). It is a single object and suitable for physics simulation in a video game." } }, "6b6d548489fb4e4ea4f4407cd67fc38a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and is not clear enough to depict a single tree, ficus, or fern for physics simulation purposes." } }, "6b85ed2cb6144f9683d3cc0082e88b59": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object on a white background, making it suitable for physics simulation in a video game." } }, "6c596d4854f64bd9b0032ca8711d86ba": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is a valid class. It is a single object on a white background, suitable for physics simulation." } }, "6ce05ea72c2044979e700687143d00e6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the target classes. It is a single object on a plain background, suitable for physics simulation." } }, "6ce23a5fad3c443d86c509bc98be5ad3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which is a type of tree and is acceptable for physics simulation." } }, "6d4efe0898a44b86b28e7cff3cedbbd8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a bonsai tree in a pot with rocks. This is more than just the tree itself, and the pot and rocks are not part of the object class. It is also a low-poly model, which might not be suitable for physics simulation." } }, "6d73cc3fcbad4f5d83a52ccfa7f61e87": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is a single object and suitable for physics simulation." } }, "6dee62a996e54c39b7059b62cd6a87d3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It is a single object and suitable for physics simulation." } }, "6e64d8e273f1487f999fa6f109d71f04": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree trunk with some branches. It is a simple object and suitable for physics simulation (e.g., breaking or falling)." } }, "6eec687cce244bfc87a6f2492844acd3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too poor to clearly identify the object. It appears to be a tree or fern, but the details are not discernible." } }, "6fd6f1a8a9844bc5b0b9e32755afde5e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the objects are abstract and not representative of real-world trees or ferns for physics simulation." } }, "7016d1d32fe748f0a8b3f5eb39374bc4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it is isolated on a white background, making it suitable for use in a physics simulation for a video game." } }, "70175d09b5fe46f0b0570305e16e396d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "702f01295e354212b263eb4ead90850b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree against a white background, making it suitable for use in a physics simulation within a video game." } }, "7070e89f7f654ee18af88252fe07532e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It is suitable for physics simulation." } }, "713544d91d5e43ad85a3551ee572262f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. It is a single object and suitable for physics simulation." } }, "7199d75a7147484187c30b0c7b1ae680": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bonsai tree, which falls under the 'bonsai tree' category. It is a single object and suitable for physics simulation." } }, "71d89586abde4201bc2fa1821ddb7596": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is a valid class for the video game development project. The tree is isolated and suitable for physics simulation." } }, "74470210547545d1b05804bb35fa3148": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a part of a tree, not a whole tree. It's difficult to determine the type of tree from this image and it's not suitable for physics simulation." } }, "747c49f2ca7f4aefa58bd99eb836f6a6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a tree stump, not a whole tree. It also includes grass. Therefore, it's not suitable for the physics simulation of a tree swaying in the wind." } }, "74d82855748b4806a34716b9ea67f42e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which is a type of tree and suitable for physics simulation in a video game." } }, "74d94b3cf90b404089c684f2371bfa46": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a building and ground, and only partially depicts trees. It does not clearly depict a single object from the specified classes." } }, "7534f7fd4402416c85aa57c7993ca003": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including a table and two plants. We want images of single objects." } }, "75480b1e692143a3863680d14a839d27": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a simplified model, but suitable for physics simulation in a video game." } }, "757229e442144bdfa17c084e7fb1c873": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump with vegetation growing on it, not a whole tree. It doesn't clearly depict a single object from the specified classes (tree, ficus, fern) in a way suitable for physics simulation." } }, "75cc74ae4db04a97bd15e229173f8dbd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation as trees swaying in the wind are common phenomena." } }, "7603a920f9c542b2babcad8fa1f8a43e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It is suitable for use in a physics simulation in a video game." } }, "765fffec27ab40a29fe5d28fdd650480": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image is blurry and the object is not clearly depicted." } }, "768aa1a4d15a4c818ca2b0119024ac22": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not just one. It depicts several trees and other plants, making it unsuitable for learning physics parameters of a single object." } }, "76c9f546d9a84437a495071c9fd1ef78": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, suitable for physics simulation." } }, "76ecd4de4d1e4c52ba8ed935ee33cee9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single one." } }, "7751ffd2007c4b11bf45c5312a4859cb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image doesn't clearly depict any of the specified object classes (tree, ficus, fern). It's an abstract shape with no clear resemblance to a tree, ficus, or fern." } }, "77f1c4c0beb8457ca017ba7c57200cf0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and the object is not clearly visible, making it difficult to determine if it belongs to the specified classes. It's hard to tell what the object is, so it's not suitable for physics simulation." } }, "78ea12b76afb43edba15babbb68832da": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. The image contains only the tree object, making it suitable for use in a physics simulation." } }, "790840889ff942779177152737e23f55": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, making it suitable for physics simulation in a video game." } }, "792d9db6d80a4a8f9a57b6f9a5c743e8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree stump on a wooden platform. The platform is not part of the tree and it is not one of the objects that we want to include in the video game development." } }, "798d2540be1c468f892d6890f28acda7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game. It belongs to the tree class." } }, "7a6940af81cd4263814aa35033710f69": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and it's difficult to discern the object clearly. It's hard to tell if it's a tree or something else." } }, "7a90001da02448f1996cd78cbc629542": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building and some scattered objects, not a tree, ficus, or fern. It's not suitable for learning physics parameters of those plant classes." } }, "7abb385ee43343ab89bc7789d8afe1b1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes of interest. It is a single object and suitable for physics simulation." } }, "7b9e72437df3442180548e4ec7bd067f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single object." } }, "7c0117146d6b4dca9fa7bbd9213e1bb8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It shows a gray, square object that is not related to the specified classes." } }, "7c6da38d3b9f43218398130372954133": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' category. It is a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "7da3f712ae544ff28d3b16d5ddedaeea": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree covered in snow, which complicates the physics simulation. The snow adds an extra layer of material and interaction that is not ideal for learning the tree's basic physical parameters." } }, "7f5c224dc4b7476d96ee8e46c66653c9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "802cf32e67444377a710915b5ad12db2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees and a base, not a single tree object. It's not suitable for physics simulation of a single tree." } }, "8036c969bd13427f8c0b56b1ca0ccc74": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to be a distorted checkerboard pattern and does not represent any of the specified classes (tree, ficus, fern, or related objects). It's not suitable for physics simulation of natural objects." } }, "808ceaac8d024238b8db7d1b38ed9311": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple palm trees, not a single object. This makes it unsuitable for learning physics parameters of a single object." } }, "80c598ac734c43cfa5282256d9151179": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and it's very difficult to discern any object. It's impossible to tell if it depicts a tree, ficus, or fern." } }, "817454e6ca9142f1a5d2a96bbccd1973": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, not a full tree. It also includes a patch of ground, which is undesirable." } }, "81e98f9d76234dc2a5aed9a23d8d13a6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "827589f03abe4e83affb6c27298461c5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus. It is a single object and suitable for physics simulation." } }, "82869e95f75b44049a2975c44509f455": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees and other objects, not just a single tree in isolation." } }, "830745f712104f8eb9e910b0d6e5ea42": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus in a pot, which is acceptable as it's a common way to find the plant." } }, "832223503eca4d41b76b711582a8e312": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "841e4bf52bff40eda5c08e567361ae16": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The image is also suitable for physics simulation as it shows a single object." } }, "84b3db5970b64ef688024cee869be7ba": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot with some strange red artifacts. The artifacts make it difficult to discern the shape and structure of the tree, making it unsuitable for physics simulation purposes." } }, "84c6b01d57a04c268d97a881541e19bc": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and it is hard to identify the object." } }, "8504a3e420b64624928789358cab6694": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and it's difficult to discern what the object is. It's not clear enough to be used for physics simulation purposes." } }, "857630ff81604f00b7dd758af88fb13f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot, which falls under the class of 'bonsai tree'. It is a single object and suitable for physics simulation." } }, "85770f3c938b400090b4eee95f592279": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "85a06b2cfe434a4ebed80d932090a75c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which is a valid object for physics simulation (e.g., swaying in the wind). It is also a single, well-defined object." } }, "85eb96f527f04d72b537ce778bbfd837": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which belongs to the specified class. It is suitable for use in a physics simulation." } }, "8616ec7b80c54baab6616d92e6dae2eb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation." } }, "86ac4985deb6419daac68f1cc6c5e264": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object and suitable for physics simulation." } }, "8780262365a242bbb9a16b85bd15215d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which is an acceptable object for the class 'tree' and can be used for physics simulation." } }, "87c06037bdd8451b80f3e69e90182f67": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. The tree is isolated and suitable for physics simulation." } }, "8838b9058e7b47378eb319c9c6fcab17": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in a video game." } }, "894c6b8346cf4c14827ff4490fc56aa3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot, which falls under the 'bonsai tree' category. It is a single, clearly defined object, making it suitable for physics simulation in a video game." } }, "8abf9007023443a992f3c2c68ac4e354": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a tree in a pot. The pot is not part of the tree and we only want the tree." } }, "8b73fd97545b468288cd9ba03c93d358": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree clearly, which falls under the 'tree' class. It's a single object and suitable for physics simulation." } }, "8cab2b42f2844cb1b0a66d51839a150c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes (tree, ficus, fern) and it is a single object suitable for physics simulation." } }, "8dd74333efc548888080e57812cd591e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It is a single object on a white background, making it suitable for physics simulation in a video game." } }, "8df63e28d58f4f66afc2597af40d7df1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is a single object and suitable for physics simulation." } }, "8e06537d3c8d4705a248c7603b8c910d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "8ffb084d2bfa4cb18f9306865b4a5fd2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which belongs to the specified class. It is suitable for physics simulation." } }, "9039ae20f9fa494fa26933fc913059b4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two tree stumps on grass, not a single tree, ficus, or fern." } }, "904a59bc12ad4cd9b095dc4c4edebfbf": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is very unclear and it is impossible to identify any object from the provided classes." } }, "905b154f33a94022b56f58f474c234cd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pine tree, which falls under the 'tree' class. It's suitable for physics simulations like swaying in the wind." } }, "90b4428274e84781aeac314e745764b1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The tree is isolated on a white background, making it suitable for physics simulation in a video game." } }, "90c33f66fb0c46429ec1d41ec58a718f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized tree with a house built into it, which is not a standard tree and includes additional structures, making it unsuitable for physics simulation of a tree alone." } }, "919594a840304c24b7590b7556b389fa": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too unclear to identify any of the specified objects (tree, ficus, fern). It appears to be a blurry, indistinct shape." } }, "930d4b7ae8ae439f9e8b62a0828fe7a5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree trunk that has been cut off. The image is not a full tree, and it is not clear what kind of tree it is. Therefore, it is not appropriate for the video game development." } }, "93180555694741adb121faa7a0d6f27f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image has a large black shape in the middle of the tree, which obscures the object. This makes it unsuitable for physics simulation." } }, "93818c926cc04e709f157bde2c1c29b1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a potted plant, which includes the pot and pebbles in addition to the plant itself. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "94eb3b961bf34c3699c1e23172d001b3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' category. The bonsai is presented in a way that its physics could be simulated (e.g., swaying). The presence of the pot is acceptable in this case, as it's part of the object." } }, "95cd1a77789241ee82a960bad5dfe809": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the specified classes (tree). It is also suitable for physics simulation." } }, "962336c39bcd436886ba836deb7af622": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "97cda1124f2b4acd94883b083b8885e5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "986186d39891485b9e3dc1a07fba49de": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two tree stumps, not a single tree, ficus, or fern. It doesn't fit the requirement of depicting only one object from the specified classes." } }, "990aca17a9af487082f84f597b0534ec": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a stylized fern or ficus plant, which falls under the specified classes. It is a single object and suitable for physics simulation." } }, "99de823d29fc400d8128b06159ff9213": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the category of 'tree'. It is a single object and suitable for physics simulation." } }, "9ac83e528983468997539acd332e2ae4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify the object. It's difficult to determine if it's a tree or any other object from the provided classes." } }, "9be3d6a54a7f4aeb90f70c9c7c37d6ec": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree stump with roots and surrounding vegetation. It doesn't clearly depict a single tree, ficus, or fern, and the presence of other elements makes it unsuitable for physics simulation focusing on a single object." } }, "9dfbe65769c840a0ab366c67d8e6762d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree clearly, which is suitable for physics simulation in video game development." } }, "9e1f7c39fd904eb88047e4c23979f363": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "9ee8869c5c814f388ea43b096eaa0d39": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it is a single object. It is suitable for physics simulation." } }, "9f3087254b5043269facf2119a841ae2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's also a single object, making it suitable for physics simulation." } }, "9f44418529af4b699a1d65f6a7494504": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two trees, not a single one." } }, "9f92ce594fa84c259a54d429f4bb10a3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is mostly white and doesn't clearly depict any of the specified objects (tree, ficus, fern, etc.). It's difficult to identify any object in the image." } }, "a0acb397930348a99ee52fe6e0ceb60c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' category. It is suitable for physics simulation as it shows the tree structure." } }, "a2c31e3b73ca4be99a894a33570cd748": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single, stylized tree on a plain background, suitable for physics simulation in a video game." } }, "a308b61e6b824a88b5e70aa4120cb941": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the objects are not clearly identifiable as any of the specified classes (tree, ficus, fern)." } }, "a328a73414794960aecb75d8f7a73b12": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation in a video game." } }, "a3a0a6b439a648de82a014722a41fd78": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is a single object and suitable for physics simulation." } }, "a3bd85d0c8fa49e6a1b2c93334174ca5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. It's a single object on a white background, making it suitable for physics simulation in a video game." } }, "a4d31e19082b4b658b581a2cd05b63fb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree trunk, which falls under the 'tree' class. It's a single object clearly depicted, and suitable for physics simulation (e.g., breaking or falling)." } }, "a4ef9b27780948bf9e4e4b33f0f12397": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree clearly, which is one of the classes we want." } }, "a60836bb2fc24d65952c579fc2f2e82d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree trunk, which falls under the 'tree' class. It is suitable for physics simulation as it represents a solid object with material properties." } }, "a6bb899429824289bcd426380d39c79e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two palm trees, not a single object. I need to reject it." } }, "a6cb17b168e14f12beca371a2ab801d0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It is isolated and suitable for physics simulation." } }, "a6df03874e4c4b68b898f2db14a018e6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a palm tree on an island surrounded by water. It does not depict a single object clearly, which is required for learning physics parameters." } }, "a6f3c63fa25642a38e33e4ba7ce4d37d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains two trees, not a single object. The image should contain only one object for physics simulation purposes." } }, "a751257cb0a5465e94d8bd9d13e2b1e8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, but the rendering quality is poor and the tree appears to have artifacts or glitches. This would not be suitable for physics simulations in video game development." } }, "a758b0cb140e4d53abd83bc571416204": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it is isolated on a white background. It is suitable for physics simulation." } }, "a89325fd68a3440bb7649ec5c41e8a2c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a coat rack, which is not a tree, ficus, or fern." } }, "a987896c6f8a43ee9e13830ba90c89c8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not in the list of target classes." } }, "aa0cf168594e48f3af3883f86c5498a0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in a video game." } }, "aa842dffd9654d33b8b91170ce83c172": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object on a plain background, suitable for physics simulation learning." } }, "aaa60ef3caf1445989f022f76d47ca77": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is one of the classes we are interested in. It is also likely to be used in a physics simulation." } }, "aac54be38a144e1eaf9c31a5987210f1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a fern, and it is suitable for use in a physics simulation." } }, "ab2374e85de04dc392d7e442f743ecca": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "There are multiple tree models in the image. We only want one tree per image." } }, "ab68f25f80df412d84a6f22a08e917b4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree or any of the specified classes. It looks like a stack of disks in the shape of a tree, but it's not realistic enough for physics simulation purposes." } }, "ab9ba329506f4f1ab24993a8d7c49ba2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bonsai tree, which belongs to the class 'bonsai tree'. It is a single object and suitable for physics simulation." } }, "ac49069a6d064b9bb05213fddf7bb516": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the classes we want. It's a single object clearly depicted, making it suitable for physics simulation." } }, "acf8f4d156054c2ca1abff5f1c7c530d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which falls under the specified classes. It's a single object and suitable for physics simulation." } }, "ad714e98ee644a31bbbae2f80d859bf4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a potted plant on a table. The table is considered as an extra object. Therefore, I reject the image." } }, "aeb9fa13cbbd4c0ba0b9f7762b7781cb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "aeec750e71844cd294aa5320c44fbaaa": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too unclear and difficult to identify the object. It also has a strange color scheme which makes it inappropriate for the video game development." } }, "af0c9af124934fe49eaf74b1f60da117": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, specifically a pine tree or evergreen, which falls under the specified classes. It's a single object on a plain background, suitable for physics simulation." } }, "af2dbab0e8644e83b1b1662d223d0e3a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a tree which is one of the classes we want to include. The image depicts a single object and is suitable for physics simulation." } }, "afd58d267c484f508a88bd8a9006a6a2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' category. It is suitable for physics simulation as it shows the entire tree structure." } }, "b122940f6946469ea8d74026911f283e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single evergreen tree, which falls under the 'tree' category. It's suitable for physics simulations like swaying in the wind." } }, "b170ffe0026c4f5f8477ad0e28432a73": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a dead tree on a patch of land. The land is not part of the object and therefore is not appropriate." } }, "b1a4c54ed0b9400fbd13726ceea0c012": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which is a type of tree. It is a single object and clearly depicted, making it suitable for physics simulation in a video game." } }, "b1be7a5cd83e41aba1ff8bcdf8c26ad3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree clearly and cleanly, which is a type of tree. It is suitable for physics simulation." } }, "b2a228722cdd480ab696129713fc3f24": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bonsai tree in a pot. The pot is an additional object that is not part of the tree itself. We are looking for images that depict only the tree. Therefore, the image is not appropriate." } }, "b2c3fbedd2ba4b33b685c225dafa58b8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is one of the classes we are interested in. It is suitable for physics simulations." } }, "b3efcfe9a17348a5aed9fde7ea2697ae": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree trunk, which falls under the 'tree' class. It is a single object and suitable for physics simulations." } }, "b436ce3bd3f74b42a9294e6ddd6712f9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor and the object is not clearly identifiable. It's difficult to determine if it belongs to any of the specified classes (tree, ficus, fern)." } }, "b440c0c4a11c4b46a2e2281872bc9dba": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree. It appears to be an abstract representation of a tree trunk and leaves, rather than a realistic depiction suitable for physics simulation." } }, "b45a95ca0dfd4e5e98b4530cb6b7559d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and does not clearly depict a single tree, ficus, or fern. It shows a collection of sticks and other debris on what appears to be a surface." } }, "b49a082a0e3947168a16d2143a9ba46d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees and a ground plane, not a single object in isolation." } }, "b52ecdfc5f6b44c9a5938253eba7d1c6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bonsai tree in a pot with a stand. The stand is not part of the tree and we only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "b5e945e7abcc471da6547c04e314774c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It shows a single tree against a white background, making it suitable for use in a physics simulation." } }, "b6ff2cbba0f4414cba491dbdcd4b8f8a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the specified classes. The image shows a single object clearly, and it is likely to be used in a physics simulation (e.g., tree swaying in the wind)." } }, "b7763f8c2ff24505ba7ea7e2290a07a9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree trunk without the tree top, which is not a complete tree. It's unlikely to be used in a physics simulation where the whole tree swaying in the wind is needed." } }, "b831f699de284f4b9b2a30485c2b8b75": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree stump, not a full tree. It's not suitable for simulating the swaying of a tree in the wind." } }, "b87d99025ff64039bffffaf9fbb7c3b4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' class. It's a single, well-defined object suitable for physics simulation." } }, "b88bd1e0b1a54f728eacfbefb51f4517": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we need. It's a single object and suitable for physics simulation." } }, "b88cbf315f2449aea533598f20da62b7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree clearly and is suitable for physics simulation." } }, "b93f5eb5b0884d5fac834fb8920ee67f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulations in a video game." } }, "b9922dd105ee4536b9ca983c26f58e66": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which is an acceptable object for physics simulation in a video game." } }, "ba43fd949d4a4d449f51cb653df14ab0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are looking for. It is a single object and suitable for physics simulation." } }, "bb14c2bb679b4d0bb1c578a27e2ddabf": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It is a single object on a white background, making it suitable for use in a physics simulation." } }, "bb7c88a31eb342978f8339784221b988": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree trunk, which falls under the 'tree' class and could be used in physics simulations." } }, "bc826f1f48e744438cb9a37394507967": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation in a video game." } }, "bd7503a48e4546babf004da9dbb11318": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern-like tree, which falls under the specified classes. It is a single object on a white background, making it suitable for physics simulation in a video game." } }, "be3206d634a14d2a9e20bbfe42cac919": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree clearly and cleanly, suitable for physics simulation." } }, "be65b876e67e48e7a2085101c4d788ec": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus in a pot, which falls under the specified classes and is suitable for physics simulation." } }, "beab28462a14499ebaf3ea88926da55e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is one of the specified classes. It is suitable for physics simulation." } }, "beeda9a5ed134aa69d235174fa22f769": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree trunk with some foliage around it, but it's also embedded in a structure with a stone base and what appears to be a bench or planter. The presence of these additional elements makes it unsuitable for physics simulations focused solely on the tree itself." } }, "c017d0fb746d4cc48748cca76ad1efad": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, fitting the class requirements. It's also a single object, making it suitable for physics simulation." } }, "c055bd61f2094990a96483f7d9fa53ef": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which belongs to the specified classes. The tree is isolated and suitable for physics simulation." } }, "c086dde8a3c040e48a7266ab43adb0a0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "c2113de2539744209e36d1f6d42c0431": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in video game development." } }, "c238dad36a894ba390b8f81d4fb8a9a7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is one of the specified classes. It is a single object and the image is clear." } }, "c25e5fc2bfa54d24a165a8a207c0a6d7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The tree is isolated on a white background, making it suitable for use in a physics simulation." } }, "c375bcc2386f4bc896e3d4cec0d24577": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "c43defd47afa493a94a7178354f08c9c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object and suitable for physics simulation." } }, "c4cdb64b9ca24334a40554ef6e68954d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus or bonsai tree, which falls under the specified classes. It's a single object and suitable for physics simulation." } }, "c51100de7bb84e6882f92c9b6ab4b62f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, and the objects are not clearly depicted. The objects look like stacked cards with vegetation on them, which is not suitable for physics simulation of a tree." } }, "c520a0429a024f18a69342ce79acd5d5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fern, and the image is clear enough to be used for physics simulation." } }, "c529315762d04ae5878daddf1cd5489c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict a tree, ficus, or fern. The quality is not sufficient for physics simulation purposes." } }, "c533835c126d4b9f95ed8dc114f86747": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree in a pot, which means there are two objects in the image: a tree and a pot. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "c6d09d7afd4b42dc9d5192ab625cd7ea": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "c7250910b05b4f19bb261ab637bc8154": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree trunk, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., breaking, falling)." } }, "c7ba61f09ec94b75b401cd460a2b369e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is one of the classes we need. It is suitable for physics simulation in a video game." } }, "c7de0bf235f546d4b710fc020bd2e452": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree, which falls under the broader category of 'tree'. The image shows a single object clearly, making it suitable for physics simulation in a video game." } }, "c803f1ee3a6542319b2509b372f0b1fe": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, suitable for physics simulation in a video game." } }, "c88ebbd64c98400f8302cc07c3f723b0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree trunk with branches, which falls under the 'tree' class. It's a single object and suitable for physics simulation in a video game." } }, "c9f737c587494bc1845a255ffc617738": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree on a patch of land with rocks. This is more than just the tree object, and the additional elements are not desirable for a physics simulation focused on the tree itself." } }, "ca465fc3717b4b968bfa00aac37339ba": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (two trees and water), not just a single tree. This makes it unsuitable for learning physics parameters of a single tree." } }, "caaa6319661c46beaecba213650e9447": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the objects are not clearly defined. It's difficult to identify a single tree, ficus, or fern." } }, "cad3628350404a31b9ddcd87e4651d37": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The object is not clearly identifiable as a tree, ficus, or fern. The shape is too abstract and doesn't resemble a typical representation of these objects for physics simulation purposes." } }, "caf081828df84d7cbb07b4107991facc": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's isolated and suitable for physics simulation." } }, "cbdce27aba854828a39570258fac8743": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple trees, not a single object. We want to simulate the physics of a single object." } }, "cc418ac250234c92b3c6e21c3b636acd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and indistinct to clearly identify any of the specified objects (tree, ficus, fern). It's mostly white with a vague shape, making it unsuitable for use in a physics simulation or video game development." } }, "ccf0735ed07b4250b17e812f7b6c5982": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree stump surrounded by leaves and rocks. It doesn't depict a single tree clearly, and the surrounding environment is also present. This makes it unsuitable for physics simulation where we want to focus on the tree itself." } }, "ce0553b3626d47c79bf4690c46e5acb9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class and is suitable for physics simulation in a video game." } }, "ce1770158f2642c0bce7630a32e8f13a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree clearly and cleanly, making it suitable for use in a physics simulation within a video game." } }, "cf114cd2c534475c9e795f42be66c14c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "cf19f27d4ab24b05a1a89b36308362a4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is not a clear depiction of a tree. It looks like a poorly rendered 3D model or a broken tree trunk with unclear surrounding details. It's not suitable for physics simulation." } }, "cf3d76cd1f52461e928ef9a66aa69df5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree in a pot. While a bonsai tree is a type of tree, the pot is an additional element that is not part of the tree itself. Therefore, the image is not suitable for use in a physics simulation where we want to simulate the physics of a single object." } }, "cf6e9fe9fde34b799b8d392670824e18": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. The geometric shapes make it difficult to identify the object as belonging to any of the specified classes." } }, "cfc5aafb52074563ad9aa839aef9de5d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which is a type of tree and is suitable for physics simulation." } }, "d00ce07297214d66adbeddbffef32533": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and they are not clearly depicted." } }, "d0161434cf6844a8bc6eaeb0c0692ed0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern, which is a valid class. It is a single object and suitable for physics simulation." } }, "d05a4d3312554c6d97bdf0788ea61012": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump along with grass and a path. It's not a single, clear depiction of a tree suitable for physics simulation in a video game. The presence of the grass and path complicates the simulation." } }, "d1559168db6b40db8f72948c96a80e37": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree on top of rocks. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "d1d1aad219514afc9ab1458aa893e01a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' class. It is a single, well-defined object, making it suitable for physics simulation." } }, "d215c57af769429086f0ce8472b015cc": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "d28c2e41596e4c03b31be8de6002f589": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "There are multiple objects in the image. We need images that depict only one object class." } }, "d300ad7588994642ad7e267f55813202": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not a tree, ficus, or fern. It is only a part of a tree, and not the entire object." } }, "d336c4c9a6d04eba8c7685c037d820b1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we want. The image contains only one tree, and the tree is likely to be used in a physics simulation." } }, "d35b12f6d88a408fa1651a97ae4b3fef": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is one of the classes specified. It's suitable for physics simulation as it represents a tree swaying in the wind." } }, "d430dbc833284064818fcaa7ad63e0bd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation or a stump-like object that is not clearly identifiable as a tree, ficus, or fern. It doesn't fit the criteria for use in physics simulations related to those specific classes." } }, "d45218a3fab349e5b1de040f29e7b6f9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single pine tree, which falls under the 'tree' class. This is suitable for physics simulations in video game development." } }, "d5321f7fd7cd4a2194d6ed7bc80b82d7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump with roots and surrounding earth. It's not a clear depiction of a tree, and includes other elements besides just the tree itself. It is also not a typical tree that would be used in physics simulation." } }, "d53616c421fa48ce9745aebc569ac4bd": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree trunk, which falls under the 'tree' class. It is a single object and suitable for physics simulation." } }, "d6bbc051c4b440289869f3d203d3ba1a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, stylized tree-like object with non-realistic features (purple orbs, metal structure). It does not resemble a real-world tree, ficus, or fern, and is unlikely to be used for physics simulation related to those objects." } }, "d7dcd4b4e22b4636ad1cde410de74b49": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a palm tree, which is a type of tree. The image is clear and shows a single object." } }, "d7ff58db32d4454faefcd26e68fda759": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bonsai tree, but it is also on a table with scissors. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "d80222e4d7294fea9cdb3ad122b7cbf7": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in a video game." } }, "d841c3bcc5324daebee50f45619e05fc": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two trees, not a single object." } }, "d85bfb0d8da6459fb994b9ffca126375": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the 'bonsai tree' category. It is a single, clear object, and could be used in a physics simulation (e.g., how it sways)." } }, "d93c8cdf8238467b817f39fde060c5e5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "d98cc42c0677412cb47554b791c1e01b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. The image contains only one tree." } }, "da8489defde348378a27eff6bc7a5843": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump with grass, not a full tree. This is not appropriate for physics simulation of a tree swaying in the wind." } }, "da9107fcaf2843ccb222bf3e73db4d17": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It's a single object and suitable for physics simulation." } }, "db6dcccbe53546d0ac2ea55003f151c6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it's difficult to distinguish the object clearly. The image appears to have multiple trees layered on top of each other, making it unsuitable for physics simulation purposes." } }, "dbd3f20966de4cae9170413b9c6f891d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single, distinct tree object." } }, "dc398663d33b410cb6e880b8c7906f1e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which falls under the specified classes. It is suitable for use in a physics simulation for video game development." } }, "dc4486393ac747b6b675d3e24f9c745d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' category. It is suitable for physics simulation as it could be used to simulate trees swaying in the wind." } }, "dc686e6161a841c18cfeb558651d011e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of driftwood, which does not clearly represent a tree, ficus, or fern. It's a fragment of a tree, not the whole tree." } }, "dc69bc8081a24e938eefd4092c3350e6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, and we only want images with a single object for physics simulation purposes." } }, "dc8ad650f5004bc090d9e0f403fbe56a": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree, soil and grass. The tree is not clearly depicted. It is difficult to isolate the tree for physics simulation." } }, "de16132ce94246f4a51de8fe0e5c72b1": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which is a type of tree. It's suitable for physics simulation in a video game." } }, "de6263e5400b4a52a795decf84f06575": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "There are multiple trees in the image. We want only one tree per image." } }, "df42724e17eb4cfdb8b380ecc413b158": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree clearly, suitable for physics simulation." } }, "e060a13bda674274b49a0c83e9436e5c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not just a single tree, ficus, or fern." } }, "e07a1eeaf5ef4bb1b2347b2e0d2b7481": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which is a type of tree and suitable for physics simulation in a video game." } }, "e1571761ed554fd4b1d8c18f0fa881c4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree trunk, not a full tree. It's not a clear representation of a tree, and it's unlikely to be used in a physics simulation of a tree swaying in the wind." } }, "e1cc407d552f4332bf697ed2b71cabe3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the 'tree' category. It's a single, clearly defined object, making it suitable for physics simulation in a video game." } }, "e3389635c5524c24bcc9fc924ed1c362": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, and it is isolated on a white background, making it suitable for physics simulation in game development." } }, "e3a3e0c39f804b77accdd549153feec8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object on a plain background, making it suitable for use in a physics simulation within a video game." } }, "e4999d6251ba42ac8ee2cea7d3e30596": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus in a pot. The ficus is a single object and is suitable for physics simulation." } }, "e52769d653cd4e52a4acff3041961e65": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree clearly, which is suitable for physics simulation in video game development." } }, "e5507f69145541c68521492ea445991b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation." } }, "e565ec1b4c77440f9d0a20ecf314d0cf": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree, which is a valid class. The object is clearly visible and isolated, making it suitable for physics simulation." } }, "e60ee91ace3d4dd299a6bf10da175292": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fern, which is one of the classes we want. It's also a single object, making it suitable for physics simulation." } }, "e61e2447747d4035b2556f5241f00508": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which falls under the specified classes (tree, ficus, fern, oak tree, pine tree, evergreen, palm tree, maple tree, bonsai tree). It's suitable for physics simulations like tree swaying." } }, "e6520e8f74c847b6b819f59e351af0b4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The tree is broken, and the image includes the ground around the tree, which is not ideal for physics simulation of a single tree object." } }, "e697e9da83694dec86b9ee09357e96f5": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including a tree, grass, and other elements. It doesn't cleanly depict a single object from the specified classes." } }, "e7c3a9d2c4ac41749ca6cdce8f8b15cb": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the 'tree' class. It is a single, clear object, and suitable for physics simulation (e.g., swaying in the wind)." } }, "e84d7739904a40d29343779f150244b2": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. The image shows a single object, making it suitable for physics simulation." } }, "e8c89b1e4ee84222928765534d751839": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree trunk, which is a part of a tree and falls under the 'tree' class. It's a single object and can be used for physics simulations." } }, "e975ed422a7f49909881498ce5be24c0": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. It's a single object and suitable for physics simulation." } }, "e97c98ab3ed0466f8ea08e479472e948": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dead tree on a platform, which is not ideal for physics simulation as it's not a typical tree structure." } }, "e9cff03e58c44cb0a4f7e1f8b6019801": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the 'tree' class. It is a single, clear object, and suitable for physics simulation." } }, "e9e89dcf3b6e4b088dabf37a51f58a8e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It's suitable for physics simulation as it can be used to simulate swaying in the wind." } }, "eb475732180f46d3a9c31d479304bc29": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single one." } }, "eb963b1c8ac4459db9f52959c96ec290": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which is a type of tree, and it is isolated on a white background. This is suitable for physics simulation in a video game." } }, "ebaeda94c16b4c8eb57111d3901f9319": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single palm tree, which falls under the 'tree' class. It is suitable for physics simulation purposes." } }, "ebe29f3aeb3b47f191c640d62f8eeada": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the object classes. The image contains one single object, which is appropriate for the video game development." } }, "ec92f6cf7de84dd2b95632cba11ce44c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the target classes. The tree is isolated and suitable for physics simulation." } }, "ecb91f433f144a7798724890f0528b23": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a ficus in a pot, which is a valid object for physics simulation (e.g., swaying in the wind, falling over)." } }, "ecfff4cd0185417b98f4e5aeb458c856": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the specified classes. It's a single object on a plain background, making it suitable for physics simulation." } }, "ed48349ddcb14dec9618c4a3c341fab3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree trunk without any branches or leaves, and it's attached to a base. This doesn't represent a complete tree suitable for physics simulation of swaying or falling." } }, "eec851c1ada14f1f884fb1e446f078a4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree. It can be used in a physics simulation." } }, "eed7470843504aa592514554a6100fbc": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees, not a single tree. This makes it unsuitable for physics simulation of a single object." } }, "ef06cca797074500a95860cdc641339e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we want. It's a single object on a plain background, suitable for physics simulation." } }, "efe02e37a19847e8b91c33b7814214ea": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and the object is not clearly identifiable. It's difficult to determine if it's a tree, ficus, or fern, or something else entirely." } }, "f0f495d58a5d4be9987c3d76e3dd052b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' class. It is a single object on a plain background, suitable for physics simulation." } }, "f118e49485e445c2b3089a0461e21157": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It's difficult to discern the object's shape and structure, making it unsuitable for physics simulation purposes." } }, "f1f439b9cb8a46a697299413558bd3f3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we're interested in. It's a single object and suitable for physics simulation." } }, "f2add40433924a77b289bc605929c356": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is overexposed and it is difficult to identify the object. The object looks like a bonsai tree, but the image quality is too poor to be sure." } }, "f2af9811d4cf4597b7c1cbe070ea67e8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree in a pot, which falls under the 'bonsai tree' category. It's a single object and suitable for physics simulation (e.g., how it might sway or fall)." } }, "f3707483be4e4934b43dde05727c2966": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "f3beec38258843f08da94d44f1b72d2b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single tree, which is suitable for physics simulation in a video game." } }, "f41f95e3913b44e5ae934ad765634249": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a ficus in a pot, which is acceptable for physics simulation in a video game. It clearly depicts a single object belonging to the specified class." } }, "f420ea9edb914e1b9b7adebbacecc7d8": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bonsai tree, which falls under the 'tree' class. It is a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "f453848992604a4ea1dac24d8e2b79a3": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which falls under the 'tree' category. It is a single object and suitable for physics simulation." } }, "f4665a83747b428d8615e35231d260a4": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which falls under the specified classes. It is suitable for physics simulation in a video game." } }, "f473859bb3a943818f1fc604cbc77f50": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image doesn't depict a tree, ficus, or fern. It shows a square structure with a brown surface inside." } }, "f684c3e68ab54ad092abd00095b80f51": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which fits the specified class and is suitable for physics simulation in a video game." } }, "f75bcaa8703a4f838efa69350a3ad3fe": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in a video game." } }, "f77aa0e12b064df18df2c050fe5156c6": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree, which is one of the specified classes. The image clearly shows the object, and it is suitable for use in a physics simulation." } }, "f8e8aa1a7a1b434e9d3ec1e770d4511b": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees) of different types, which is not suitable for learning physics parameters of a single object." } }, "faaa22a9f0df44a9a1e948d6ace12e66": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fungus, which is not among the specified classes (tree, ficus, fern)." } }, "fb9ef9004f844459bd43c6ac7cb47264": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single tree, which is suitable for physics simulation in a video game." } }, "fd62851fe22c43388b8c19fa30d748ad": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bonsai tree, which falls under the 'tree' category. It is a single, clear object and suitable for physics simulation purposes." } }, "fd75c4c925954706bd936eaff13c3a3c": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree trunk but it also contains pavement and other plants. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "fdbe49ac42d34d4c81fc21bf91f022bf": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree-like object, specifically a ficus or bonsai tree, and it is isolated on a white background." } }, "fdc020c66f8d448eac03d44d203b3ff9": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree trunk, which falls under the 'tree' class. It's suitable for physics simulations as it can be used to model the behavior of a tree trunk when subjected to forces." } }, "fef2cdc5f46a4118ba51eb0b77847400": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The tree is isolated and suitable for physics simulation." } }, "ff081af984bd4a87829d2b06fe3e428d": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts mushrooms, which are not in the list of accepted classes (tree, ficus, fern, oak tree, pine tree, evergreen, palm tree, maple tree, bonsai tree)." } }, "ff47a1501f8f4c30af3fcf0705a0c53e": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a palm tree, which belongs to the class 'tree'. It is a single object and suitable for physics simulation." } }, "ffff418f0dd44b45b47380f85891341f": { "obj_class": "tree", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a pine tree, which is a type of tree. The image contains only the tree and a white background, making it suitable for physics simulation." } }, "00d8706c2d44491db32bea85637987ad": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is an abstract shape and does not represent any of the specified classes (tree, ficus, fern, or related grass types). It's also not suitable for physics simulation as it lacks detail and realistic features." } }, "011f2b266bed45c28face5dcb50776df": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as a tree, ficus, or fern. The image quality is too low for training data." } }, "01aae3de8647408fb797e7f971189f7d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a simplified, cartoonish representation of a tree or plant. It lacks the detail and realism needed for accurate physics simulation in game development. The image doesn't resemble a real-world tree or fern closely enough to be useful for extracting material properties or simulating realistic behavior like swaying in the wind." } }, "02225211ca30459cad8429aecc3ba710": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single grass object clearly and is suitable for physics simulation." } }, "025977f18c1e4a7d922cc815084bd6ab": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not depict any of the specified classes (tree, ficus, fern, or grass-related objects)." } }, "02cee5ea8efe4cbfa4b228e84e8f5d9b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass clump, which falls under the specified classes (grass, lawn, turf, etc.). It is suitable for physics simulation in a video game." } }, "02faef86ddd441179e6b9d85a546fe79": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass patch, which is a suitable object for physics simulation in a video game. The quality of the image is also good." } }, "033878c2373c4188bf9e89296b819e3a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white, and it's impossible to discern any object or class from it." } }, "03499e81ddab44e496284ef8807b55bd": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a landscape with grass, but it's not a clear depiction of a single object belonging to the specified classes. It's more of a terrain view." } }, "041d0a7014f04140aee98d117aebe439": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the acceptable classes ('grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture'). The image quality is sufficient, and it isolates the object well. It's suitable for physics simulations, especially for interactions like wind effects or objects falling on it." } }, "04eeeca688074aa19a9c94e596b04e33": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass in a pot, which is not a natural setting for grass and includes an additional object (the pot). This doesn't fit the criteria of a single, naturally occurring object for physics simulation." } }, "056a697d2c7c495db13d3d915b097aba": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the classes: tree, ficus, fern. It depicts a brown landscape. Also, the image quality is not high enough." } }, "0689cc8c406d42009cbf0d82f7e39b07": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single object (grass) clearly and is of sufficient quality for training data. The grass could be used in physics simulations." } }, "06d32c05f32642d99253b66d060f2c4c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass clearly and is suitable for physics simulation." } }, "07af7bc86dd04b71a2ebab4aa24d99b7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows grass in a pot, which can be considered a single object for physics simulation purposes. The image quality is acceptable." } }, "08c126cdc4a54334b8d67d258bc38f53": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a valid class. The image quality is good." } }, "094f1083cbb44435a78c7bb5b1c934e3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single blade of grass, which fits the class of objects to be selected. It is also clear and of good quality, making it suitable for training data." } }, "0a0762b729364e999bd6630a6a33539c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-quality, simplified model of a leaf. It lacks detail and doesn't clearly represent a tree, ficus, or fern. It's not suitable for physics simulation due to its unrealistic appearance." } }, "0a162cc9fe5d4e1e82a523368cbc5b04": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Minecraft grass block, which is not a realistic representation of grass and is therefore not suitable for training a physics simulation model. It's a blocky, stylized representation, not a natural object." } }, "0ab190dfe35a4bccba4bf64df18d062b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable. It is difficult to determine what the object is, making it unsuitable for training data." } }, "0ab6e03ccff14818bc5b356cfb0ae6bd": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple grass patches arranged on a platform, not a single object. This makes it unsuitable for training physics parameters for a single grass patch." } }, "0b1e8ead9da444b196214ad40e4c2ae6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Minecraft block, which is an unrealistic representation of grass and soil. It's not suitable for physics simulation as it doesn't represent the real-world properties of grass or soil." } }, "0b420f6ec97640c69a59c4bd3ad62c02": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single grass plant clearly, which is suitable for physics simulation in a video game." } }, "0d98b4f137f9493e97f46bd7990de625": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the provided list of acceptable classes (grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, pasture). The image quality is good, and it appears suitable for use in a physics simulation." } }, "0e18753981784640b7725447ff0edd72": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a sphere covered in leaves, not a single object belonging to the specified classes (tree, ficus, fern) or their related objects (grass, lawn, etc.). It is not suitable for training a physics simulation model." } }, "0e8da87c31b84712a309bd60111220c2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a plant, possibly grass, which falls under the provided categories. The image is clear and the object is well-defined, making it suitable for training data." } }, "0f077be0844c4eb5ac96a90ba3f7dc4c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, pixelated representation of grass and soil, resembling a Minecraft block. This level of detail is not suitable for realistic physics simulations, as it lacks the necessary complexity for accurate material and Young's modulus calculations." } }, "0faf4ddffcd14326bfb5717c24f6e2b4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the quality is low. It's also difficult to identify the class of the objects." } }, "0fb6eb27ad4f4f90b946a893b84ee35e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict any of the specified classes (tree, ficus, fern) or the related objects like grass. It's difficult to determine what the object is, and therefore it's not suitable for training a physics simulation model." } }, "1018101c540f4fa08854e08e5959f220": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a cat and grass. We only want one object in the image." } }, "1039c6540cf64a36ab62b2b8238be9db": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and it is of good quality. It is suitable for use in a physics simulation." } }, "106c2c58f6d743c7897e327a9152ea54": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image quality is acceptable, and it clearly shows the object. It's suitable for physics simulation training data." } }, "10fba21f3ee3438aa3eaa4d58d4a3426": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and it's not possible to identify the object." } }, "116229e75bc54c3c8f06834751d4bde6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects, a sphere and a plane, both with the same leaf-like texture. It doesn't clearly depict a single object from the specified classes (tree, ficus, fern) or their related ground covers. The objects appear to be texture samples rather than representations of real-world objects suitable for physics simulation." } }, "11918108bcd94196a701152311bf4188": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple types of vegetation (grass and flowers) and is not clearly depicting a single object from the specified classes (tree, ficus, fern, or grass)." } }, "12e4cdc21ac44632b0cc23713f07c646": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is of a sphere with a grass-like texture. It doesn't clearly depict a real-world object like a patch of grass or a lawn. It's an abstract representation, making it unsuitable for physics simulation training data." } }, "142b2a0b574a4ed79ed7ab2bc7034816": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image quality is good, and the object is isolated, making it suitable for physics simulation training." } }, "14412acfebb8483da14bc009ecef9179": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is not clearly identifiable as a tree, ficus, or fern. The image quality is low and the object's shape is distorted, making it unsuitable for training data. It is also difficult to determine what the object is supposed to represent, so it is not appropriate for physics simulation." } }, "1547c6f4962a4a30bec898f7295ddce4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a clump of grass, which is suitable for physics simulations in a video game. The quality of the image is good." } }, "16d0f827462547b6a8e89fa3770859ab": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows grass, which is a valid class for the video game development. The image quality is good and the object is clearly depicted." } }, "174ace56f03a4683967616fa4914800d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly depicted." } }, "17aae063476945549a64fe4d6af2631e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright, and it's difficult to discern any specific object of interest." } }, "18124d917d6745948c57ea0b37a4ee0a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a block of grass, which falls under the provided class of grass/lawn/turf. It is a single object and the image quality is good. It could be used in a physics simulation." } }, "183a610d3bdb4917ba7d78d615975c01": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to show a terrain or ground texture, which is not one of the specified classes." } }, "191cf67fd7c94e0da0137912f60074ca": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "1a518b12425b40099580ccd7855f4930": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a chair, which is not one of the specified classes (tree, ficus, fern, or grass)." } }, "1b139a45ccea477baada9a5b62cad1db": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it is difficult to identify the object." } }, "1b38e3e720a24fa18e78e2387a4f1532": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's also a single object suitable for physics simulation." } }, "1b43d98193b746cca341bb9dbb13b45e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It's hard to distinguish the objects clearly. There are also multiple objects in the image." } }, "1b7fa9532a4342a1ac452589670a552b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building, not a tree, ficus, or fern. It doesn't belong to any of the specified classes." } }, "1b900e5cb8a84e0fa96b3a6df11c03d1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified class. It is suitable for physics simulation as it shows a single object." } }, "1c21d7834dbd4458bdec918f805b9a1c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple trees, not a single tree. Also, the trees are too abstract and not realistic enough for physics simulation." } }, "1c3b5c93cbfe4a9cb7d343bcc1f6fc93": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a patch of grass with rocks, not a single object belonging to the specified classes (tree, ficus, fern). It's a combination of grass and rocks." } }, "1c840565936a48b2b25e71e296064cf1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes. The image quality is acceptable for training data." } }, "1d0f9ba933e4417398372ed62972b7ee": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with mountains and a river. It does not clearly depict a single object from the classes tree, ficus, fern, or grass. It's a landscape view, not a single object." } }, "1d32047a5cef4647b7b439a61a5449a4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass clearly and is of good quality, suitable for training a physics simulation model." } }, "1dd88011e10b48d18b0249c3d41f62a6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sphere covered in grass, which is not a realistic depiction of grass in a physics simulation context. It's too abstract and doesn't represent a usable object for simulating grass behavior like swaying or being stepped on." } }, "1e93d0ae28ff433e9436e45c35a85d98": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and low quality. It's hard to discern details about the grass." } }, "1e9b2d8c61ad415db8cd0f231133cff5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with multiple objects, not a single object from the specified classes (tree, ficus, fern, or grass). It's also unclear and not suitable for physics simulation training." } }, "1f930027aa4f46ed9402cee45aa8eba6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the provided categories and is suitable for physics simulation." } }, "209b7ca9ebbd44acb2b3a74fbbc32d2b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a pixelated block of grass and dirt, resembling a Minecraft block. It doesn't represent a realistic depiction of grass, lawn, or turf suitable for physics simulation training data. The pixelated nature and blocky shape make it inappropriate for learning realistic material properties or young modulus." } }, "20e377844ff94fa495e5d186927a1949": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern-like plant, which is suitable for physics simulation in a video game environment. The image quality is good, and the object is clearly visible." } }, "21f23b30ae5a48e8b1d362e2c48123a2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It's difficult to make out the details of the grass. The object is hard to see and the image quality is low." } }, "2306a53faeba4ce7b7f1235900840032": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass clearly. The quality is good, and it can be used for physics simulation." } }, "24e3c6c6892447ccb04da9fe293729c7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is one of the classes we want to include. The image quality is good, and it's a single object on a white background." } }, "2523f2042a88413983d68fd1ba0adec3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly visible. It appears to be grass, but the quality is too low for use in training data for physics simulation." } }, "2629e1e68add4fe6a5cab75217f859a0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a building and multiple trees arranged in a row. It doesn't depict a single tree clearly, and it includes other objects like cars and buildings. This makes it unsuitable for training a model to learn the physics of a single tree." } }, "26613b81f24a43eaabead2cca2cbba6d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry, making it difficult to clearly identify the object. The image also has a dark background which makes it hard to use for physics simulation." } }, "2696dcbc6b3c40a680f13b681f7ea64c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the acceptable classes (grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, pasture). The image quality is good enough for training data." } }, "26c9d0c5969347f7b850a4ecda30d8fa": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "This image depicts a fictional creature that does not belong to any of the specified classes (tree, ficus, fern, or grass). It is not suitable for training a physics simulation model for these objects." } }, "26ceed762978473db83ec20576918f55": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the provided categories (grass, lawn, turf, etc.). It's a clear, isolated image suitable for training a physics simulation model." } }, "26e02cb4385f487aa51bdc8967a63358": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is not clearly visible." } }, "26f9cc0044d3408e862818142fbf06fd": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and it is of good quality. It would be suitable for use in training a model for physics simulation." } }, "27a7f077350d4f82af523111fd564ab2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is poor; the object is not clearly visible due to the high contrast and brightness." } }, "28d43251cc7143f692fc0bcbf9e43931": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and contains multiple objects and landscape elements, not a single tree, ficus, or fern. It is also too far away to be useful for physics simulation." } }, "29a5af63e3c34812b2e5515d3c794c04": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus, which is a valid class. The image quality is good, and the object is isolated on a white background." } }, "29d28993b92944aba575fdc01b5c91a4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly visible." } }, "2a0e1033e935452cb03d17c50fb12807": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and doesn't clearly depict a single tree, ficus, or fern. It shows a landscape with fields and some trees, but it's not suitable for training a model to learn the physics of a single object." } }, "2a21e0c837674d04b126f5eb5afe7da3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "2a2511deadc94ec293ce1f634a7299cd": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is low and it's hard to identify the object clearly. The rendering style is also not suitable for physics simulation purposes." } }, "2a5bc8245cd048e78efec5f1838f08e3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass in a planter, which is not ideal. We want images that depict grass in a more natural setting for physics simulation purposes. Additionally, the planter itself is also visible, which is not desired." } }, "2b12aaf33f1943c3bbac16e663b3947c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts dead corn stalks and debris on a patch of dirt. It doesn't fall into any of the specified categories (tree, ficus, fern, or grass variations). Additionally, the image quality is not high, and the scene is cluttered, making it unsuitable for training a physics simulation model." } }, "2bddcd1d623744e4ad25357a8e6fdd53": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass plant, which falls under the specified classes (grass, lawn, turf, etc.). The image is clear and suitable for use in a physics simulation." } }, "2cf39697964748d39618890717f3bf2d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the acceptable classes of ['grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture']. It's a simple, clean image suitable for training data." } }, "2e0d3e77227c48718366af0c143bb0df": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a blocky, Minecraft-style object that does not resemble a tree, ficus, or fern. It is also not an object that would be used in a physics simulation." } }, "2e6b51c78fea4cc8947a5bf34a455509": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is one of the classes we are looking for. The image is also of high quality and suitable for training data." } }, "2ebaf738303347afbe4bd0101f0be9b3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is a suitable object for physics simulation in a video game." } }, "2f4b192b19044af3bdbbd7c6c44d83e2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict the object class (fern, tree, ficus). The image quality is low, making it unsuitable for training data." } }, "2fd6581ee4df470ca9bca90ffb810b04": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the required classes (tree, ficus, fern, or grass). It appears to be a sphere with a grassy texture, but it is not a realistic or useful representation of any of the target objects for physics simulation." } }, "2ffb4d5302c14d038eaf6488b8c7ede2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a valid class. The image quality is good, and it shows the object in isolation." } }, "3033f909816743b39e6df632e4ed97f2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a tree, which is one of the classes we are interested in. The image quality is good, and the object is isolated." } }, "32396ab125d142fcbcaa8e2f1e3eb8b4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a single blade of grass, which falls under the specified classes (grass, lawn, etc.). It's suitable for physics simulation as it can be used to model grass swaying in the wind." } }, "3336eaa6a2c34256bb32984519586042": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass growing on a wall, which is not a natural or typical scene. It doesn't represent a realistic scenario for physics simulation of grass swaying in the wind, as the wall would significantly restrict its movement. Additionally, the presence of the wall introduces another element that is not the primary focus of the simulation, making the image unsuitable for training data." } }, "3352f9d646ec4f25b8aeb28e4232814a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass patches, which fall under the acceptable classes (grass, lawn, turf, etc.). The image quality is adequate, and it focuses on the object class without significant distractions." } }, "3386e85fd39c48bba8d409641eea1302": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It is an abstract sculpture." } }, "344af319c15d42da9e33d16bb534d95f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass/lawn, which falls under the provided list of objects for the class 'grass'." } }, "3514fc9a243247b5a517e52edfd09c0e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very poor and the object is not clearly visible. It's difficult to determine if it's a tree, ficus, or fern." } }, "36c075ff3d3d47849d5f10af860635a1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is not clearly depicted. It's difficult to identify the object as a tree, ficus, or fern." } }, "3a5a5c5be677403d9f56e451cd3dd4af": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single clump of grass, which is suitable for physics simulation (e.g., swaying in the wind). The image is clear and of good quality." } }, "3a67e76decc849c694c228eb590a9902": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is suitable for physics simulation in a video game. The image quality is good." } }, "3a7f0a6e72ad4c2bb00b2f173b2b10e9": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a rock or some other geological formation with moss or algae growing on it. It is also unclear what the object is, and it's not suitable for physics simulation." } }, "3ab12df56ac04d63a096562ce3fc0763": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the class of objects suitable for physics simulation in a video game (e.g., swaying in the wind)." } }, "3abcaff1a11f4d03842f9c8d73bb0121": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, and it's suitable for physics simulation in a video game (e.g., grass swaying in the wind)." } }, "3af15d9401d04cee97f78dc3a2d02e05": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a block of grass and dirt in a pixelated style, resembling the game Minecraft. This representation is not suitable for learning realistic physics parameters for grass or soil." } }, "3b5a6e25dcae4a7e96569a366daa24c5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and the shape is not clear. It is difficult to determine if it is grass." } }, "3c376ff44dd04332810b452732d7da5a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and it is not clear what the object is. It looks like a patch of grass, but the quality is too low for training data." } }, "3cb5a0f7125d4817897378a6018fa50e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object clearly." } }, "3cc5124fda1f47c58e832ef1b4d02ea9": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and a building, not just the desired classes (tree, ficus, fern, or grass). The object is not clearly depicted and the image quality is low." } }, "3cdb37c9eb9848a882197377af3ad63a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects of different classes. It's not a single object in isolation." } }, "3d6b86c469b34dd9a897975a39f11b7c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not contain any of the specified classes: tree, ficus, or fern. The object in the image appears to be a wall or panel with a wood-like texture. It is not suitable for the intended purpose of training physics parameters for game development." } }, "3dc559bf7351402e8010b5dcefaf3c6a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a valid class. The image quality is good, and the object is isolated." } }, "3dd7a9dee7234665826875b678fac3eb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single blade of grass, which falls under the provided list of objects for the grass class. It is a clear, isolated image suitable for training." } }, "3df2930ca28642a3bf8f0a2456b98d7f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable. It's difficult to determine if it belongs to any of the specified classes." } }, "3e2039221d894715a37dfbc9e97ecddd": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image is a low-resolution, blocky representation of a tree, which is not suitable for physics simulation training data. The blocky nature makes it difficult to define realistic material properties and simulate natural movements." } }, "3f36a9e451f84acf87f08222c8ba6265": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image is too pixelated and doesn't represent the grass well enough for physics simulation." } }, "3f44efa7b6704bbd98ace94f1c8605fe": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a grass patch, which is acceptable for the class." } }, "3f651b26523a4715ba9f44604edb7691": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grassy area, which falls under the categories 'grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture'. It is suitable for use in a physics simulation, as the properties of the grass can be simulated." } }, "3fc4e31a87464c1da1a046c63d7a3774": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere covered in grass, which is not a natural object. It is not suitable for physics simulation." } }, "415b18b369ea495da1e572cef1030100": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly depicted. It's hard to tell what the object is." } }, "41c30c06a4ee40a6a3005b745f40db68": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass, which is a suitable object for physics simulation in a video game. The image quality is acceptable." } }, "41e3852ac9924dc3a934f90b16aba717": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a lawn with multiple grass patches, but it is presented in a way that is too abstract and simple. It doesn't clearly show the details of the grass or the lawn, making it unsuitable for training a model for physics simulation. Additionally, the presence of the platform underneath the lawn is distracting." } }, "427981f314f84bbead32b84fc6887767": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf etc.). It's suitable for physics simulation as it represents a deformable surface." } }, "427cc7e0e6fa4b7483babfb189f858c0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single clump of grass, suitable for physics simulation." } }, "4304dbed3aa04ba9b99daa2cd35088c3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the quality is not good." } }, "43627b161948443d80f1227cbeb83363": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains grass in a pot, which is not a natural setting. We want to simulate the physics of the object in a natural setting. The pot is also not part of the class." } }, "43744e5495e345b1be0277e2ea78fb46": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of ashes and charred wood on a patch of grass, which does not belong to any of the specified classes (tree, ficus, fern, or grass). It also includes multiple objects and is not a clear representation of a single object for physics simulation purposes." } }, "449aa06d99734f11a66ec7362517a1a0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The object is not clearly identifiable as a tree, ficus, or fern. It appears to be a stylized or abstract representation, and the image quality is not high enough for accurate physics simulation learning." } }, "460d6a1b0372447899450e017704d7d1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's a single object and suitable for physics simulation." } }, "462b21e2396946ab803053205668e867": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it is hard to tell what the object is. The object is also not clearly defined." } }, "478857e9109d482b99d1357e61b5766b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is not clearly visible." } }, "47edba2c4b4740b9a0532a4b198bed81": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere with a grass texture applied to it. It doesn't represent a real-world object like a patch of grass or a lawn, which would be more appropriate for physics simulation." } }, "47f357729c5748b88aa3dfdbc9babd88": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a clump of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image quality is good, and it shows a single object, making it suitable for physics simulation training data." } }, "4810e810aee040918d6da9fd2c282d85": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern. It is of good quality and suitable for physics simulation." } }, "4a03e27bca7b4b6490916028a9c4b200": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a terrain, not a tree, ficus, or fern. It also doesn't resemble any of the objects in the provided list (grass, lawn, etc.)." } }, "4a3169063e18456faad3900cbf76a34f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass patch, which is suitable for physics simulation in a video game." } }, "4a59efcec47d432baac221c6fba2c6c3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a fence and a patch of grass/vegetation within it. It does not cleanly depict a single object from the specified classes (tree, ficus, fern, or the grass variants). The fence is a distraction and not relevant for physics simulation of the vegetation." } }, "4b800e07ea3543e3870ad5e53b39d825": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes. The image quality is good, and it isolates the object well." } }, "4ba40fde7b9b416e93d6680111130201": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a field of plants, not a single tree, ficus, or fern. Therefore, it is not appropriate for the specified classes." } }, "4bf468bb43954733ac1469c1158f84c8": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains grass and flowers, but we are only looking for images of trees, ficus, or fern. The image also contains multiple objects and is not focused on a single object." } }, "4bf89156f3674c07ac91e3bf6304dd1c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern, and the quality is good enough for training purposes." } }, "4c9282127df547fd983df4174ad3b5af": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image is too abstract and lacks the detail needed for physics simulation. It's a very simplified representation of grass." } }, "4ca1ab9ee08e4e0bbd02e46cc7af857c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a fern, which is one of the classes we are interested in." } }, "4de4699e1a084af8b5be3a3f7cef1984": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks detail, making it difficult to clearly identify the object as grass. The quality is too low for use in physics simulations." } }, "4e20300d1f534b3283a41982afa33a28": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry, making it difficult to identify the object clearly. It doesn't provide enough detail for use in a physics simulation." } }, "4e2d5715e4f74993a8b9590ddddef1b6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Minecraft block, which is not a realistic representation of grass or soil and is not suitable for physics simulation training data." } }, "4e535b6097fa46218e85c3e0aab7826d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a solid black shape against a white background, making it impossible to identify any object class like tree, ficus, or fern. The lack of detail and the solid color prevent any meaningful analysis for physics simulation purposes." } }, "4ee100c994e8493e8aabea254c88ff05": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very poor, it is difficult to identify any objects clearly." } }, "4f00c77db71e482f82bf5335513031a1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "4f01396fb91b4f5c83a890381f2d4424": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass patch clearly and it's suitable for physics simulation." } }, "4f8d59e086f0499796fa12f14d4df5c4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass clearly, which is suitable for physics simulation in a video game." } }, "4f98bdcfc63e488ba4334a5a025b4377": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a block of grass and soil, not a single object like a tree, ficus, or fern. It's a composite object." } }, "4fc117d6a23441bf803bef56e378f098": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, but it's rendered in a very abstract and blocky way, which doesn't resemble natural grass and would not be useful for physics simulations of grass swaying or being affected by external forces. It's too abstract." } }, "5194ac6d21c242e188c2fbbe0ac122e6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple grass patches, not a single object. Also, the quality is low and it's hard to discern details." } }, "51a138f505f7465284bacc6e1d0858f6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a class of object that we want to include in our dataset. The image is also of good quality and shows the object clearly." } }, "51ce286377fc4909ab11ae276380dc58": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains both a tree and grass, whereas we are looking for images that depict only one object." } }, "526cc28513634b7298a8a2eb73b138f5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass with a visible edge, suggesting it's a small section rather than a natural, continuous grassland. This makes it less suitable for physics simulation of a larger area." } }, "52b3808c8a4f48188ff9a1217f2d84aa": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes. The image quality is acceptable for training data, and it's suitable for physics simulation." } }, "52b6a07e9d8741ffbaa403a78f778d96": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and the quality is sufficient for use in a physics simulation." } }, "5472ca15175042ebb0a19f724c2855ac": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image quality is good, and the object is isolated, making it suitable for training a physics simulation model." } }, "5477accb9d294cd18962dd461d08b9e0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is suitable for physics simulation in a video game. It is also of good quality." } }, "5479974baffe4d2b879c195745ccb11f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single object, a type of grass, clearly and cleanly. It is suitable for use in a physics simulation to learn material properties." } }, "55f7ebdd858c4e23a23a8b763aae4e92": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any object." } }, "55fb64e04c724361bbfb0e48c25d202b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass and soil, which does not fall into the specified classes: tree, ficus, or fern. Additionally, the simplistic, blocky style is not suitable for physics simulation, as it lacks the detail required for accurate physical behavior." } }, "564ab33627974dee917d2ded0b800c5b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which fits the class criteria. It is also clear enough for physics simulation." } }, "5857f3c5c97745bb99c1df22ba5b9416": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which is acceptable for the specified classes." } }, "59d519ec820a42c1864fdd7342214e75": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a patch of grass/lawn on a platform. It doesn't clearly depict a single object from the specified classes (tree, ficus, fern). Also, the presence of the platform makes it less suitable for physics simulation training data." } }, "5b6f80a375a84c31bd024159b54f0044": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "5b829b211c0c4243a00e64693b37248b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly depicted. The low-poly rendering style also makes it unsuitable for accurate physics simulation." } }, "5c1b99e8d25b485e9925874dac8dc533": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains grass and a building. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "5c9ad35f898a40fe8eb55a6f0695955f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mountain, not a tree, ficus, or fern. It also includes grass, but the mountain is the main object." } }, "5df15d0768854f93b6db1db333860241": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a patch of grass with some strange circular depressions. It's not a clear depiction of grass, lawn, or any of the specified objects, and the depressions are distracting and unrealistic for physics simulation purposes. The lighting and color are also not ideal." } }, "5e883726c95a4536828109d5b94483db": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or grass-related objects). It shows a cartoon pony." } }, "5feb39ff7059437aa427572cb1db04d2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or grass). It appears to be an abstract geometric shape." } }, "60a4f92d8226482ea32184f987ef0342": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified class. The image quality is good, and it appears suitable for use in a physics simulation for a video game." } }, "613594a95a644c0fa700e504f66bc63b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict trees. The shapes are too geometric and lack detail for physics simulation." } }, "61b48bdf1ad343f08360c8d380c3d71a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows flowers, which are not in the specified classes (tree, ficus, fern)." } }, "61e1d1cf76c14ba29e04e8ce3111a0d5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and blurry, making it difficult to identify the object clearly. It's hard to discern what is being depicted, so it's not suitable for training a model for physics simulation." } }, "622546a633094fed94cb86d25fabe67f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sheep, which is not one of the specified classes (tree, ficus, fern, or grass)." } }, "62fb11a39cf04facaaac5ecbd4a597a9": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with a lake, which does not fall under the specified classes (tree, ficus, fern, or grass). Additionally, the image contains multiple objects and is not suitable for learning physics parameters of a single object." } }, "6301ed909efe42d78c478e4a16dd11d1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and contains multiple objects. The grass is not clearly depicted." } }, "6367d6fa23ca4db3baffd69eecbbfda5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts tall grass, which is suitable for physics simulation in a video game." } }, "6469bc58ead64c5d9e672ebbc37ed955": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Minecraft-style grass block. The blocky, unrealistic representation is not suitable for training physics parameters for realistic simulations." } }, "651629418db64fa8933afeaee3ebc875": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern-like plant. It's a single object and the quality is good. It could be used in a physics simulation." } }, "65cf3575d0894236a437053b0b3f246b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building interior, not any of the specified plant classes (tree, ficus, fern, or grass-related objects)." } }, "674dc1556dac485585fb0d80c6b24727": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass patch or lawn, which falls under the specified classes (grass, lawn, turf, etc.). It's a clear, isolated image suitable for training a model for physics simulation." } }, "6762d57132694011a56b502b23072940": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows grass and a black object, but the black object is not clearly identifiable as one of the specified classes (tree, ficus, fern). The presence of both grass and an unidentifiable object makes it unsuitable for training a physics simulation model focused on a single object." } }, "6865b9e80afa4306ad4b58b0f46f4dde": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere covered in grass texture. It is not a natural depiction of grass, lawn, or any other object within the specified classes. It is an abstract representation which may not be suitable for training physics parameters for realistic simulation." } }, "68e2b1bd08b445259a409c796ff1ceb5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is one of the classes we need. It is a clean image of grass and can be used for physics simulation." } }, "6952780b80594a31aab2dedf7249a47a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is an acceptable class for the video game development." } }, "6a14ed7a0dbf4d5da7720e98cc05b25e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass patch clearly and is suitable for physics simulation." } }, "6c45160f56d34147add5d2f117cad0c2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is a suitable object for physics simulation in a video game." } }, "6da590d978c742279ce4d2f248140446": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a patch of grass with a strange background. It's not very clear and the quality is low. It's not suitable for physics simulation training data." } }, "6e95ef8ba788454fb93a6ec29f060a95": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower, which is not one of the specified classes (tree, ficus, fern, or grass)." } }, "6f0368a45e474911a38a2d6d84251009": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple patches of grass arranged in an unnatural way. It's not a clear representation of a single, natural object for physics simulation." } }, "6f2454b32afd4cafa15bcbf88f953862": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a house in addition to the grass, which is not what we want." } }, "6fd5c3e0bfcc417e932723c651617c0e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, pixelated representation of grass and soil, resembling a Minecraft block. This is not suitable for training physics parameters for realistic game development." } }, "712568f0007440c69bed719fc1c0140b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any object of the specified classes (tree, ficus, fern)." } }, "71d80a83b96b40728ed65072dc5446fc": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable. It's difficult to determine if it belongs to any of the specified classes (tree, ficus, fern). Also, the object is very thin, which makes it not suitable for physics simulation." } }, "71ec94a5da09472a820673000b2f48ba": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is suitable for physics simulations in a video game. The quality of the image is also good." } }, "73735ebf22ca48ccb9800eef74b7a382": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a clump of dirt or debris, which is not relevant to the specified classes." } }, "740441de743648758248181ddc71af9b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass plant, which falls under the provided list of acceptable objects for the class. The image quality is good, and the object is isolated. This image would be suitable for physics simulation training data." } }, "7416beaf51864112ae9fa9a016114fde": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image quality is good, and it clearly shows the object. This is suitable for physics simulation." } }, "74253d45fe014ec4861c9b5e1beec99c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry, making it difficult to discern the object clearly. It's not suitable for training a model for physics simulation." } }, "74995af4e30748ebb1e8c62ff5a3a6d3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's suitable for physics simulation as it shows a clear representation of the object." } }, "74fc29b9c1594e00ad2b0640d4ed1305": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and it is difficult to identify the object." } }, "758b5be71cd6427e9834d2968afff7c4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It is a single object and suitable for physics simulation." } }, "7598babd6ced44019806a7879bf60656": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. Also, it is not clear what the object is." } }, "75c4a39878074e20961acd27f55ec4b0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single blade of grass, which belongs to the class ['grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture']. It is suitable for use in a physics simulation." } }, "75da0ae29102495da4f34e53f84a65f9": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is one of the objects to be selected." } }, "76a81bcd43744387a18a5815857a7370": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grassy area, which falls under the acceptable classes (grass, lawn, turf, etc.). It's also a clear, well-lit image suitable for training a model for physics simulation." } }, "76af51f9c9d946f7920af08b16090683": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and doesn't clearly depict any of the specified classes (tree, ficus, fern). It looks like a grassy patch with a pipe or small tree trunk in the middle of a concrete structure. The image quality is also low." } }, "76ff2ca8965c42978ae31ce9db8ab87e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple trees on a patch of grass, which is not ideal for isolating a single tree for physics simulation. The low-poly style is also not suitable for accurate physics modeling." } }, "770ba235be3a4ac1ab785d4c6bed66ec": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a piece of wood or bark, which doesn't belong to any of the specified classes (tree, ficus, fern). Also, it's not clear enough to be used for physics simulation." } }, "779f6f69c94b4f15b65f28022550af58": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of dirt, which doesn't belong to any of the specified classes (tree, ficus, fern, or grass). Therefore, it's not appropriate for the video game development training data." } }, "77b1b5f223f14f43ad3477f93a179c8b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-poly rendering of a plant, possibly a fern or ficus, but the quality is too low and the shape is too abstract to be useful for physics simulation. It's difficult to discern the object clearly." } }, "783c748a023d44c8a4e4d5e3521b4fb4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which falls under the specified categories (grass, lawn, turf, etc.). The image quality is also good enough for training data." } }, "786094e042cc41a7b9855ef784143ccf": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the acceptable classes ['grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture']. The image quality is good, and it shows a single object suitable for physics simulation." } }, "78bc4573c3b449f9a889450852afd3d6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-poly depiction of grass, which doesn't accurately represent the object for physics simulation purposes. It lacks the detail and realism needed to extract meaningful material properties." } }, "793e549199244a9caca5e2e830151adb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a clump of grass, which is acceptable for the specified classes and suitable for physics simulation." } }, "7a97ae7018b94370ab60c0e7180696c0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a grass patch clearly, and it's suitable for physics simulation." } }, "7b7ef2ff56e041d1bcc2b330ea8b1f19": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple grass patches on a square platform, not a single, clear instance of grass. It's not ideal for learning physics parameters for a single grass object." } }, "7b96d6db2f2845ab84a172d8024b7b92": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a clump of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's suitable for physics simulation as it shows how a collection of grass blades might sway or react to forces." } }, "7c0b7c41657f450c9de6250ad3d699f7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes. The quality is good, and it is suitable for physics simulation." } }, "7c6237253fe249af955cda4f6f966449": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "7dff32d72fb34e65a88327a328e329ce": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with grass and some brown patches, but it doesn't clearly depict a single object of the specified classes (tree, ficus, fern, or grass). It's a landscape scene, not a single object suitable for physics simulation." } }, "7e2b98aab6064d63bb2fc3fda8450c27": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the objects are not clearly visible. It's hard to determine what the objects are." } }, "7e5fbaece7954f3481eeb063294a793d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a valid class. The image quality is good, and the object is isolated on a white background." } }, "7ebe6950dd4446babb31e3905b3b30d2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It's hard to distinguish the object clearly. The image quality is low and not suitable for training data." } }, "7fa5f13895ec4d80960e16bf96e5b9fc": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a clump of grass, which falls under the specified classes (grass, lawn, turf, etc.). It is also suitable for physics simulation as grass swaying in the wind is a common scenario." } }, "802da387e10249bdb098e9dd338d0d01": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly visible. It's hard to determine what the object is. The image quality is also low." } }, "8088512cc1c143cd815977d255bb9605": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image quality is good, and it's suitable for use in a physics simulation for video game development." } }, "80c8e66626ce4797a794039ab77595e2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree, which is a valid class. The image quality is good and the object is isolated on a white background." } }, "81058dbb7ce34a13b1aa756c60419df2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a clump of grass, and the quality is good. It is suitable for use in a physics simulation." } }, "81bd4fcfff5844a4b2a1f74c926533a6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple grass patches, not a single, clearly defined object. Also, the grass looks low quality." } }, "81df6ee21a0246748f9db4f26e62a5f0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a clump of grass, which falls under the specified classes ['grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture']. The image quality is good, and it clearly shows the object. It is also suitable for physics simulation." } }, "827cd00022fc4be7963d2554de370d1b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grassy area, which falls under the class of 'grass' and is suitable for use in a physics simulation." } }, "82c046c39a8c4adc81e793a725e218e6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too sparse and doesn't clearly depict a realistic object. The 'grass' appears as thin lines on a white background, making it unsuitable for physics simulation training." } }, "8399c00672134b828ca6cf2363a95085": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry, making it difficult to clearly identify the object as grass. The quality is not high enough for training data." } }, "839e9594c9944353a6ee6fd2c1647c23": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a moss sculpture of an owl on a grassy patch. It does not depict a tree, ficus, or fern." } }, "83a3db4b103f47468087d04a0fcd04bb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a clump of grass clearly, which falls under the specified classes. It is well-lit and not blurry, making it suitable for training data. The object is isolated on a white background." } }, "84131519ea1d46ec9099e3b133d09663": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a block of grass and dirt in a pixelated style, resembling a Minecraft block. This is not suitable for physics simulation as it's a stylized representation and not a realistic depiction of grass or soil." } }, "84194a1ccd39420390038a0db3af2a3d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which is suitable for physics simulation in a video game environment." } }, "84938a8f3f8d4a0aa64aaa9c4e4d27d3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, pixelated representation of grass and soil, making it unsuitable for accurate physics simulation. The visual quality is too low for training data." } }, "856baa098a5942469f1ec76203c01a1a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a non-organic object, possibly a sculpture or decoration, and is therefore not suitable for the specified classes." } }, "8737d724681d48f9b56e1b1eb4c4e75d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "8752ea5fa49b48ac99778b70b1ee1434": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grassy patch, which falls under the class of grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, pasture. The image is clear and well-lit, showing the object distinctly. It is suitable for use in a physics simulation within a video game." } }, "882f011886ad4725937a2533f22b5123": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly represent a tree, ficus, or fern. It's difficult to infer realistic physics properties from such a simplified shape." } }, "883f0b0cba374545a11f807d1146c990": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree stump, which falls under the 'tree' class. The quality is good, and it's suitable for physics simulation." } }, "8a0f36f239f94981bb3de0d50bd83643": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which fits the class criteria of ['grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture']. The image is clear and suitable for physics simulation." } }, "8a6b8a18cbf74de8961c3a042d4edf9f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects of different classes, making it unsuitable for training a physics simulation model that requires isolated objects. Also, the image quality is not very high." } }, "8a78295b56c64c16be6e2e4d7215dbfb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It is suitable for use in a physics simulation." } }, "8be09b9d10ad4fb8a9e2125f1b6d69a7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any of the specified object classes (tree, ficus, fern, or grass-related objects). The gray shape is not identifiable." } }, "8d09b9e6fedc48879f2e04fdf46d280b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a planter box, not any of the specified classes (tree, ficus, fern, or grass)." } }, "8ea3c9f2cefb49c5a218eef047fad424": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly depicted." } }, "8f3a475a07e84964bbfa7e6bdbab9782": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "8f9a3ceee63747eea04c4b6ad2e5f5e2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a landscape, not a single object from the specified classes (tree, ficus, fern). It also includes other elements besides just grass, such as terrain features. Therefore, it's not suitable for training a model to simulate the physics of a single object." } }, "8f9b5975bf234dd6ae72a4a3a42858d7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image is a Minecraft block of grass and dirt. It is not a realistic depiction of grass and would not be suitable for learning realistic physics parameters." } }, "92742d3837a644a9a0c89b8418894b45": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's suitable for physics simulations, especially for interactions like object collisions or wind effects on grass." } }, "92ae43e13f0842b3bf0ffdb8bc9cae7d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass blade, which falls under the specified classes. It's also suitable for physics simulation." } }, "92ef3a61d1244e8186b4129b56e2c83d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass patch clearly and is of good quality. It's suitable for physics simulation." } }, "93bcacb8b0c04ba59602630ada7bc1e0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low and the objects are not clearly depicted. It's hard to tell what the objects are, and the image is too bright." } }, "94586eaecd484583be8a88c17e8f901e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a clump of grass, which falls under the provided list of objects. It is also clear and suitable for physics simulation." } }, "95023859e97f44ddb654037c1932f65c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree stump, which is a part of a tree. It is suitable for physics simulation as it has material properties and can be used in simulations involving dropping objects or environmental interactions." } }, "95bf8a5ddcb741d1946c55dd2f78b5cb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable. It appears to be a combination of grass and rock, which is not suitable for training data focusing on individual objects." } }, "95dc9c01a9ed45a99a3303b95c9f3f91": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a lawn or grass-like object, but it is rendered in a way that is not realistic and appears to be a grid-like structure. This makes it unsuitable for physics simulation training data as it doesn't represent the natural behavior of grass. Also, it is not very clear." } }, "95ec15aef85a4090a883760f827ba4e1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a clump of grass, which is suitable for physics simulation in a video game. The quality is acceptable." } }, "95f2760a6392483495832594f2245ba4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which is a valid object for physics simulation in a video game. It is also a clear image of the object. " } }, "9602386da6de4802919986cb6ffc12af": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a grassy area or lawn, but it is not one of the specified classes (tree, ficus, fern). Also, the image is too abstract and low quality for physics simulation." } }, "960494e8e6694ae3bae0c333f0809505": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, blocky representation of grass, resembling a Minecraft-style object. It doesn't accurately depict real-world grass and would not be suitable for learning realistic physics parameters for simulation. The image is also too simplified and lacks the detail needed for physics-based simulations." } }, "96776320c2754d6c8a4f8f3cd8286039": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a rock or a piece of terrain. Therefore, it's not appropriate for the specified classes." } }, "9690a1d3cccc45aaae1b587d064e6408": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "9732b58b745e48d7967759ff3f5f05f4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or related grass types). It appears to be a simple geometric shape, possibly a crystal or abstract object, and is not suitable for training data related to vegetation or physics simulations of vegetation." } }, "99e831fdf6d44a549650b6ef26cec9b5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass clearly and is suitable for use in a physics simulation." } }, "9a065e92e96e4ca8b51e3bfe5a89ab18": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass against a white background. It is suitable for use in a physics simulation as it represents a single object." } }, "9a607dce149d429080ffa0384f6ea025": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building, which does not belong to the classes: tree, ficus, fern, or grass." } }, "9b958d613e9a44dbba580748e7a1789c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the objects are not clearly depicted. It's difficult to distinguish individual grass patches or other objects, making it unsuitable for training a physics simulation." } }, "9be3dc7105064e3a9ca1c137f5a8493f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mountain, not one of the specified classes (tree, ficus, fern, or grass)." } }, "9c61c7e475f14672868516efd609e558": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the provided list of objects. The image quality is good, and it's suitable for physics simulation." } }, "9c7b4806743d4039b8050906089e7eae": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single blade of grass, which falls under the provided object classes. It is suitable for use in a physics simulation to learn parameters like material and young modulus." } }, "9d9ff179ec40449b92aa4aa3072c6633": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the categories of 'grass', 'lawn', 'turf', etc. It's a clear depiction of the object and suitable for physics simulation in a video game." } }, "9e47d3e812c041688bd5b4632669b1ac": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which falls under the specified classes. The image quality is sufficient for training purposes, and it shows a single object." } }, "9e515e752b81448296bb1cde46e905d5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single blade of grass clearly. It is suitable for use in a physics simulation." } }, "9ed1e321c74c4828baebf084a5d53c80": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sphere covered in grass. It's not a realistic depiction of grass and is not suitable for physics simulation." } }, "a04293ae76474859a26db39ea0ae5d46": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock with vines on it, not a tree, ficus, or fern. Therefore, it's inappropriate for the specified classes." } }, "a0a26d82eba448fcb880022b783d6d79": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a blade of grass, which falls under the specified classes (grass, lawn, turf, etc.). It is a single object and the image quality is acceptable for physics simulation purposes." } }, "a180c9fb20374e0db8dbb9abea2e7043": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and unclear, making it difficult to identify the object. It also appears to be a patch of greenery rather than a single, distinct object like a tree, ficus, or fern." } }, "a367f268579744388a26009975d22c90": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's a clear depiction of the object and suitable for use in a physics simulation, as it could represent a grassy area where objects interact." } }, "a3ba1e2158b74852abbcb9a7dd19575f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (trees, grass, animals, rocks) and doesn't clearly depict a single object class. The image quality is also low, and the objects are too small for physics simulation." } }, "a49a998993cb47bcb1633637a00afe51": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a realistic grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, or pasture. The texture is unrealistic and does not resemble natural grass. The image is not suitable for training a physics simulation." } }, "a5b3b750808b44ce808ea1ecd0e07322": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a block of grass and soil in a Minecraft style, which is a stylized representation and not suitable for physics simulation training data. The blocky nature and unrealistic textures do not provide accurate information about the material properties of grass or soil." } }, "a648d29d6d9f40d69661174711e74c6b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is a suitable object for physics simulation in a video game. The image quality is good, and the object is isolated from other objects." } }, "a6da9d4c924b42df896f803c1a950eea": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the objects are not clearly depicted. It is difficult to determine what the objects are, and the image quality is too low for use in a physics simulation." } }, "a7131b89f3d84124aa719b950339e732": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a crate, which does not belong to any of the specified classes (tree, ficus, fern, or grass-related classes). Therefore, it is inappropriate for the video game development training data." } }, "a7be3899690b4fd2a52104484a02b9b7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and depicts a cross-section of the ground with grass and some tree trunks. It doesn't clearly depict a single object from the allowed classes (tree, ficus, fern) and is not suitable for physics simulation." } }, "a85b26d5b741446eafbb7c2fab317557": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape scene with grass and other elements, but it's a complex scene rather than a single, clear object of the 'grass' class. Also, the image quality is not high enough for training data." } }, "a8c006ab18be42859f3454d1d4deeec6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass clearly and is of good quality. It would be suitable for use in training a model for physics simulation." } }, "a940f5a436bb4fd2a44789d6ed886f1c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is not clearly identifiable as a tree, ficus, or fern. It is also too small and blurry to be useful for physics simulation." } }, "a9bb36fafc594d5b9e883f2c67ef73e5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict any of the specified classes (tree, ficus, fern, or grass-related objects). It is also too blurry and low-quality for use in physics simulations." } }, "ab0748c040cc41218df0fb3aecdb1a9e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly depicted." } }, "ab50cc4747834050bbf4404f07874683": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a collection of objects like rocks, wood, and small sticks. It is difficult to isolate a single tree, ficus, or fern for physics simulation purposes. The image also has low quality." } }, "ad4e3f6623c24b76a918aa030bb309d5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass or turf, but it is not very clear and the quality is not high enough. It is also not a very common object to simulate physics on." } }, "ad523ac3f71c4423b0935a3926ffc4de": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass on what appears to be a wooden or concrete surface. It doesn't clearly depict a single object from the specified classes (tree, ficus, fern), and the presence of the underlying surface makes it unsuitable for training a physics simulation focused on the grass itself." } }, "ae01ca7e863d42c78d1fd43887f189e5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stack of logs, not a tree, ficus, or fern. Also, the image contains other objects like rocks and water." } }, "ae483040495a4cfcb4f60529d383de0a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and doesn't clearly depict grass. The quality is low." } }, "aeb918813f8b4de29bd48aa3bd35d6eb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "aec867c66c344ee088977c5176e4e3f6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified class. It's suitable for physics simulation as it represents a surface with material properties." } }, "aed86cb3d9b246aa946f45294010aca3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is an acceptable object for the specified classes. The image quality is good, and it isolates the object well. It's also suitable for physics simulation." } }, "aee32d5985bc46e4bb6618d7d3ad1bd1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any of the specified objects (tree, ficus, fern, or grass-related objects)." } }, "b061ec6075264a6199805d2ee4e92284": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is acceptable for the video game development." } }, "b08abd24ea864f078d806d273b7464d2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass, but it is not one of the classes specified (tree, ficus, fern)." } }, "b11f04f5515d4966b63d1f9bc150deff": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It is hard to distinguish the grass from the background." } }, "b29b5b1aba024b62a672fce2b759f73c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, etc.). It's suitable for physics simulation as grass swaying in the wind is a common scenario." } }, "b2ba61b6558e4ca1b1dba8c582b3b282": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be some kind of abstract, possibly architectural, structure. It's not suitable for learning physics parameters of natural objects." } }, "b2be25ef306d4be8b613148634bb8c4e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single blade of grass, which falls under the acceptable class of objects ('grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture'). The image quality is good, and it is suitable for physics simulation." } }, "b443829105964c19b65f8d4352cd682c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a sphere with grass texture. The grass texture itself is not very clear. It's also not an object that would be used in a physics simulation. Therefore, it's not appropriate." } }, "b4f4cab538e94654aaa36da004375c36": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass and a stone path, not a single object from the target classes (tree, ficus, fern). It also includes multiple objects which is not desired." } }, "b55c82301f5b4b2099e3fee553ba3ec2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry, making it difficult to clearly identify the grass. The low quality makes it unsuitable for training a physics simulation model." } }, "b6a3f0ed66db4c4aa7a69db9f421064a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is not clearly identifiable as a tree, ficus, or fern. The low quality and excessive brightness make it unsuitable for training data." } }, "b737beb4bf184c67b89099d2e36a63e4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains both grass and rocks, and the grass is growing on the rocks. We want images that depict a single object class only. Also, the image quality is not great." } }, "b7980cba836c45ed8b8d9377adebd608": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a house, which is not one of the specified classes (tree, ficus, fern, or grass)." } }, "b8cc44c921c847d2815b913d8cf88765": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass, which is not one of the specified classes (tree, ficus, fern). Also, the quality of the image is not high enough for training data." } }, "b94f24eee3254dbfb119baa307681c8b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). It's a single object suitable for physics simulation." } }, "b98fdb5ae5d840eabaac9602a0675543": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a top-down view of a building with trees planted around it. The trees are arranged in a linear fashion and are not the primary focus of the image. The image contains buildings, cars, and other objects besides trees. Therefore, it's not suitable for training data focused on individual tree objects for physics simulation." } }, "b9f2dab1dafb4072a04214d19bbfc136": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blacked out, making it impossible to identify the object or its class. Therefore, it is not suitable for training data." } }, "bab164da8af04fe1be38357fbc8106d6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "babf1055fe614e65aa5e31950336e9de": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear. It's difficult to discern any specific objects or details, making it unsuitable for training a model for physics simulation." } }, "bb793a0218254bbc8df4ffc65770c40a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-quality rendering of grass. The geometry is very simple and doesn't resemble real grass. The black objects obscure the grass. It is not appropriate for physics simulation." } }, "bbccb58ed815443697cf744951a5e842": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified classes (grass, lawn, turf, etc.). The image is clear and suitable for physics simulation purposes." } }, "bbfcf505d568404ea943adb49544977c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the specified classes of grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, pasture. The image is clear and suitable for training data for a physics simulation." } }, "bc96c5c2e99f489cac0c18fe906d5c42": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including trees, rocks, and water, and the background is too bright and distracting. It does not clearly depict a single object for physics simulation." } }, "bd86327f5e344cdeb4b3c44c95650103": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a block of grass and dirt in a Minecraft style. It's not a realistic depiction of grass or lawn and therefore not suitable for training physics parameters." } }, "bdbf6c819ea042768c282b4c5823e283": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a green rock, which doesn't belong to any of the classes: tree, ficus, fern. It also doesn't belong to the grass-related classes provided." } }, "bde431a187604844852b06fe0e964350": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as a tree, ficus, or fern. It's also difficult to discern its structure for physics simulation." } }, "bdeff2e7db83405abbec6265787b083f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass clearly and is suitable for physics simulation." } }, "bee378d21f2f47358d7bca514bb52deb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a mix of leaves and green plants, not a single object from the specified classes (tree, ficus, fern, or grass). The object is also too abstract and doesn't resemble a natural form of grass, tree, etc. The low quality of the image is also not helpful." } }, "beeff00b4496409da82b7c1a9705039e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of clover, which falls under the category of grass/lawn/turf, and could be used in a physics simulation to model things like grass swaying or being trampled." } }, "bf459c87d1ed4667a777b92079586923": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass patch, which is suitable for physics simulation in a video game. The image quality is also good." } }, "bfa8576efd99412f9ad45b66bb58da0c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a stylized, blocky representation of grass and dirt, resembling a Minecraft block. This is not suitable for physics simulation as it doesn't represent real-world grass or soil accurately. It is also not a tree, ficus, or fern." } }, "c04ac9d8f64c45318983b61f35a20b2b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects like buildings, cars, and trees. It does not isolate a single tree, ficus, or fern. Additionally, the image is an aerial view of a street scene, which is not suitable for learning physics parameters of individual plants." } }, "c0d48c91c25e436fa239770c96a50b23": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tree stump, which falls under the 'tree' class. It is suitable for physics simulation as it shows the base and roots, which are important for understanding stability." } }, "c12dc2ba12b04261a8ca771386c4de57": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized representation of grass, which is too abstract for accurate physics simulation. The geometry is too simple and doesn't capture the complexity of real grass." } }, "c1b06aa33ef44db289cdbacc075d8772": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a patch of grass, which falls under the specified classes (grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, pasture). The image quality is good enough for training data, and it's likely to be used in a physics simulation (e.g., grass being affected by wind or objects falling on it)." } }, "c22338f5d1964b8cab92aa20704b757e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a suitable object for physics simulation in a video game." } }, "c257155d87164e869e4ba0d7f316aba5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of grass and soil, not a single object of the specified classes (tree, ficus, fern, or grass)." } }, "c2b11c05534e47eb91d5fe20b22594a7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and it's difficult to identify the object." } }, "c307cc43db6e4a42822758a797f7edff": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and blurry, making it difficult to discern the details of the grass. This would not be suitable for training a physics simulation." } }, "c4908fe845d34ab6b359bb6acf31ec7d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation or cliff face with some vegetation. It does not clearly depict a tree, ficus, or fern, nor does it depict an object belonging to the classes of grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, or pasture. Therefore, it is inappropriate for the specified classes." } }, "c5d50935f7dd498db4b0aa3a4f499c55": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "c6f50fbabe7740c5a269304a9958d8f2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It looks like a pixelated representation, which is not suitable for physics simulation training data." } }, "c7b3cadd101245d899ca49fa587b2745": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is suitable for physics simulation in a video game environment." } }, "c804e70a4d594f1bb307ee646b0e3b0e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the classes we are interested in. The image quality is good and the object is isolated on a white background." } }, "c84573687bf14f89938002df4ca0e696": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows multiple patches of grass, not a single, distinct object. We need images of single objects for physics simulation training." } }, "c85e630fe973485c9db736d25a60ad75": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the classes we want to select. The image quality is also good." } }, "c86bba3546094c81ababfdf7db95e19c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. The object is not clearly depicted." } }, "c925dad64fcd4181be7050cd15af79de": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and doesn't clearly depict a single object from the specified classes. It's also difficult to discern the object's features for physics simulation purposes." } }, "ca35e659a4a04f25b5ce40e4482d1ebb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is a valid class for the video game development and physics simulation." } }, "ca4203fc0ebf41c29fa75e10dbf92c6e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a brown plane and does not depict any of the specified classes (tree, ficus, fern, or grass). It is not suitable for training data for those objects." } }, "cab46675f9ff4c56bf51d3fd09ccd82f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes. The image quality is sufficient for training data." } }, "cab585dfab1c4536ac64bf94e631303f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains grass and other objects, and the quality is not high enough for physics simulation training data." } }, "cb3ef888c0014d34b1c9d7de69ac87d7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as a tree, ficus, or fern. The image quality is low and doesn't provide enough detail for physics simulation purposes. It's also not clear what the object is supposed to be." } }, "cb62a8dd9b024c798a44326a3f030004": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which is a suitable object for physics simulation in a video game. It falls under the class 'grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture'." } }, "cb812c650f184b37a7e8c1a7c74a5b31": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a factory, which is not one of the specified classes (tree, ficus, fern, or grass)." } }, "ccbac0994a6744b7b51a41e4df672be8": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple objects and the trees are on patches of grass. It's not a clean depiction of a single tree." } }, "cce7a8d62e4a461ab8ae35197886e362": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grassy patch, which falls under the provided categories (grass, lawn, turf, etc.). It's a clear, isolated image suitable for physics simulation training data." } }, "ce03db020c544900959e5aa9c892bd68": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or grass-related objects). It looks like a green, circular object, but it's not identifiable as any of the classes mentioned." } }, "cf1f5ea6561a414a890cffbc06651501": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any of the specified objects." } }, "cf7e084eec3a4382906e6fcde13e1c26": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a relevant object for physics simulation in a video game environment." } }, "cfcea543717e46a29e887bbff0e26bdc": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and it's hard to distinguish any objects." } }, "cfe72a7b8fe34f899c8f1f8818acc3a4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the specified classes. It's suitable for physics simulation as grass swaying in the wind is a common scenario." } }, "d0389dbd06be4f8e98ededa619ebafa8": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry, making it difficult to identify the object clearly. It's hard to tell if it's grass or another plant, and the quality is too low for training data." } }, "d10eb8c7196a43de8c10a425fed58867": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, including grass-like plants and what appears to be a rock formation. We need images that depict a single object clearly." } }, "d1827a8ae661417cb448e4290a835920": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and doesn't clearly depict any of the specified object classes. It resembles a green, textured block, but it's not recognizable as a tree, ficus, or fern. The quality is also low for training data." } }, "d1d1f44576fa4850911d33e83f70256f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a patch of grass, which falls under the allowed classes. It is also clear and well-lit, making it suitable for training data. The object is isolated on a white background." } }, "d25c1d2d46384e5a86b7a0ca983ea84b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a suitable object for physics simulation in a video game. The quality of the image is good enough for training." } }, "d271352c5e674d35b9dcab530abdc814": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low and it's hard to identify the object clearly. It's blurry and doesn't represent any of the specified classes well enough for physics simulation purposes." } }, "d445d64677e24660a6297bcb3e7b4e1f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern-like plant clearly and in isolation, suitable for physics simulation in a video game." } }, "d4f9b4fbf5644e89a4d562c91ea13bd3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as belonging to any of the specified classes. It appears to be some kind of terrain with vegetation, but the quality is too low for training a physics simulation model." } }, "d5176e0342044768959bcc77b5604d8a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a block of grass and dirt in a pixelated style reminiscent of Minecraft. This is not a realistic representation of grass, lawn, or turf, and it is unlikely to be used in a physics simulation for video game development. The pixelated style would not provide accurate data for material properties or young modulus." } }, "d617e6bdfe46499f9fb0cf5a0dfe9865": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or grass-related objects). The objects in the image appear to be abstract, blocky shapes, and it's unclear what they are intended to represent. Therefore, it's unsuitable for training a model to recognize these classes for physics simulation." } }, "d65f7ae6d1064be2b82da3fdae9eaecc": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or grass). The object in the image is not recognizable as any of these." } }, "d6dd924a79ad43e3a0a2e18692451cb4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the depicted object is not clearly recognizable as belonging to any of the specified classes (tree, ficus, fern, or grass-related objects). The quality is low, and it's difficult to discern details for physics simulation purposes." } }, "d71e1231f13c4d2b8391e12bfc24ba37": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is not clearly identifiable as any of the specified classes (tree, ficus, fern). The color is also not realistic for these objects. It's difficult to determine what the object is supposed to be, making it unsuitable for training a physics simulation." } }, "d8ce99169adc4a2ca4ad27009973a462": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict any of the specified plant classes (tree, ficus, fern). The colors are also unnatural and the shapes are not realistic, making it unsuitable for training physics simulations." } }, "d91580a927854f6c8efede1df0dc3ca8": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify any of the specified objects (tree, ficus, fern, or grass-related objects). It is also too bright." } }, "d91ddc3d4be94b7498685291b5afef99": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the object is not clearly identifiable as any of the specified classes. It could potentially be grass, but the quality is too low for training data." } }, "d936897141fb4df89f67153370ec3e32": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains grass but also another object. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "da1c42e11e904c1ca4666fd8777130ff": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and doesn't cleanly depict a single tree, ficus, or fern. It shows a landscape with trees, grass, and a river, which is not suitable for training a physics simulation of a single object." } }, "dacaed9a48d845299f3dfa45f9dcb946": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tuft of grass, and the quality is sufficient for training a physics simulation. It's a single object and fits the criteria." } }, "db3876256ec94f59b093d46d5ff6091f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is suitable for physics simulation in a video game. The image quality is also acceptable." } }, "db4f61e60a294015b54953404322c596": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a clear depiction of grass, which falls under the specified classes. The image quality is good, and it is suitable for use in a physics simulation." } }, "db50843121e64c5d9cecf5bed53a78e4": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with multiple objects and is not suitable for training a model to recognize a single object of a specific class like tree, ficus, or fern. Also, the image quality is not very high." } }, "dbf96936e96c4d5a895dbf92040c8d70": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a block of grass and dirt in a Minecraft style. This is not a realistic depiction of grass, lawn, turf, grassland, meadow, grassy field, green grass, grass patch, tall grass, wild grass, or pasture. The image is too stylized and unrealistic for physics simulation training data." } }, "dc1fd4f8db174132baa79df775f743ce": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and does not clearly depict any of the specified object classes (tree, ficus, fern, or grass-related objects). The object is also not easily identifiable." } }, "dc2572f3cafb4f46a1eaf2101ac0837a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple grass patches and a larger grass area. We need images with only one clear depiction of the object." } }, "dc3ef6b1ce5241c9b3a8d30300416107": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a Minecraft block of grass and dirt. It doesn't fit any of the specified classes (tree, ficus, fern) and is not suitable for physics simulation due to its blocky, unrealistic nature." } }, "dc44954d946848559cee3a09dbb3d8f5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a plant that does not belong to the specified classes (tree, ficus, fern). It appears to be a type of grass or weed, but it's not clearly identifiable and doesn't fit the criteria for inclusion." } }, "dc56f36e47c441a6b26221e01d1e1e98": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass-covered container, not a natural grass patch or field. It's an artificial object made to look like grass, which is not suitable for physics simulation of natural grass behavior." } }, "dc879e2f461549eb8f0e3b862cc5f086": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which falls under the provided list of acceptable objects. The image quality is adequate for training purposes, and the object is clearly visible." } }, "dd025ddcd02d48b5af2ea68bd757a0f5": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a patio or backyard scene with bricks, steps, and some grass. It does not clearly depict a single object from the classes: tree, ficus, or fern. The presence of multiple objects and the unclear depiction of a single object make it unsuitable for training a physics simulation model focused on individual objects." } }, "dd1e9d6d62eb45fdaf6e45f2c25bf149": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two objects: a sphere and a rectangular patch. The objects are not clearly identifiable as belonging to the specified classes (tree, ficus, fern, or grass). Additionally, the presence of two separate objects in the same image makes it unsuitable for training a physics simulation model focused on individual object behavior." } }, "dd5d3808157146eda97380d3e1fbfd31": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and the quality is low. The object is not clearly depicted." } }, "dde6238094054c42bfd0e0d32335a36c": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is a valid class. The image quality is good, and it's suitable for physics simulation." } }, "ddfae90b341842d397d0e7f2d530d9a0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone wall with some grass growing on it. This does not belong to the classes tree, ficus, or fern. Also, the image quality is not great." } }, "df13dcb545c74ecf8b20bc079723a697": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts grass, which is an acceptable class. The quality is good enough for training." } }, "df4eb313c61f40deb619d8fdabecc5ef": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Minecraft-style block of grass and dirt. This is not a realistic representation of grass and is not suitable for physics simulation or training data for video game development aiming for realistic physics." } }, "e102eccaab14477692b5cef2bdfa6c0b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a lawn or grass patch within a defined border, which is not a single object of the specified classes (tree, ficus, fern, or grass). It's a composite scene and would not be suitable for learning individual object physics." } }, "e224e9468c9045608f1ef7abe5e07745": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or grass). It appears to be an architectural plan or a layout of some sort, possibly a building or structure." } }, "e3b8de62ebfa409cb320f497671686ba": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape or terrain, not one of the specified classes (tree, ficus, fern, or grass). It is also not a single object." } }, "e45c56f57959459ea12769c1503a28cb": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a non-natural, abstract object that does not fall into the categories of tree, ficus, or fern. It is not suitable for training physics simulations of natural objects." } }, "e493634e9a244dd6911cddfa0ee0d7c7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not contain any of the specified classes (tree, ficus, fern, or grass). It appears to be a depiction of a mountain or sand dune." } }, "e4f0d417d8684f4a8e3b3aef663924c0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and blurry, making it difficult to discern the objects clearly. The objects are also not clearly depicted, and it's hard to tell if they belong to the specified classes. The image quality is too low for training data." } }, "e5317637f57d48b6ba0668cc7c074498": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree stump, which is a valid object for the 'tree' class. The image quality is good, and the object is clearly depicted." } }, "e58b89ba5b5047338210dbcf730f7b05": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image is blurry and does not clearly depict a single object belonging to the specified classes. It appears to be a patch of greenery, but the quality is too low for use in physics simulation training data." } }, "e5f63e1258164e17899543fcc6475383": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a grass patch, which is suitable for physics simulation in a video game." } }, "e5f8a5e78f46481baca02811916f046f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and it's difficult to discern any objects clearly. Therefore, it's unsuitable for training data." } }, "e6dead50072b4233a28e81d6838b1cff": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "e79ad65142b243f1985854b635aa577f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a fern, which is a relevant class. The image quality is good, and it depicts a single object, making it suitable for physics simulation training data." } }, "e7bd3bd978ad46c8883a004be097e06b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts an object that resembles a patch of grass or turf, which is included in the negative class list. Therefore, the image is inappropriate." } }, "e867464f56204aa781f8423d42874782": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "e912725aedd14dfb89413516dbcfe0f0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and doesn't clearly depict a tree, ficus, or fern. The quality is too low for use in a physics simulation for video game development." } }, "e937a37439f347ee8ee8897a17a28746": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass, but the rendering is very stylized and unrealistic. The grass appears to be made of flat, dark planes with green lines on them. This is not suitable for learning realistic physics parameters." } }, "e99bc54fb9ab4450ab6aa84b6f0e83e3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is too low and the object is not clearly visible. It is difficult to determine if it belongs to any of the specified classes." } }, "ea5886e378ec45a8a1e5be2db001bdc3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass, which falls under the category of 'grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture'. It's a clear depiction of the object class and can be used for physics simulation." } }, "ea72b84b697b49a5ac7d16679751dfa2": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains grass and concrete, making it unsuitable as it doesn't depict a single object clearly." } }, "eb4f6dc9d4e3455ea3435385faf58b60": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains two separate objects (grass patches) instead of a single, clean representation. This makes it unsuitable for training a physics simulation model focused on individual objects." } }, "eb6a5554fdd74ef5b48df93931cf5fef": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tuft of grass. It is suitable for physics simulation in a video game." } }, "ec6ad25ef0584c858bf6a0799003bee3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a landscape with grass on a mountain, not a single object from the specified classes (tree, ficus, fern). It doesn't fit the requirement of depicting a single, clear object for physics simulation training." } }, "ec98b4af5de74da6b84c07af55a5d66b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass object clearly and is suitable for physics simulation." } }, "ecfbc550b32e4227a0905df60f4f33e9": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree, rocks, and other objects, which is not ideal for training a physics simulation on a single object." } }, "edbda554ac4442d3bf2f6c54d205aa71": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a car on a grassy field. While it contains 'grass', it also contains another object (a car), which is not permitted in the instructions." } }, "ee17fad1ae894bcc8ebdd841874d0728": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "ef0eba6fdaca4dfea43a3f9631738b5b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, blocky representation of grass and soil, resembling a Minecraft block. It's not suitable for physics simulations due to its unrealistic and simplified geometry." } }, "ef69b054ca754433b7c04b64bf5bb6be": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is distorted and doesn't clearly depict any of the specified classes (tree, ficus, fern, or grass-related objects). It's unsuitable for training data." } }, "f03940a1b75d44269cc6f72d86a311a9": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, and the quality is good enough for physics simulation." } }, "f092bef40472427ca42e16450a41490b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a grass patch clearly and is suitable for physics simulation." } }, "f0b6be6d7ec94f2ca9364e505ecc9ea6": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a tuft of grass, which is suitable for physics simulation in a video game environment. It falls under the specified classes (grass, lawn, turf, etc.)." } }, "f1defa8658d74dd685ac158a4c98f668": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and the grass is not clearly defined. It is also difficult to discern the individual blades of grass, making it unsuitable for physics simulation." } }, "f354209291c04e2ea8a2714179bd7bae": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern, which is one of the classes we are interested in. The image quality is good, and the object is isolated on a white background." } }, "f3957d4a3aad4483baef1393352cb4f1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, blocky representation of grass and soil, which is not suitable for physics simulation training data. The simplified geometry and lack of realistic detail would not provide meaningful information about material properties or behavior." } }, "f3ae2521bcfb454fb856133919cf7cd1": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to be a stylized representation of grass, but the blocky, geometric design makes it unsuitable for realistic physics simulation. It doesn't resemble natural grass closely enough for accurate material property estimation." } }, "f492a52b31084d66b04fe10fe34a0672": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which is suitable for physics simulation in a video game. The quality of the image is also good." } }, "f4d07c628e1d43648ef978f1b0ae9fef": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple grass patches, not a single object. This is not suitable for training data where we want to focus on individual objects for physics simulation." } }, "f4e21c677909486281cf157afc601f53": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which falls under the specified classes. The image quality is acceptable for training data." } }, "f5035cac932a4909b61bd466a804605d": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts grass on a platform, not just grass. It's unclear if we should be modeling the grass or the platform. The grass is also a strange color, which could make it difficult to train a model." } }, "f50b15df88294a4d977a66ccf953c776": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a patch of grass, which falls under the provided list of objects for the class. It's suitable for use in a physics simulation." } }, "f5ae7d17dfae48a698ec0cc3809ed35b": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a clump of grass, which is a suitable object for physics simulation in a video game. The image quality is good and the object is clearly depicted." } }, "f602b8aad3a749c8ae12d6a44ff062c7": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts grass, which is one of the classes we want. It's a single object and the image quality is good." } }, "f61ce36038f34a0cba12b8d8b95cd605": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or grass). It appears to show a piece of wood or debris." } }, "f65afd4d16184e5dbcd2f94a62dffcdc": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable. It is difficult to determine if it belongs to any of the specified classes (tree, ficus, fern) or their related objects (grass, lawn, etc.)." } }, "f70eb8a83e664bcf956e450bdfbee1b0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "f747d6211ff84e8d863aa2cb4542c99e": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and does not clearly depict any of the specified object classes (tree, ficus, fern, or grass-related objects). The quality is too low for training data." } }, "f7e40137cd6a4d31a0eb0a9597291f78": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts grass, which is one of the specified classes. The image quality is good enough for training purposes, and it shows a single object (ball of grass). This could be used for physics simulations." } }, "f7e6624ac05741a69afa94c6419c91d0": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark and blurry. It's hard to make out the details of the grass and other plants. Also, the image includes a base, which is not ideal for training data." } }, "f83493268040411fa5eb44ff2cbcfa8f": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tree stump, which is not one of the specified classes (tree, ficus, fern). Additionally, it includes moss and other ground cover, making it not a clean depiction of a single object." } }, "faa67990d1164cef82121c02af41caf8": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a fern, and it is isolated on a white background. The quality of the image is good enough for training purposes." } }, "fac176ce48fe4af1b24012ea05369113": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, pixelated depiction of grass and soil, resembling a Minecraft block. It is not suitable for training physics parameters due to its artificial and unrealistic nature." } }, "fbabe979c8ec4c7e83924dd2faba3d10": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the objects are abstract and not clearly depicting the classes of interest." } }, "fbe376f3f3ff4daa847dce0a6a543313": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict the object class. It also appears to be an artistic rendering rather than a realistic depiction of a plant, which is not ideal for physics simulation training data." } }, "fd83b9f2a6be457babdae57666cdec21": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of grass, which falls under the acceptable classes ['grass', 'lawn', 'turf', 'grassland', 'meadow', 'grassy field', 'green grass', 'grass patch', 'tall grass', 'wild grass', 'pasture']. It is also a single object and the image quality is good." } }, "fdc9454d83cd46099d477f811e76b59a": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts the grass, and it is suitable for the physics simulation." } }, "fe5abfab78f1444d9e11208b7e658527": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rock formation with some vegetation, but it doesn't clearly belong to any of the specified classes (tree, ficus, fern, or grass-related objects). The presence of the rock is the main reason for rejection." } }, "fe8b577432814fc9aaa22777ba4b5768": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or grass-related objects). It appears to be a white cube on a white plane, lacking the necessary characteristics for training a physics simulation model for the given classes." } }, "fe94ce681095435397d601f3654f1fa3": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and the quality is not high enough." } }, "ffc31811b327451fab671cf103a50f86": { "obj_class": "grass", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, blocky representation of grass and soil, resembling a Minecraft block. It's not suitable for physics simulation due to its unrealistic and simplified nature. It does not represent the properties of real grass or soil." } }, "00184cc3c6674f2a8aa79e0e0d77ae31": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant in a pot, which falls under the 'flowering plant' category. It's a single, clear object suitable for physics simulation." } }, "002a0a1c6d9e428f890d8410e997af6e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is a valid class for this task." } }, "004034de724341ef82db684137be0d2a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoon character, not a tree, ficus, or fern. It is not relevant to the specified object classes." } }, "00be4b33848b46bd9406bb34a6262f0f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flower bouquet on a table with other objects. It doesn't isolate the flower bouquet as a single object for physics simulation purposes. The presence of the table and other items makes it unsuitable." } }, "00c1ad9aadeb480db20bb09a88f898d6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not depict any object." } }, "015f09eab95549b2ad17955b64b7d388": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a collection of pots tied together, which doesn't fall under the specified classes (tree, ficus, fern, or flowers). It's also not a single, easily identifiable object for physics simulation." } }, "01a1ed30f31b4539874af40858adc154": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image includes multiple potted plants on a shelf. It is not a single object." } }, "01ac23f6a167474e83d654c0b92e51ab": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts two planters, not a single tree, ficus, or fern. Therefore, it's not appropriate for the specified classes." } }, "01e497e88b114221bf4a6c4c16547e66": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is abstract and does not clearly depict a real-world flower. It's not suitable for physics simulation based on real-world material properties." } }, "02e777bdc5114b148963ed3def6ad471": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tulip in a pot, which falls under the 'flower' category. It is a single object, and the pot is acceptable as part of the object. It is suitable for physics simulation, e.g. dropping the pot." } }, "02e8a835096d416990bf06d8a13333d7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pot, which is not one of the specified classes (tree, ficus, fern, or flowers). Therefore, it is inappropriate." } }, "03eb583ab2d841dc8f16b59974d481e7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which falls under the 'flower' class. It is suitable for physics simulation as it shows a common object found in nature." } }, "03f66e91accf4361a3310765efebb837": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is a valid object for physics simulation in a video game. It belongs to the class of flowers." } }, "046480b45715470b841cd49ea9a7388f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is included in the list of allowed objects." } }, "052662a6e50048c786ccc83aa4db36eb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a flower arrangement on top of a box. The object is not clearly a single flower arrangement, and the presence of the box makes it unsuitable for physics simulation of a flower arrangement." } }, "07ad2980185a40a99ebc2691034c1f6f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a question mark box, which does not belong to the specified classes of tree, ficus, or fern. It is not appropriate for the intended use in physics simulation." } }, "07da86a8197e4c51b6ab764defb6ea0f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern-like plant clearly and solely, making it suitable for physics simulation in a video game." } }, "07ef4d7465c94b65b9e36ac97991e56b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a single object from the specified classes (tree, ficus, fern). The fragmented nature of the image makes it unsuitable for physics simulation purposes." } }, "081a0bc8cea84009a8d5c54d766b3bc4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of roses, which is appropriate for the flowers class. It is a single object and suitable for physics simulation." } }, "081f2783a8e44b559d37c08f7a402843": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which is a valid object for physics simulation. It clearly shows the object class and does not contain additional objects." } }, "0879d1f86bad41e39ffff1784cc5d8ec": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is not a real flower, but a flower pattern on a ring. It is not suitable for physics simulation." } }, "08b7604e16784159abae310422197b62": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict an object that falls under the specified classes (tree, ficus, fern). It appears to be an abstract or stylized representation that is not suitable for physics simulation purposes." } }, "09d5c78bf14d46be82a4c77c8a6f7c29": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flowers' class. It is a single object and suitable for physics simulation." } }, "0a0f5b4e595940649ea3cabeb7a4b1e1": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a daisy, which is a type of flower. It is a single object and suitable for physics simulation." } }, "0a3f3d70a41e46d9b9389446ae4c0667": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-resolution, abstract representation that does not clearly depict a tree, ficus, or fern. It's difficult to discern any realistic features that could be used for physics simulation." } }, "0a7f34366c1a4c0fa306100ae4c47846": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus plant in a pot, which is a clear representation of the object class. It is suitable for use in a physics simulation." } }, "0c77dfdf9430465f9767a58d56e8fca1": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a daisy in a pot, which falls under the category of 'flower' or 'flowering plant'. It's a single, clear object that could be used in a physics simulation (e.g., being dropped or swaying)." } }, "0c9c4965c02845e29a8aa3941d026267": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "0cb9f63ce0574604bb084f9d3c70cbc0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a simple geometric shape, possibly a column or pillar, and not an object related to the specified classes." } }, "0d1311d361da4a5682d453fb334017e5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which falls under the specified classes (flower, bouquet, rose, tulip, daisy, lily, sunflower, orchid, flower arrangement, flowering plant, garden flowers, wildflowers, floral). The image clearly depicts the object and is suitable for physics simulation." } }, "0dc5d3c603ff45719c430cdc408ba6ec": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "0ead7a2453da47c3a39b550fb283314f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a ficus in a pot, which is a single, clear object that can be used in a physics simulation, such as swaying in the wind." } }, "0f58352d377840cdbeef0bd71b24aff6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which is a valid object for the 'flower' class. It's suitable for physics simulation as the flowers and vase can be simulated." } }, "0f761cb080aa48fd908c2d9e780dc66c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a statue with flowers and butterflies, not a single object from the specified classes (tree, ficus, fern, or flowers)." } }, "0fa50cf622f44f2ba59eff6c11cb8fbd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It's a single object, suitable for physics simulation." } }, "10fdee6e988046e9bfa6344e9666cf50": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. The object in the image is not easily identifiable and does not fit into any of the specified categories." } }, "112092b8d48a44ee84a1d8d5adab0de3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too unclear to identify the object." } }, "1141493c75824b3899737d80fe42cb99": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is appropriate for the class of flowers. It is also suitable for physics simulation." } }, "11deb0db4a7e427ebc98e37ad905795a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower arrangement in a planter, which falls under the 'flower arrangement' category. It is appropriate for physics simulation as a single object." } }, "12011b23135340d98c246b5801bbf7b7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a poinsettia plant, which falls under the category of a flowering plant. It can be used for physics simulation, such as the swaying of the leaves." } }, "12768caa111f446b8796e70f9cc53a23": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is acceptable for physics simulation purposes in a video game. It falls under the 'flower' class." } }, "12e709bde5d14775878e4a0a63fd4b86": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. It is suitable for physics simulation as well." } }, "14ec94367b6740479869c68d07b649d7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is not easily identifiable as a tree, ficus, or fern. It appears to be an abstract shape or a poorly rendered model. It's not suitable for physics simulation due to its unclear structure." } }, "152288455d604332a44a0fd10b815495": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. The object is abstract and doesn't resemble any of the specified classes." } }, "15cf1f50094e4b1ca87ff35081cd3e86": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "174da8be655e4954a8e8095dcd655c90": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image doesn't clearly depict a tree, ficus, or fern. It appears to be a simple geometric shape, and it's not clear what it represents." } }, "1791606ba80b4a45ab28e0dd89336b41": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a floral arrangement, which falls under the 'flower' category. It could be used in a physics simulation for things like flower petals falling or the arrangement being knocked over." } }, "185e86b0be094440b77ee95c1e697cb0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. It's a single, clear object suitable for physics simulation (e.g., dropping the pot or simulating the flower swaying)." } }, "18608cc8bd01413e96bae159ede9b78f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus, which is a valid class. It's a single object, and suitable for physics simulation." } }, "18f5fba66f944aad9ae84ea2172b9b78": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant (lavender), which falls under the 'flower' class. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "19f60721b3f2494bb86a4154df344797": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a sunflower bouquet in a vase, which falls under the 'flower arrangement' category. It's suitable for physics simulation as the flowers could sway or the vase could be dropped." } }, "1a08d4f6066f46c6939540dd38592dd4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "1a49bbbe5bf644acb3d75f848ef0e5b9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It seems to show a building or architectural structure." } }, "1b134c07a258417daf337b069f5e476d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern in a pot, which is a single object and suitable for physics simulation." } }, "1b4eedcd9e0f427696d3e92e24daf601": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is an acceptable object for physics simulation in a video game. The object is isolated and well-defined." } }, "1bc37420962d48dc8c179eec538ca018": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple flower pots with different flowers. It doesn't depict a single, clear object for physics simulation." } }, "1c04ccd9320142a7ad286f90557e6df1": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which falls under the 'flower' category. It can be used in a physics simulation to learn parameters like material and young modulus." } }, "1cdf9df6b941460bb70b7758c9e416ec": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is appropriate for the video game development and falls under the specified classes." } }, "1d6dc3d770124dbc878c0e3217e76c44": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and doesn't depict any object." } }, "1d98103d4d4c4972a960c642fb6a28e2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the allowed categories (flower arrangement). It's also a single, clear object." } }, "1ddbe7a7e9604242b9bd92999b3dd912": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is a valid class. It is a single object and could be used in a physics simulation." } }, "1e704ff821fb4df5acb42117855e0370": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict any of the specified classes (tree, ficus, fern). It's difficult to determine what the object is, making it unsuitable for physics simulation purposes." } }, "1f010e8939fc4dd28dc2aaece165c736": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is an acceptable object for physics simulation." } }, "1f051fc353e746869844ca45412c850b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose in a vase, which falls under the 'flower' class. It is a single object and could be used in a physics simulation." } }, "1f8727ab468e46279ec82488b451abeb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern). It appears to show a geometric shape, which is not relevant for the intended purpose of physics simulation of plants." } }, "1ff30c117c7046188e8c464587860acc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is all white except for a small gray shape, so it doesn't depict any of the specified object classes (tree, ficus, fern, or flowers)." } }, "20795a75fba54d0da418d75613d1af39": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a robot, which does not belong to the classes: tree, ficus, fern." } }, "208dc8b288fb46c18305739aa248ea76": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very simplified, cartoonish flower, which is not suitable for physics simulation due to its unrealistic geometry and material properties. The image does not clearly depict the object class in a way that would be useful for determining physical parameters." } }, "20b2231f4ef74f84b70aa489e64bef1c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is suitable for physics simulation in a video game." } }, "212a916097d14be1a7faf72ddbdd42bc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a valid object for the video game development. The object is clearly depicted and isolated, making it suitable for physics simulation." } }, "231445f7a8c44711b3043763abf46ff7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple flower arrangements, not a single object. Also, the image includes the ground, which is not desirable." } }, "2482756c49a74028b1d9122cb05cefe8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It's a single, clear object." } }, "2581c2b856bd4a7aa74b485cbe9449e8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple potted flowers, not a single, distinct object from the allowed classes (tree, ficus, fern, or flower). It's also not a typical flower arrangement like a bouquet or vase of flowers." } }, "259efc08ab284fa8bf2e19db848ea378": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a planter box, which falls under the 'flower arrangement' category. This is suitable for a physics simulation as it can be used to simulate the swaying of the flowers in the wind or the impact of the planter box being dropped." } }, "25eba00d20204038ab470c903d5e4803": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is a valid object for physics simulation (e.g., swaying in the wind)." } }, "261afeb179d945658cfcfefc73b28101": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower in a vase, which falls under the 'flower' class. It is suitable for physics simulation as it can be used to study the material properties and behavior of flowers." } }, "261f3a8b2eae4bb0b014cf35533432cf": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flower' class. It's a single object and suitable for physics simulation (e.g., how it falls or breaks)." } }, "26995de7a8554494b6689a19bac7fcd4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a group of abstract shapes that do not clearly represent a tree, ficus, or fern. The objects are not recognizable as any specific plant from the provided list. Therefore, it is not suitable for physics simulation of a specific plant type." } }, "26ba4f1a017b471381d8d02226fdd447": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or flower-related objects). It's an abstract shape and not suitable for physics simulation of the target objects." } }, "26c66f331a8847188b32fbac92f3bee0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a sword, which is not one of the specified classes (tree, ficus, fern, or flower-related objects)." } }, "270f57c7311b46119f512545e4d04ac8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower arrangement in a vase, which falls under the 'flower arrangement' category within the broader 'flowers' class. This is acceptable as it is a common presentation of flowers." } }, "274f6209ef1a4210b9b4534a0fdb4475": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a lily, which falls under the 'flower' category. It's a single object and suitable for physics simulation (e.g., flower falling)." } }, "283f9f113a56439087f57e95f9b7a0da": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. It is suitable for physics simulation." } }, "2858b1015a6e4b66b716f884621c6756": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and difficult to discern the object clearly. It's hard to tell if it's a tree, ficus, or fern with enough detail for physics simulation purposes." } }, "28d559520ca54e58b32f64f9bc97b1d9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is an abstract rendering and does not clearly depict a real-world object like a tree, ficus, or fern. It's not suitable for physics simulation as it lacks realistic physical properties." } }, "298e1747baac4752a795c567f85c7f13": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which fits the 'flower arrangement' category. It is suitable for physics simulation as the swaying of the flowers in the wind can be simulated." } }, "29fc5a749cb04735a787e518b188b393": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a ring-shaped object, which is not relevant to the specified classes." } }, "2aa7264393544dc98f7b2e74857e6952": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower arrangement, which falls under the 'flower' class and is suitable for physics simulation in a video game." } }, "2ac3550946324e9ab9d78b271a60bd78": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts two flower arrangements on a table, which is not a single object and includes other objects besides the flowers. It's also not a great candidate for physics simulation." } }, "2ae03504ab8c4a608b91f1d016e9e882": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a potted flower arrangement, which falls under the 'flower' and 'flower arrangement' classes. It's suitable for physics simulation as the flowers and pot could be simulated swaying or being dropped." } }, "2b1a4b57567b40c88a50a6551ac312ef": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flower' class. It's suitable for physics simulation in a video game." } }, "2bb621c42485443fa87e19badff916e4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bouquet of tulips in a vase, which falls under the 'flower' class. It is a single, well-defined object and could be used in a physics simulation." } }, "2bbe59189dc044dd9843be910a9e8850": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a potted flower, which falls under the category of 'flowering plant' or 'flower arrangement'. Therefore, it is appropriate for the video game development." } }, "2e4264a5eb9a4f25b2fb4c75d4ce753f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single daisy, which falls under the 'flower' class. It is suitable for use in a physics simulation." } }, "2e5fb714db794694bd2be504eb9f2b57": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bouquet of flowers and gardening tools. Since it contains multiple objects, it is not appropriate." } }, "2f8fb25245544c7d8adec79f2462a053": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is suitable for use in a physics simulation in a video game." } }, "2ffde33617984042907fc5a4cc3b0f87": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. The image is an abstract shape and does not clearly represent any object class." } }, "30534353745b4ae0b59734e2898084c9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which falls under the allowed classes (flower, bouquet, rose, tulip, daisy, lily, sunflower, orchid, flower arrangement, flowering plant, garden flowers, wildflowers, floral). It's suitable for physics simulation as it can be used to simulate swaying in the wind or being dropped." } }, "305f2b09e0de48bb919116026aba8f44": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is of a flower pot, which is not one of the specified classes (tree, ficus, fern, flowers). It also doesn't contain any of the objects in the list provided for the 'flower' class." } }, "30e0bfe5488d402184303f36347519b4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not depict any of the specified object classes." } }, "321aa580b60a474082df0260831f3c68": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and indistinct to clearly identify the object as a tree, ficus, or fern. It's not suitable for physics simulation due to the lack of detail." } }, "32c270ecba1c455fab151bee643722eb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which is a type of flower. It is suitable for physics simulation." } }, "333aed4b4a4f4c5e931d6b84ac475761": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which falls under the allowed classes (flower, bouquet, rose, tulip, daisy, lily, sunflower, orchid, flower arrangement, flowering plant, garden flowers, wildflowers, floral)." } }, "33711b2efebf4373a3eb269dccc1d56b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a valid object for simulating physics in a video game. It is also a single object and clearly depicted." } }, "339bd12179614121a66fd38400a22148": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. It is suitable for physics simulation as it can be used to simulate the swaying of the flower in the wind or the impact of dropping it from a height." } }, "34ffa6a7d5ce4f6c98e3ab2980d53040": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flowering plant' category. It is a single, clear object and could be used in a physics simulation, for example, to simulate the swaying of the flower." } }, "351a73a2ef694c6f8aba7d5ccdf7f9b6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a vase, which is not in the list of classes." } }, "3577f9b7764549bcb48b78fc01d979b7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too washed out and it's hard to discern what the objects are, let alone classify them into tree, ficus, or fern. It's not suitable for physics simulation purposes." } }, "3581d5bd2d4f419e93fac468696a408c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is abstract and does not clearly depict a tree, ficus, or fern. It's difficult to discern the object and its properties for physics simulation." } }, "358451494a53422795d1336e45ac1365": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a abstract rendering of a fern. It is not suitable for physics simulation, as it does not clearly depict the object." } }, "35b2d21fc65d4ecfaba5a72257d41686": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a stylized, abstract object that doesn't resemble any of the specified classes. Therefore, it's not appropriate for the video game development use case described." } }, "3632842fdf5b4500bb296c02e6272800": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bouquet of flowers, which falls under the 'flower' class. It is suitable for physics simulation as the material and young modulus can be learned to simulate the physics of the object." } }, "3661b71f9494405da64f0dbdcc1a4ae9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' class. It is a single, clear object and could be used in physics simulations." } }, "367d086c46a94657a506595b5cb6891c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too unclear to identify any of the specified objects (tree, ficus, fern, or flower-related objects)." } }, "36a6a3304744466da468f0b8cdc083c7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a sunflower, which falls under the 'flower' category. It is a single object and suitable for physics simulation." } }, "37163c583c2b47c297cac021569ccd4b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is suitable for physics simulation in a video game." } }, "37581dd86d514bc9bd94fd6a3f4d65be": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a stylized plant that doesn't clearly fall into any of the specified classes (tree, ficus, fern, or flower). It's a group of plants, not a single object, and its stylized nature makes it unsuitable for physics simulation based on real-world parameters." } }, "38a7ac93d29b494dafce2f31ce4c2003": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It's difficult to discern any specific object from the image." } }, "38c361db774243ee8908eb3b1ed2ab85": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It's difficult to discern the object's shape and form, making it unsuitable for physics simulation purposes." } }, "3967969e3ca04b87809d5ffd6a3333b0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It is unclear what the object is, but it is not relevant to the specified classes." } }, "39e1c76a0e604b409d523da854a0cab6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a flower in a vase. We only want to select images of tree, ficus, or fern." } }, "3a057166a3e74e188bd554cb7004783a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy in a pot, which falls under the 'flower' category. It's a single, well-defined object suitable for physics simulation (e.g., how the flower and stem bend when the pot is moved)." } }, "3a7f950c0c9641bebb7e91f65b8a0ff9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' category. It is suitable for physics simulation as it can be used to study the swaying of the plant in the wind." } }, "3ac6ae818cce468b8feb1c2d0084ec4f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a floral crown, which falls under the 'flower arrangement' category. It is a single object and can be used in physics simulation." } }, "3ad9f9bcad4945b5a331d004e518b6b9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and washed out to clearly identify the object. It appears to be a flower, but the details are not distinct enough to be useful for physics simulation purposes." } }, "3b95e4e506c94f59933bb2629d315804": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which falls under the 'flower' class. It is a single object and suitable for physics simulation (e.g., flower falling or swaying)." } }, "3b97f4ad38004f0988c1009e6c93c607": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoonish flower, which is not suitable for the purpose of learning physical parameters for physics simulation in game development. It doesn't fall under the categories of tree, ficus, or fern." } }, "3cb1e468672748e0bb8642a41fbc358e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which falls under the 'flower' category. It's a single object and suitable for physics simulation." } }, "3cd56e005889466b9bf750f0c5d223a2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flowering plant, which falls under the 'flower' class. It is a single object and suitable for physics simulation." } }, "3d0badaa75e648eba02ad6254d88ebb5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pitcher, which is not in the list of the given classes." } }, "3d2b2ea856ec4e45a28f97d15a9cc60a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or flower). It appears to be an abstract arrangement of small, colored shapes." } }, "3dedbc35df934e5ab5c47a80082c3ddc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify any of the specified objects." } }, "3defcd15a9d54eb389413310deec8483": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which falls under the accepted category of \"flowers\" for physics simulation in a video game." } }, "3f1159378795411dbf14b6f88ccf981d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white and does not clearly depict any object, let alone a tree, ficus, or fern." } }, "40f926bc414f42948c09a6eca69fd639": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable. It doesn't seem to belong to any of the specified classes (tree, ficus, fern, flowers)." } }, "4153363f8cc442cc95a913df9600c110": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is very faint and it's impossible to determine the object class. It does not seem to depict any of the specified classes." } }, "417cf98bd01140858b3e54fada8c4ede": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and doesn't clearly depict any of the specified classes (tree, ficus, fern). It appears to be a landscape with some greenery, but the quality is too poor for use in physics simulation." } }, "419cd821cb6747509bb4a6528b21d4d0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category. This is appropriate for simulating physics, such as the vase falling or the flowers swaying." } }, "41acd475209f49d7aa7c01793511450b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern, which is one of the classes we are looking for. The object is clearly depicted and isolated, making it suitable for physics simulation in a video game." } }, "4221be66c67945ccae0812d26864065e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not a single, clear depiction of one of the specified classes (tree, ficus, fern, or flowers). It shows a collection of different items, making it unsuitable for learning physics parameters of a single object." } }, "425ebe1b65e84928bb54dff750f16a20": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is suitable for physics simulations in a video game, such as simulating petals falling or swaying. It falls under the class of 'flower' and related objects." } }, "42654b01ec3b43aeb2d97e4f8927b93f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pot with soil and dead leaves inside. It does not clearly depict a tree, ficus, or fern. The image is not appropriate for the specified classes." } }, "438e885d387243bd92e00662f1680c45": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is suitable for physics simulation in a video game. It falls under the 'flower' class." } }, "43d7b5abbb10486cb091773d5dd99067": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which falls under the 'flower' category. It's suitable for physics simulation as it can be used to simulate swaying in the wind." } }, "449e4cfa9f4f4dfea6800c4e876e500f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "This is a perfume bottle, not a tree, ficus, or fern." } }, "4547458cf515454abf181b4e5a49e919": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a real-world object like a tree, ficus, or fern. It looks more like a decorative pattern." } }, "45742e6e3ffa449996f70bc87556db93": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single rose, which falls under the 'flower' class. It is suitable for physics simulation (e.g., swaying in the wind)." } }, "462244048a3f42ef9927bad20679fd4d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a fern-like plant, which is suitable for physics simulation in a video game. It falls under the classes of tree, ficus, or fern." } }, "463beeb6bcfe41c69407ed744cd0b1f7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very poor and it is difficult to discern any objects clearly. It is not possible to identify if any of the classes (tree, ficus, fern) are present." } }, "4781fe6cc6b449138dccc040f68f5523": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (flowers, grass, brick border, path) and doesn't clearly depict a single object from the specified classes (tree, ficus, fern, or flowers). It's also not suitable for physics simulation due to the complexity of the scene." } }, "479116ea162647079a4c795a1e0c8d71": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant in a pot. This is acceptable as it is a common way to see flowers and is likely to be used in a physics simulation (e.g., dropping the pot)." } }, "495b3d157c2d4f669e1864a0aec909b9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is acceptable since the classes include flowers." } }, "4986a9bad50e4c04925316ec9cf4ad12": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flower arrangement' and 'floral' categories. It is suitable for simulating physics, such as the movement of the flowers when the vase is shaken." } }, "4a270f2477344b55b359e2913f5530f2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower pot, which is not one of the classes: tree, ficus, fern or flower" } }, "4a801faae1c34e95b3fd50076267376d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and indistinct to clearly depict a tree, ficus, or fern. It's difficult to make out any details of the object, making it unsuitable for physics simulation purposes." } }, "4aaa6a8aa2914e7183624f91d6efae43": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' or 'flowering plant' category. It's a single, clear object suitable for physics simulation (e.g., how it falls or sways)." } }, "4ab692d9a04e449a84c454fd03e71992": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. It is a single, well-defined object, making it suitable for physics simulation." } }, "4ab9c39ca9424750a56712a9f3d938ef": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower arrangement in a brick container, which is not ideal for physics simulation. We need a single object, like a single flower, for the simulation." } }, "4ae706aa53c043fa8261ebf40f580303": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus. It is a single object and can be used for physics simulation." } }, "4b3465bb5b4c48f5a8d8bcf07cde3af4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is in the list of acceptable objects. The image is clear and depicts a single object, which is suitable for physics simulation." } }, "4c8154aa4b914a08b517c57150c14f36": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it is hard to identify the object. It doesn't belong to any of the specified classes." } }, "4cefe577722d4be1b1868818bde43470": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a valid object for physics simulation in a video game (e.g., flower swaying in the wind)." } }, "4d4ad222d445402f896ab24cf00f05e8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose bush, which falls under the 'flower' category. It's a single object and suitable for physics simulation (e.g., swaying in the wind)." } }, "4d6d827ac22245d6aa305d5f2e04c745": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a lollipop, which does not belong to the specified classes (tree, ficus, fern, or flowers). It is not relevant for physics simulation related to those classes." } }, "4dcdda7aaf7e4e3a8fb19fb3fa3e5345": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. It is a single object and suitable for physics simulation." } }, "4e408eda8d07431b894b67a54112f85e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is acceptable for physics simulation." } }, "51030882447e428a8efec83649ee3172": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a seedling in a pot. While the seedling could grow into a tree, it is not a tree, ficus, or fern in its current state. Additionally, it's in a pot, which is an additional object in the scene. The focus of the image is not a clear depiction of a tree, ficus, or fern." } }, "5198273066cf4c6aa3ef6246c0bc2b85": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bouquet of roses in a vase, which falls under the 'flower arrangement' category. This is suitable for a physics simulation, as the swaying of the flowers or the vase falling can be simulated." } }, "51b880c976b34f47a4e0e0c122b6d000": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. It's a single, clear object suitable for physics simulation (e.g., simulating the flower swaying or the pot falling)." } }, "5231131707f040c8a055e9a875eb0874": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden box, which does not belong to any of the specified classes (tree, ficus, fern, or flowers)." } }, "52d052de48fa401183119ad4c3399351": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clearly identifiable. It is hard to tell if it is a flower or not." } }, "538ebba83f784885a4a6bba96b03166e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flower arrangement' category. This is acceptable for physics simulation as it can be used to simulate the movement and interaction of flowers in a vase." } }, "540606ed90d4449ca14d713cc6386d5b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a daisy, which is a type of flower, and it is clearly visible and isolated. It is suitable for physics simulation." } }, "548f2ec1f8e24244baac8bbb2f83fae8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which falls under the 'flower' class. It's a single object and suitable for physics simulation (e.g., flower falling)." } }, "54b37aafc0cd430184b4acaded62b5f7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a container, rather than a single object. It's also not clear what kind of physics simulation could be done with this object." } }, "5519e5e24a484979a1e53ed4530be6e8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is acceptable for physics simulation in a video game." } }, "555c97b30e604c8bbb8d780a3736e1dd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. This is appropriate for physics simulation, as it could be used to simulate the flower swaying or the pot falling." } }, "56765e04fc754d96a24b332377e64ffb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a vase, which falls under the 'flower arrangement' category. This is acceptable for the 'flowers' class." } }, "5794f6d3f7374cefa471122843b6574f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category. This is appropriate for the video game development as it is a common object that can be used in physics simulations." } }, "57af0b8888a848ac869f1b30fc0e42dc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which is acceptable for the 'flowers' class." } }, "57d9583095be4a6690392d1abfc7142b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is suitable for physics simulation in a video game." } }, "57d9a8eff52340c49e5b6fdefb1bf232": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is appropriate for physics simulation (e.g., swaying in the wind)." } }, "58afe7a62ba84dc098f6cd35bc04fee3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a valid object for physics simulation in a video game." } }, "5909788a9a6f4078b3ae0a7d4217eb1e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which falls under the 'flower' category. It's a single object, suitable for physics simulation." } }, "591528ede3b54803ac78507dae3f3df1": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which falls under the 'flower arrangement' category. It is a single, clearly defined object suitable for physics simulation." } }, "59ffee7518884b809250bfd59ebb58ab": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower arrangement in a vase, which falls under the 'flower' class. It is suitable for physics simulation as the arrangement can be modeled to simulate swaying or movement." } }, "5a3697872b284c4b9ef1aa0e6acd6ce3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a collection of flowers, which falls under the 'flower' category. This is suitable for physics simulation in a video game." } }, "5c251cdeea5445b4bcb574d4f2f51bd3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a plant, which could be a stylized fern or ficus. It is isolated and suitable for physics simulation." } }, "5c4b011c1ffd4649b135c2d2f753981c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is an abstract shape and does not clearly depict any of the specified classes (tree, ficus, fern, or flowers). It's difficult to determine what the object is, making it unsuitable for physics simulation or video game development based on the given criteria." } }, "5d23122e7400475db9f6ae9f17a7e321": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category. This is acceptable for physics simulation, such as simulating the vase falling or the flowers swaying." } }, "5e30b9cae6414fba9fa6ad741de5bcf5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blurry and it's difficult to clearly identify any of the classes (tree, ficus, fern). It appears to be a distorted or low-quality render, making it unsuitable for physics simulation purposes." } }, "5f29b67250c44c35850bb7b8bb40d1b3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus in a pot. It is a single object and suitable for physics simulation." } }, "5f46dbba499845979c6a95c703cb7bde": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It's difficult to discern what the object is, making it unsuitable for physics simulation purposes." } }, "62314761a4ed4e919059f87dfe33d72d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is acceptable for the video game development. The flower is isolated and suitable for physics simulation." } }, "63ea85434b334913a6d0fd25ba0a222f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a table in addition to the flowers. This is not a single object." } }, "6411a8085ad844c2abde73c03183da2a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. It is suitable for physics simulation as we can simulate the dropping of the rose." } }, "64167bab103e4ffe8561b7583802b74a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a potted plant, which falls under the category of 'flowering plant' or 'flowering plant'. It is suitable for physics simulation as it can be used to simulate the swaying of the plant in the wind or the impact when the pot is dropped." } }, "6450e616ae764758a4d1bd80eb3efa2b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category within the provided list. The image is suitable for learning physics parameters for simulation." } }, "64761ed2dd0044ac8dbc6bba2d25d2b3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which falls under the 'flower' class. It's a single object, and suitable for physics simulation (e.g., how it bends in the wind)." } }, "65d511d6d6f14dd7b2a84ce44fd67fbe": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower which is one of the classes that are accepted." } }, "65df7c2d34ca47d4ae0c0e2b91850ee7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a rose, which is a type of flower and is acceptable for the class of flowers." } }, "667d1f1eddc543bfac1f176f3259ae28": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify any specific object from the given classes (tree, ficus, fern, or flower-related objects). It's impossible to determine if it's appropriate for physics simulation or game development purposes." } }, "669a695fb7164046a6f01a687dc0f7ac": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant in a pot, which falls under the 'flower' class. It's suitable for physics simulation as it can be used to simulate the plant swaying." } }, "66a30c655be34d6f910acddf67d94530": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify any object, let alone one of the specified classes (tree, ficus, fern)." } }, "66c85a8f14e347dbbda9a41d28a552cd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower. It is suitable for physics simulation." } }, "67321df0e11f4b53b641c383559ca6cf": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a decorative element, not a tree, ficus, or fern. It is not relevant to the specified classes for video game development." } }, "6734eb1d198b4657b3ca0c3446f3ef2b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which is acceptable for the 'flower' class." } }, "67983c1e580641fc9cbd3f37bb5cb94a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple flowers, not a single object. It's also difficult to discern the individual flowers clearly, making it unsuitable for physics simulation purposes." } }, "67ba95ccd3ba4458a3518ec05663dc2a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bouquet of tulips, which falls under the 'flower' class. It's suitable for physics simulation as the movement of the flowers and vase can be simulated." } }, "683e2043a99d4bddb750098a934e3533": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It is suitable for physics simulation as it can be used to simulate wind effects on the plant." } }, "687c18de8e3347baa1aacdcf91d1c457": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a drawing and doesn't clearly depict a single object from the specified classes (tree, ficus, fern, or flower). It contains multiple elements and lacks the clarity needed for physics simulation purposes." } }, "68a80f5c13f14917bfbf735f5fd1788a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bouquet of flowers, which falls under the 'flower' category. It is a single object and is suitable for physics simulation." } }, "68d4fae6c5df45c38f319ed4a3a72c5b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects and a table, not a single object. Also, the objects are orchids, not tree, ficus, or fern." } }, "6953ea23b4aa4eeb9b2d2cb08af49635": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flower bed with multiple flowers and a stone border. It is not a single object and contains multiple objects. Also, it is not a tree, ficus, or fern." } }, "6a1c3ed6920a4c1a81d1a995f62fc11b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a floral arrangement, which is acceptable for the 'flower' class. It is a single object and suitable for physics simulation." } }, "6b24d5199ce14b339bd2caa8aea1e9eb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and washed out to clearly depict any object, let alone one of the specified classes (tree, ficus, fern)." } }, "6b3020fed29c4976bc44ed1b7cb7e960": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flower' category. It is a clear depiction of the object and suitable for physics simulation." } }, "6b86f233de3849668ac0a5d6b5d20b83": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a potted flower arrangement, which falls under the 'flower' class. It's a single object, and suitable for physics simulation (e.g., how the plant sways in the wind)." } }, "6b903b5376154dd086d2caa4a4263111": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (flowers in pots), not a single, distinct object from the specified classes (tree, ficus, fern, or flowers in general). Also, the image is very small and of low quality." } }, "6be012c8647a4956838aa9d0e11145d8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose in a pot, which falls under the category of 'flower' or 'flowering plant'. It's suitable for physics simulation as the swaying of the flowers and the pot falling can be simulated." } }, "6cf412fca90e4070bac66de2b7ceeb27": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which is a type of flower. It is clearly depicted and suitable for physics simulation." } }, "6d568819c20d4d1daac79eaa7b068303": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a floral arrangement, which falls under the flower category. It's a single object and suitable for physics simulation." } }, "6d94485674494cbe844f26e1ec50d031": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fern, which is one of the classes we need. The image clearly depicts the object and it is suitable for physics simulation." } }, "6dd385200f864958a555e2c13bfc95a1": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "6df3601246c14974a1d5e01781990aaf": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "70e0540c4c9844e0872b0184a3dd5fcb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a group of flowers, which falls under the 'flower' class. This is suitable for the physics simulation as the swaying of flowers in the wind is a common scenario." } }, "7132b455dc5b4aa7ae063eec38092548": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, abstract object that doesn't clearly represent a tree, ficus, or fern. It's not a realistic representation of any of the specified classes." } }, "71603c748cf44f99a268a4572f79401f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a skatepark ramp, which does not belong to the classes: tree, ficus, fern, or flower." } }, "7212a9f7ce674406915687ca13a28f3b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (flower and petals), not a single, clear depiction of one of the specified classes (tree, ficus, fern)." } }, "72a93f2ab4ed46cc8b29b03617270142": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which is a type of flower. It is appropriate for use in a physics simulation." } }, "7321813643804669b6f8d6f9cbff9f6c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any of the specified classes (tree, ficus, fern). It contains some shapes and text, but not a clear object for physics simulation." } }, "73cb4745a8194dbbb0a58a767f22ef3f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a rough sketch and doesn't clearly depict any of the specified objects (tree, ficus, fern) in a way suitable for physics simulation. The outlines and colors are not well-defined." } }, "749736efba6b45f9ae807f70951ce071": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is empty except for a tiny red dot. It doesn't depict any of the specified classes (tree, ficus, fern, or flowers)." } }, "75b0fb61da014372861fd74a8cb73152": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a potted plant, which is acceptable as a single object. It could be used for physics simulation (e.g., falling over)." } }, "75d19624c0d04b65975e011a04ae77a0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts an orchid, which falls under the 'flower' category. It is a single object clearly depicted, suitable for physics simulation." } }, "760891dc2167440d83fba2316be90cf8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bouquet of flowers, which falls under the 'flower arrangement' category. It is a single object and suitable for physics simulation." } }, "7625bba65d344886bd4edafedbff0c49": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which falls under the specified classes for the video game development. It is suitable for physics simulation as well." } }, "778aaf919e6045d0be761985dce6403a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "7a67825b41bc4c6aa459c91b8ed8930a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern). It appears to be an abstract representation of buildings and a green object, not suitable for physics simulation of natural elements." } }, "7abbe51badc0445abe683628e3db8775": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which is acceptable for the 'flower' class. It can be used in a physics simulation to study the behavior of flowers in a bouquet." } }, "7ada25d98c644ae98f7504e7ad1be3c6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which is acceptable for the 'flower' class. It is also likely to be used in a physics simulation." } }, "7b1c230847644d62ac473efcc3304f3b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "7ba826a951cf4060a5b8f4ee72c256ea": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is a valid class. The image contains only the flower, and it would be reasonable to use the 3d model for physics simulation." } }, "7bc8864a90e54ac7b2791261047918fc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus plant in a pot. This is a single object and it belongs to the class 'ficus' which is appropriate. The plant can be used in physics simulation." } }, "7bf81265f132494c909a932d41846465": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a person sitting among flowers, and it is not a clear depiction of a single flower or a vase of flowers. It is not appropriate for use in physics simulation." } }, "7d8acfb0b38d4e4b9ef2c6e336473049": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which falls under the 'flower' class. It is a single object and suitable for physics simulation." } }, "7dccda2703094aa0a9e5ecb7940db598": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower arrangement in a pot, which falls under the 'flower' class. It's suitable for simulating physics, like the pot being dropped or the flowers swaying." } }, "7dd283aa9c324d3f9d4aae8774f69e8d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a flower arrangement but also contains a table and other objects. It does not cleanly depict one object class." } }, "7f76ab5348284c89a0220884a48c6518": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which falls under the specified class of flowers. It is suitable for physics simulation as it can be used to simulate the flower falling or swaying." } }, "7fb8ce540fb74e519dcfc64ac94ae1e0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a stylized or abstract object, not suitable for physics simulation related to the specified classes." } }, "7fe339cf1ba74c06ac54d462d2efc941": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts ficus in a pot. It is suitable for physics simulation." } }, "807e91b116f64d7294b180d8a6404588": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is a valid object for physics simulation in a video game (e.g., swaying in the wind)." } }, "81e65dfcecf746e9ba76c7fcc4997a00": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern, which is one of the classes we are interested in. The image shows a single object clearly, making it suitable for physics simulation." } }, "826ec8fb717d4415a10d3af9ced10f3e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the specified class. It is suitable for physics simulation as it can be used to simulate the behavior of flowers in a vase." } }, "82862423ff8e4347b03311a35fbacb41": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and doesn't clearly depict any object." } }, "8357bb1ea4f84f80a304f3c6b2e2ad78": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict any of the specified plant classes (tree, ficus, fern). It looks like a distorted flower or some other object." } }, "83746d84045146468d5f1d8fca8ed9cb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fern, which is one of the specified classes." } }, "83cd55d8da0d4348a2262df88ba73f78": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a collection of flowers, which falls under the specified classes. While it's a group of flowers rather than a single one, it's still suitable for physics simulation as a floral arrangement." } }, "83e0c3abee4448daa5177c37e5f82154": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which fits into the allowed classes (flowers)." } }, "8450ec1ee9d645168f3c234d749b9684": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower box with multiple flowers and climbing plants. It doesn't clearly depict a single object from the specified classes (tree, ficus, fern). Also, the presence of the wooden box makes it less suitable for simulating the physics of the plants themselves." } }, "864fcc702ffb48ea99ccd121101c7399": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of flowers on a square of grass. It does not depict a single object clearly. The grass is also not desirable." } }, "866e491ad8774f84b5ce6a68ab4a1ffd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is abstract and does not clearly depict a tree, ficus, or fern. It's an unidentifiable shape." } }, "86a70f0b04b6482291110594b4dd1418": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flowering plant. It is suitable for physics simulation." } }, "871ac4f9b62643e98e7321775cb14202": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify any specific object. It's impossible to determine if it belongs to any of the specified classes (tree, ficus, fern)." } }, "887092793d0b402e8571eda2d1a47cb4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower in a pot, which falls under the 'flower' category. It is suitable for physics simulation as it can be used to simulate the swaying of the flower or the impact of the pot being dropped." } }, "88827a4a33b841458f45fba551e5d171": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two vases, not a single object. The objects are not in the accepted classes." } }, "88ec44af458146a3b83b9483afe8af7a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which falls under the 'flower' category. This is appropriate for simulating physics, such as the swaying of the plant in the wind." } }, "899c294c0bd24d9bbd28ec84e4e32f55": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the specified classes (flowers). It's suitable for physics simulation in a video game." } }, "89d601c6b3f24d4d83967c4f1baa3b95": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is a valid object for physics simulation (e.g., swaying in the wind). It falls under the 'flower' class." } }, "8a82f4d34555479d827c6d711566e46a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a group of trees, which is appropriate for the video game development context and for simulating physics parameters like swaying in the wind." } }, "8b865189c6ca4013a39cb25076241494": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pile of rocks or soil, which does not belong to the specified classes (tree, ficus, fern, or flower-related objects). Therefore, it's not appropriate for the video game development based on the given criteria." } }, "8b8fd739dabf43a2a03ffc2989ec7365": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a wildflower, which falls under the 'wildflowers' category. The image is clear and shows the object well." } }, "8c4d78079eda4ccfbc1354cbbe115f33": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a group of trees, which is a valid object for physics simulation in a video game." } }, "8d0861c3cf47400786ac852587a74994": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and does not clearly depict any of the specified object classes (tree, ficus, fern). It's also unclear what the objects in the image are." } }, "8d4549c3b5004a0c9241ac44929810ac": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be an abstract object. It is not appropriate for the specified classes." } }, "8d8a9be757154b29872d959b598f059c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower, which is a valid object for physics simulation in a video game." } }, "8e1f8d13ecbb4ad78807f4af1a291ecf": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be an abstract object or shape." } }, "8e6dd7bb234348329208f68882f95125": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it is hard to tell what the object is. It might be a fern, but it is not clear enough for physics simulation." } }, "8f0baf4206804846b3f10b109e3cde20": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a 3D model of a ribcage or some other mechanical structure, which is not relevant to the specified classes." } }, "8f0d7e45b22e47739d6cda9c320ffb29": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a perfume bottle, which does not belong to any of the specified classes (tree, ficus, fern, or flowers). Therefore, it's inappropriate for the video game development context." } }, "8f2e2b5d45284f8fa0bfc25a02779318": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flower arrangement in a pot, but it is part of a larger scene including stairs and other objects. It doesn't isolate the flower arrangement well enough for physics simulation purposes." } }, "9039f607d87e4a968d2b21fd46e93b8f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a potted ficus, which is acceptable for physics simulation in a video game." } }, "9107755357634b229844b0b14ed04257": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which falls under the flower category. The object is clearly depicted and suitable for physics simulation." } }, "911690173f1c44c98eb87154ad9cf508": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is acceptable for the video game development." } }, "91d655c29e0b40118eb42db7bcd607d4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is a valid object for physics simulation and belongs to the specified classes." } }, "9298aaed1dfc4d80b6ab05ca7e16e78c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a ficus plant in a pot, which is suitable for physics simulation (e.g., swaying in the wind)." } }, "934be69f6bf243b292d70cd429f5006d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is acceptable for the video game development, and it is clearly depicted." } }, "95a67471ac8640dd9256e1784e18f229": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It is an abstract shape." } }, "95b895cb3a654784bfac64bc345fc55e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not just one. It's difficult to isolate a single tree, ficus, or fern for physics simulation purposes." } }, "95c6e250b8c94fa4ab6ff5b2e874b29b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a valid object for physics simulation (e.g., swaying in the wind). It clearly depicts the object class." } }, "96265186d2774090bf21d608134e8e8a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It is an abstract shape that does not resemble any of the specified object classes." } }, "96556ef9e5e1452b80c61369ae3a7d8e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a sunflower arrangement in a pot, which falls under the 'flower arrangement' category. It's suitable for physics simulation as the swaying of the flowers or the pot falling can be simulated." } }, "9704af7c275a4562bc73862a77fc7a3a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is a valid object for physics simulation in a video game." } }, "975e5c0e57dd42999a348758b1295e66": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bunch of white flowers, which falls under the category of 'flowers' and is suitable for physics simulation in a video game." } }, "982cbca027714ea690dfe482b5181d57": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not contain any objects from the specified classes (tree, ficus, fern, or any flowers)." } }, "98669a28f92141409df2fdd82e0d9b0c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is acceptable as it belongs to the specified classes." } }, "99237f1d475244c9aed11c9979251ced": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of yellow daisies, which falls under the 'flower' and 'bouquet' categories. It's suitable for physics simulation as a floral object." } }, "99508a5ebb704cd39a8b08c9a88ca54a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a vase, which falls under the 'flower' class. This is appropriate for physics simulation as it can be used to simulate the vase falling or the flowers swaying." } }, "996ef3717d20497b9d6a6b4d9fa51325": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not contain a tree, ficus, or fern. It appears to show some kind of fruit or object inside a strange object. It is not relevant to the specified classes." } }, "99e08ec1b42241c080912996eebbffe6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which falls under the 'flower' class. It is a single object and suitable for physics simulation." } }, "9a5b491ed72e4b90b990698475225e3d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is suitable for physics simulation as part of a larger environment." } }, "9ac8696e86154cb48a147e34ab7ed3df": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a statue, which does not belong to any of the specified classes (tree, ficus, fern, or flower-related objects). Therefore, it is not appropriate for the video game development context described." } }, "9aedd7f4ef2a42fda87b89eafc934a95": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant in a pot, which falls under the 'flower' category. It is a single, clearly defined object suitable for physics simulation." } }, "9bc9a4ea1d2f4207b2af6ee38645a298": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It looks like a simple, abstract shape." } }, "9bf4ff89427d49939347818a097c842d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a geometric shape and does not resemble any of the specified plant classes." } }, "9c1d5388b3e341ce99d198f5e890acdc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category. It is suitable for physics simulation as a single object." } }, "9cb06861e8c3400bbca958459bf9fdc2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase, which is not in the list of acceptable classes." } }, "9eb76716e9c74fc9a424fa6a960b7905": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a room with a green screen and various objects, not a single object from the specified classes (tree, ficus, fern)." } }, "9f62a903187f4fff8d5feddf85a67586": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It's an abstract shape and doesn't belong to any of the specified classes." } }, "a0d6739a36de4535af9eeb11ed7321f9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a container. This is an acceptable depiction of 'flower' for physics simulation purposes, as it represents a common way flowers are encountered." } }, "a124cf40a048434aa662cd7de41baac3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts tulips, which are flowers. It could be used for physics simulation to see how the flower sways in the wind." } }, "a147bd36c23c473faebbc363b2b355d9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts flowers, which are suitable for physics simulation in a video game (e.g., swaying in the wind)." } }, "a15c234c0eaf410ea65d22ff912a9987": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the 'flower arrangement' category. This is appropriate for the video game development as it clearly shows the object class and could be used in physics simulations." } }, "a1ec7a2df65d4ff5972c30e79084ef5a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a vase, which falls under the 'flower' class. It's suitable for physics simulation as the vase and flowers can be simulated for interactions." } }, "a20586da199346e9849f8cb4e89b63ce": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is not clear enough to identify the object as a tree, ficus, or fern. It is just a simple vertical shape. Therefore, it is not appropriate for physics simulation." } }, "a2eea4c5ba844243ad9484c5b5d2158e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is suitable for physics simulation in a video game." } }, "a30118c4d0b84fcc964e07a3824f7f8d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is relevant to the provided class list." } }, "a41ace4013bb44648a1ad4cf2d301c30": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant in a pot, which falls under the broader category of 'flowering plant' and is acceptable. The vase is also acceptable because it is commonly seen with flowers." } }, "a431f2f47231473c931b7d042a45a819": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a rock or some other geological formation." } }, "a45647d22d6740f6a6544b27fd25a97f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is suitable for physics simulation in a video game. It falls under the class of 'flowers' and related objects." } }, "a482cc1968124ac58a421acf35805bc6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single flower, which is acceptable for physics simulation (e.g., petals falling)." } }, "a4d5ec04db1440e39da83bca38d590c9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a flower in a vase and a watering can. It doesn't depict a single object of the specified classes (tree, ficus, fern)." } }, "a5d8b59b22e24cc58054331b0bf34e9c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a group of flowers, which is acceptable for the 'flower' class. It is likely to be used in a physics simulation, such as simulating the effect of wind on the flowers." } }, "a719abe202bb4f85b3e0b1fded4a7d3a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which is a type of flower. It is suitable for physics simulation as it can be used to model the swaying of the flower in the wind." } }, "a79bb30f852d4d3d98a76d99b571e4ec": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. This is appropriate for the video game development as flowers can be used in physics simulations." } }, "a840e59c4e8f42c5ad7f433ca879597b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which falls under the specified class. It is also suitable for physics simulation." } }, "a855f22cc9594327839759e2ea666ba8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "a86df967af6540bf8377ea368aa19be4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects including buildings and row of plants. It is not appropriate for the video game development." } }, "a878936d2039462b9ac95563a3b8128f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It is a single object and suitable for physics simulation." } }, "a90747c17fb24605bdb703bf558c9e72": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be an abstract shape or a low-resolution rendering that is difficult to identify. Therefore, it is not suitable for the intended purpose." } }, "a9d02b903a494b60906d44d0c855f7a3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a valid object for the video game development. It is a single object and clearly depicted." } }, "a9ee96b5f80f4d9dbb639c70a0e546a0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant with purple flowers, which falls under the 'flower' class. The image is suitable for learning physics parameters for simulation." } }, "aa3e8b70df294d54b6360aadb6b32b62": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pot, which is not in the list of allowed objects." } }, "aa96923d58394be0832f67e88670f141": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is abstract and does not clearly depict a tree, ficus, or fern. It's difficult to determine what the object is, making it unsuitable for physics simulation purposes." } }, "ab1641c1c40f4333936da838c8fd5604": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden structure that is not a tree, ficus, or fern. It doesn't belong to the class of objects we are looking for." } }, "ab2157a5434b42c5822e6131d28f8bbb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which falls under the specified classes. The image is clear and shows a single object, making it suitable for physics simulation." } }, "ac8720235cff4640a0dd7ca51abc8c8b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a vase, which falls under the 'flower' class. This is acceptable as it's a common way to represent flowers." } }, "ac8895f507584c40b2efb8e77bda85a3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which is a type of flower. It is suitable for use in a physics simulation, as its material properties can be analyzed." } }, "acfa498497894bbd9bc864255e6816cd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is a valid class. It's a single object and suitable for physics simulation." } }, "adc60093c9e643a4b5ab35346d7d6d15": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows flower petals, not a complete flower. This is not suitable for physics simulation as it doesn't represent a whole object." } }, "af2ce601762e420a90108f17b21be29c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a daisy, which is a type of flower. It is a single object and could be used in a physics simulation." } }, "af7fee15e6694dd6b4d027f4cc49bba2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "afc261b43a364dcfaeb03c9efb7a9c05": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be an abstract geometrical shape. It's not clear what the object is, so it's not suitable for physics simulation or video game development." } }, "b02aad5fe74449b197f1c635d3591d27": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bush or shrub, which is a type of plant that could be used in a physics simulation to study how it sways in the wind. The image clearly depicts the object class." } }, "b06f34dedd3b4167ac151fbc83d29b50": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building, which is not one of the specified classes (tree, ficus, fern, or flower-related objects)." } }, "b0723478aacb480dbd755dee883d32aa": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is acceptable for physics simulation purposes. It is also a common object in video games." } }, "b0bb303d5b5f40878547204675172193": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the provided classes. It is a single object and suitable for physics simulation." } }, "b0bdc06364614deeb9ee6e5ba4c80f5a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or flower). It is an abstract shape and unsuitable for physics simulation related to the classes." } }, "b1047276fc7f4421b5f695ad9ff59e72": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category. It's a single, clear object." } }, "b16076de0db44f7983d99250ac54eb2d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which is a valid object for the 'flowers' class. It is suitable for physics simulation as a single object." } }, "b1fdc624c9c440b5aec9c8705b915eaa": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers, which falls under the specified classes. It is suitable for physics simulation as the material properties of flowers and their arrangement can be simulated." } }, "b208de84f6d94ba0894e207122937542": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a collection of flowers, which falls under the 'flower' class. It is suitable for physics simulation, as the swaying of flowers in the wind is a common scenario." } }, "b247c912214146b49644efd16f454f73": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is an acceptable object class." } }, "b5033fdcf8374a44ae7f948a1ef2ddbe": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is suitable for physics simulation in a video game." } }, "b53e1bc2c1dc4fa3835d40682649e3bc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet, which falls under the 'flower arrangement' category. It's suitable for physics simulation as it could be used to simulate the behavior of a collection of flowers being dropped or swaying." } }, "b56e199f962f49b29686c1a891fe47bd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bouquet of flowers, which falls under the acceptable class of 'flower', 'bouquet', etc." } }, "b59ed57ceb2f4e9eb63d22ea8ee0e9fc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which falls under the 'flower arrangement' category. It's a single, clear object that could be used in a physics simulation (e.g., dropping the pot or simulating wind effects on the leaves)." } }, "b6475b686d2b4c64a501acf80a684f5d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts flowers, which are suitable for physics simulation in a video game, such as petals falling or flowers swaying in the wind." } }, "b66ad96e13b04784a8ac0b927d748555": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flowering plant, which is a valid object for the video game development." } }, "b6710fa38cd24e9cb84db9f6f773c6cb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any of the specified objects (tree, ficus, fern, or any type of flower)." } }, "b7449a6580f549518240ac512dbe6a8e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. The objects in the image are not easily identifiable and appear to be abstract shapes." } }, "b7d19a0d6eb047ba8c8b58838a236ccf": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of tulips in a vase, which falls under the 'flower' class. It's a common arrangement and suitable for physics simulation (e.g., vase tipping over)." } }, "b96b2b736b1a4397940bbaf6a39cdb1b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a low-poly abstract shape and does not clearly depict a tree, ficus, or fern. It's difficult to determine what object it represents, making it unsuitable for physics simulation purposes." } }, "b99c584dd11d4691b5d13303383371e5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pot, which is not one of the classes listed (tree, ficus, fern, or flowers). It's an object used to contain plants, but not the plants themselves." } }, "b9e951cc1d4a4b2e95984f73ccbbe169": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and doesn't depict any object." } }, "ba1adb18dbb344ec9d9c2a9756b84ddd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower in a pot, which falls under the 'flower' class. It's suitable for physics simulation." } }, "bb070e4454c9468abe953db9ea57ff4b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which is a type of flower. It is suitable for physics simulation." } }, "bb2e2624dab54b888f0972b9a0e3880a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a vase, which falls under the 'flower arrangement' category. It's a common object that could be used in a physics simulation (e.g., the vase falling over)." } }, "bb4e37654b054b6185fea6bd4f4fa711": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is blank and does not depict any of the specified objects." } }, "bb875ee8ce2a40a2b927cb27bbd8f651": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a few flowers, which falls under the 'flower' class. It is suitable for physics simulation." } }, "bbac8c124e8b4974abad98f2e45ffb2d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern) or the flower-related objects. The abstract shape makes it difficult to identify the object." } }, "bd052ede8f964fb098924403b321736b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. It's a single, clear object suitable for physics simulation, such as dropping or interacting with other objects in the game." } }, "bd3848e4b96a4731ad34e2d43268f60a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts an orchid in a pot, which falls under the 'flower' category. It's a single, clear object suitable for physics simulation, such as observing how the flower and pot react to being dropped." } }, "be5222cc76b44b839bb1a3d37e8156e1": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It's difficult to discern the object's shape or properties for physics simulation." } }, "be7b1069894444b5b18700caa36376d3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which falls under the 'flower' class as it includes multiple flowers and greenery in a single object. It is appropriate for physics simulation as a single unit." } }, "bee4f7b602904024826d6e49ddb95ad5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a bouquet of flowers in a vase, which is not a tree, ficus, or fern. Therefore, it is not appropriate for the video game development." } }, "bf119b845fbf40408cefb51eb6f89e4d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a potted plant on a stand, which is more than just the plant itself. We need images that depict a single object for physics simulation purposes. Also, the object is not one of the classes mentioned: tree, ficus, fern." } }, "bf3d404b836b455ca399fef3c962dcb7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is one of the classes we are interested in. It is a single object and could be used in a physics simulation." } }, "bf990dd956184801ae4eb4bf5ce8c0ec": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a flower arrangement, which is a valid object within the specified class. It can be used for physics simulation." } }, "c076c78cc47f49cfb68e24c8731d60ed": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower arrangement in a planter. It falls under the 'flower' class, and the planter itself could be considered part of the object for physics simulation purposes (e.g., dropping the whole arrangement)." } }, "c118985f85804a9d811bda6310d3652d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which can be considered a flowering plant or a garden flower. It fits the criteria for inclusion." } }, "c1338e44401949c1be64e6668d38c100": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which falls under the 'flower' category and is suitable for simulating physics in a video game (e.g., how the flowers sway in the wind or the pot falling)." } }, "c138a37359b14ee08c77ac894b333c62": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy in a pot. It falls under the 'flower' category and is suitable for physics simulation." } }, "c20d9a2020b5479e8a3155c413386bc4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which falls under the 'flower' class. It is likely to be used in a physics simulation." } }, "c290b04d61ca4b5a8efd1618dab92e06": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict a tree, ficus, or fern. It is difficult to discern its structure for physics simulation." } }, "c2f7ae600ec04f80bc01516b0798cd82": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely blank and does not depict any object." } }, "c39c719c9b144fbaa97e87fcf80d9764": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is not clear and contains multiple objects. It is hard to identify a single object from the class tree, ficus, or fern." } }, "c40ba1aeda49410db34ec2f9ab2fd599": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flowering plant in a pot, which falls under the 'flower' category. It's suitable for physics simulation as the swaying of the plant or the pot falling can be simulated." } }, "c44a218561194160befc605939b66f90": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and does not clearly depict a tree, ficus, or fern. It's difficult to discern the object's shape and characteristics for physics simulation." } }, "c45914b87eee4ea9bfe4a382848c16d5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a tree, but also a lake and a character. We only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes." } }, "c5aa1c3eabc14dd49ab95cd27aa2b7a3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a very abstract representation and it's hard to tell what it is. It doesn't clearly depict a tree, ficus, or fern." } }, "c5e3a859f090477e9a12585bb0d33579": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, lattice-like structure that does not resemble a tree, ficus, or fern. It is not appropriate for use in a physics simulation of these objects." } }, "c61ad9c66f0844ec836fc8cf33c70b3e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or flower-related objects). It appears to be a simple geometric shape, possibly a cube with a square opening, and is not relevant for the intended purpose of physics simulation of plant-related objects." } }, "c6a4c968af414f06b452cfb9a089dea6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be an abstract shape." } }, "c6ee804e986242a4b2cdcad5c45c7ffe": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower, which is a valid class for this task." } }, "c709a1ceabf94221b4a776686f98d4d6": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it's hard to identify the object clearly. It doesn't seem to depict a tree, ficus, or fern." } }, "c93f755dddf14640896612deb9c32813": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower in a pot, which falls under the 'flowering plant' category. It is suitable for physics simulation as it can be used to simulate the swaying of the flower in the wind." } }, "c97ff76c09c14238abaf444570b46115": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is a suitable object for physics simulation (e.g., petals falling, flower swaying)." } }, "c9def2748a3643458b7115572743ad62": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which is a type of flower. It is a single object that can be used for physics simulation." } }, "cacb2624187f49668773ede5611c128b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which falls under the 'flower' class. It shows a group of roses and leaves, which is acceptable. This could be used in a physics simulation." } }, "cb2e58f27130433a90623f336f769ad5": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and it is difficult to identify any object." } }, "cb303335a9af490fa449df0008032a78": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single flower, which is appropriate for the video game development." } }, "cb62dbbec52649cc95234c5879ee1787": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a abstract shape and does not clearly depict a tree, ficus, or fern." } }, "cc88b246cbbb483babf8983fbc87e07e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pot, which does not belong to any of the specified classes (tree, ficus, fern, or flowers). Therefore, it's not appropriate for the video game development based on the given criteria." } }, "cd3353c37ea2448589a8fe10875518be": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a stylized, abstract object that doesn't clearly represent any of the specified classes." } }, "cdab889018174861978de56f10c0e8c7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It's suitable for physics simulation as it shows how the plant might sway or react to forces." } }, "cee94c045d7549c890f88f6cc1493117": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of roses in a vase, which falls under the 'flower arrangement' category. This is acceptable for physics simulation purposes." } }, "cf31779b755c41bf97d1e95567e27a2f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flowering plant, which falls under the 'flower' category. It's suitable for physics simulation, particularly for things like swaying in the wind." } }, "cf3a9000becd493593d593f4c1ecfae7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It's a single object, suitable for physics simulation." } }, "cf90e3e70f4341da912aa72069ef3f8b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a fern. It is a single object and is suitable for physics simulation." } }, "d0685522cc274936bc09dc857a56b48e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and unclear to identify any specific object or class like tree, ficus, or fern. It's impossible to determine if it's appropriate for physics simulation based on this image." } }, "d0cd1f0e6ae04a59b6996605427c34f7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a decorative object that is not a natural flower, tree, ficus, or fern. It is more like a stylized design or ornament." } }, "d0dffc10a6664315a10a9910bb6cd97c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is unclear and it is difficult to determine what the object is. It may be a fern but it is not clear enough." } }, "d0f38eacd0564763ae0a7faccee04d17": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a potted flower, which falls under the 'flower' category. It is a single, clearly depicted object, making it suitable for physics simulation purposes." } }, "d15cc10f62cc4c018b13aea982616fcd": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a group of flowers, which falls under the provided class. It is suitable for physics simulation." } }, "d18485dda440442290711b29ebbeefbf": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which is acceptable for the 'flowers' class. It's a single, clear object." } }, "d1a55f2c4015483fa73b8ef2fc2b6c36": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clear enough to be used for physics simulation." } }, "d2efff42615040899cb6bf067c6ba0ba": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a vase, which falls under the 'flower arrangement' category. This is a suitable object for physics simulation, such as simulating the vase being knocked over or the flowers swaying." } }, "d37f277f508243d296cbaf354bcc7086": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is appropriate for the video game development and falls under the specified classes." } }, "d3c1266f00f1424d809726c497cbca49": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which fits the 'flower' class and is suitable for physics simulation." } }, "d3ce43aef8a04d968e63224a58d37037": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a vase with flowers, a table cloth and a painting. It doesn't depict a single object. Therefore, it is inappropriate for the video game development." } }, "d47c69718c1b4c9f914ee48059cec19f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which falls under the specified classes (flower, bouquet, rose, tulip, daisy, lily, sunflower, orchid, flower arrangement, flowering plant, garden flowers, wildflowers, floral). It is suitable for physics simulation as a single object." } }, "d54546f22fa8487c887a8f3b9182f661": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flowering plant in a pot, which falls under the 'flowering plant' category. It is a single object and suitable for physics simulation." } }, "d56f6d6e4f7f4684ad7d8e445342161b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and lacks detail to clearly identify the object. It's difficult to determine if it represents a tree, ficus, or fern." } }, "d6414740ba2a45b2a804514b5b25ac87": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree, which is a valid class. The object is clearly depicted and suitable for physics simulation." } }, "d69bd08814de41b3aa8f1df2523353a2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single flower, which is appropriate for physics simulation in a video game." } }, "d75f531255ad47a99051a4c421c8861b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tulip, which is a type of flower and the image is clear." } }, "d7e7c4c547a84cd88b8cacbb96745839": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is one of the classes we are interested in. It is a single object and suitable for physics simulation." } }, "d81bb4f31263458e9978febb2da756c7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose in a vase, which falls under the 'flower' and 'flower arrangement' categories. It is a single, clear object, making it suitable for physics simulation." } }, "d831be1106424d19b53d44f06e485c16": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single rose, which is a type of flower. It's suitable for physics simulation as the bending of the stem and petals can be simulated." } }, "d93b3ee1e67e45898b8f2bb9aafdf034": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flower, which is one of the classes we're interested in." } }, "db91e8b92687403a9a9ed0c46e0ddc74": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower clearly, which is a valid object for physics simulation (e.g., swaying in the wind)." } }, "dbf677bad7084c3e9682feaac449df53": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is very low, and it's difficult to discern the objects clearly. It appears to show multiple objects, not just a single tree, ficus, or fern, and the low resolution makes it unsuitable for physics simulation learning." } }, "dce5bb1f7abf4ed3b8d5ca2610d63023": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bouquet of tulips, which falls under the 'bouquet' category. It is suitable for physics simulation as it can be used to simulate how the flowers react to external forces." } }, "dd58976b7ce54b53b7ded29a6c6ef632": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a very abstract representation of something, but it's not recognizable as any of the specified classes." } }, "dd988326d96b44d3978d262ef7663e96": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is not appropriate for the video game development because it depicts a cup, which is not one of the classes: tree, ficus, fern, flowers." } }, "dddbda5b3d794649a6b9fd500ec01563": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flowering plant, which falls under the 'flower' class. It is suitable for physics simulation." } }, "ddf2459697d54117a2d0ac499f7fdb6b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "There are multiple flower arrangements in the image, and the image is not clear enough to depict a single object." } }, "de65e6373fe54e999464eb807cc888fb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which is a valid object for the 'flowers' class. It is also a single object." } }, "df1b7a72d1c44435b592e6ee421bab9f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict any of the specified classes (tree, ficus, fern, or flower). It appears to be an abstract shape or a simplified representation of something else, but it's not recognizable as any of the target objects." } }, "e0aee5bb029c46c4a7e0d8576403debb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of tulips in a pot, which falls under the 'flower' category. It's a single, well-defined object, and the physics of the flowers swaying or the pot being moved could be simulated." } }, "e123052a77334e3d9286acfe97da8592": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a fern in a pot. The pot is not part of the fern and is not needed for the physics simulation. Therefore, the image is not appropriate." } }, "e2983175df0a4da29650060b01196610": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "e2adf4bbb859499caf649f7d29befd03": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which is acceptable for the 'flower' class. It is also suitable for physics simulation as the swaying of the flowers and the pot falling can be simulated." } }, "e2e6dc756a5947f290b377f2931b6e61": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pot, which is not one of the classes: tree, ficus, fern, flowers." } }, "e315cc31665e4d42a5e78e7ca5a2d9a7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a plant in a pot, which is suitable for simulating physics. The plant is clearly visible and the pot provides a defined boundary for simulation." } }, "e3b0abb378604d21a92ca391c5208dca": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement in a pot, which falls under the 'flower' class. It's a common object and could be used in a physics simulation (e.g., the pot falling or the flowers swaying)." } }, "e3ba3bf0fa16492b89f1439caee5083e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. It is a single, clear object, making it suitable for physics simulation in a video game." } }, "e41a69403707405dbb5e0b7737cae6fa": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a lily, which is a type of flower. It's suitable for physics simulation as a single object." } }, "e6039f6807514e4fbf1496c63c27702f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a person holding flowers, not just the flowers themselves. This doesn't fit the requirement of having a single object from the specified classes." } }, "e608cb6a282146ac94c193fe20d29f1b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cartoon chili pepper, which doesn't belong to the specified classes (tree, ficus, fern, or flowers). It's also not appropriate for physics simulation in the context of video game development." } }, "e643c3e8ae2846acacf87f738bd8f897": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, not just a single tree, ficus, or fern. It also contains other plants and flowers." } }, "e7d391f97e404f519fd7a871dbaad302": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which falls under the 'flower' category. It is suitable for physics simulation as it could be used to simulate the behavior of flowers in a garden." } }, "e8ae19b9aa0547b0a6f195e0ef5b36db": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is mostly white and doesn't clearly depict any of the specified objects (tree, ficus, fern, or flowers)." } }, "e95a6f1226f44ecfa761b3ffabdde9a9": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a flower pot, which is not one of the classes: tree, ficus, fern. It also doesn't include objects like ['flower', 'bouquet', 'rose', 'tulip', 'daisy', 'lily', 'sunflower', 'orchid', 'flower arrangement', 'flowering plant', 'garden flowers', 'wildflowers', 'floral']." } }, "e9877078b45b4f739d6206d9a75ca72b": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower. It is a single object and clearly depicts the class." } }, "e9e8b1ca9d3640f8be00b760e1fad170": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is a single object and can be used for physics simulation (e.g., wind interaction)." } }, "e9f2f250b6ef40c5883b2d2e680e3f8a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is not clear enough to determine what the object is. It appears to be a very thin object, making it difficult to identify as a tree, ficus, or fern. The image quality is also not ideal for physics simulation purposes." } }, "ea84a82400204c66a4e13f481411643d": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a plant, potentially a ficus or fern, which falls under the specified classes. It could be used for physics simulation." } }, "ea9de7c3dbc1470ab98cda7f31d87ca7": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single flower, which is suitable for physics simulation in a video game." } }, "eae93d23408244d2b828cf6e304b28f0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a flower arrangement, which is a mix of different objects. It doesn't clearly depict a single object from the allowed classes (tree, ficus, fern, or flowers). Also, it is not suitable for physics simulation due to the complexity of the arrangement." } }, "eb20c2c5df4b47fb8d9410fb98f21576": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object." } }, "ebb2767d905048da8159f88bf48f7d3f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a bouquet of red flowers, which falls under the 'flower' category. The image is suitable for use in a physics simulation." } }, "ec347293e6e043f080c6d503ea3298ee": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a memorial and flowers, but not a single object in the classes specified. The flowers are also part of a larger scene." } }, "ec988c8c208c43c3908b902111070188": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is acceptable for the 'flower' class." } }, "ecfa7654f9c149039755bc15c55dac1c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract and doesn't clearly depict a tree, ficus, or fern. It would be difficult to use this for physics simulation." } }, "ee5132a2394145dab567f0f62d95a7b0": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flowering plant, which falls under the provided list of acceptable classes. It is a single object and suitable for physics simulation." } }, "ef660f75abae45679743d27924707c08": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a daisy, which falls under the 'flower' category, and is suitable for physics simulation in a video game." } }, "ef679907fd904772b6eeec331d488f56": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts two flowers, which falls under the 'flower' category and is appropriate for simulating physics in a video game." } }, "efe870a0cec74586b55d44b55c62d779": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a rose, which falls under the 'flower' class. It is a single object and suitable for physics simulation." } }, "f011d24ce98a4de49dbb68a2472a8580": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a vase of flowers, which falls under the 'flower arrangement' category. It is suitable for physics simulation as it can be used to simulate the swaying of flowers in a vase." } }, "f0d124f30fbf4402956a24fd76adc8ab": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of ground with flowers and plants, rather than a single, distinct object from the specified classes (tree, ficus, fern, or flowers). It also includes other materials like soil and mulch, making it unsuitable for physics simulation of a single object." } }, "f1a984ec17b94cdd860b5e7c4fe40170": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of roses, which falls under the 'flower' class. The image clearly shows the object, and a bouquet is a common way to see flowers." } }, "f20a60b146a246f6a1f9bb7be02a81d4": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower in a pot, which falls under the 'flower' category. It's suitable for physics simulation as it can be used to simulate the swaying of the flower or the pot falling." } }, "f2ff1d3704c8454e95c6225bd64a5646": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flower pot, which is not one of the classes: tree, ficus, fern, or flower." } }, "f525de6ea9de473f87c408228d36da03": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. The object is not recognizable." } }, "f52d8ebfb7224e0bb3e1b572cd70910a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a bouquet of flowers in a pot, which falls under the category of 'flower arrangement' or 'flowering plant'. This is appropriate for a physics simulation, as one might want to simulate the behavior of such an object being dropped or swaying." } }, "f5baa1daab844f69a4dc89afac098bb3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus in a pot, which is acceptable. The image clearly depicts the object class." } }, "f658c352668f43529af6bb97973b3d5e": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a bouquet in a vase on a table. It contains other objects besides the flowers, such as the vase and the table. We want images that depict cleanly ONE SINGLE OBJECT belonging to one of the classes." } }, "f6a887dcda1b41a7941d794e2ff8eb76": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tree or plant on a brick surface. It's not a clean depiction of just a tree, ficus, or fern, and includes other elements." } }, "f6b4bbec4d25432db58ce7706dc81dcb": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a tree, ficus, or fern. It appears to be a stove top or a cooking surface." } }, "f6dd376905694674a35758fe100b1a96": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a tree in a pot, which is suitable for physics simulation in a video game. The tree's swaying in the wind can be simulated." } }, "f761746650d64be7b3263df3eaf622e2": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a ficus in a pot, which falls under the 'ficus' class. It is a single object and suitable for physics simulation." } }, "f774cad2fd2f43919a651b720d8e8ba8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a group of flowers, which is acceptable as a 'flower arrangement' or 'flowering plant'. It is suitable for physics simulation, especially for simulating wind effects or interactions with other objects." } }, "f7ce9559e7df41e9a9da16dcfea80901": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a flowering plant, which falls under the 'flower' class. It's suitable for physics simulation in a video game." } }, "f802fa9c582b47f2bf1a2e123d688bf8": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a single rose, which falls under the 'flower' category. It is suitable for physics simulation in a video game." } }, "f85c796cdefc4b75b9d5892055650332": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a ficus in a pot, which is acceptable for physics simulation in a video game." } }, "f875f61a55ed4d1aa4cc5376edd15f07": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a tree, ficus, or fern. It appears to be a simple, abstract shape, possibly a stick or stem. It is not suitable for learning physics parameters related to the specified plant classes." } }, "f9f807bf18d14eb3a5175b8caa79854f": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a rose, which falls under the 'flower' category. It's a single object and suitable for physics simulation." } }, "fa32a784f6184eef872bff9dd3028206": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image contains a flower in a pot on a stool. The stool is an additional object that is not a flower. I need to reject the image because it contains other objects in addition to the flower." } }, "faac771f17e74231bfb35b8b81f2eb0c": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower arrangement, which is acceptable for the 'flower' class. It is a single object and suitable for physics simulation." } }, "faf4c21c3c4842798005ac57b47e63f3": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image depicts a flower, which is suitable for the video game development." } }, "fcc64a26003149b99621b965d9f2ec25": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too abstract to represent a tree, ficus, or fern. It looks like a geometric shape rather than a plant." } }, "fd547a1545bd4184a8bbaaff4bf8e5dc": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is difficult to identify and doesn't clearly depict a tree, ficus, or fern. It is an abstract shape." } }, "fdfbd40cba564217b43fa0193d78af3a": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any of the specified classes (tree, ficus, fern, or flower). It appears to be a simple, abstract shape." } }, "fe251a80bcd2478282303294f8524586": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too blurry and the object is not clear. It is also difficult to tell if it is a tree, ficus, or fern." } }, "fe4b685c0c6e48db96e598c34000c895": { "obj_class": "flowers", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a flower arrangement in a container. While it contains flowers, the container and the arrangement itself make it unsuitable for physics simulation of a single object." } }, "0007a7c8fcb44074b20fa4e14b8730a6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden block, not a jello block. The texture and material are completely wrong for the requested class." } }, "015eaf92c6e3453182a4a4c92642580b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "01cf70b90ab8487d8a822abf13454406": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of pie, not a jello block or any related item from the specified class list." } }, "0278450d1e324c33904e160e115f6fbd": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky humanoid figure (like a Lego or Roblox character), not a jello block or any related dessert item." } }, "02d72fa7e9f7472c80ec4edc0b12899d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a snail on a branch with cherries, which is not related to the class 'jello_block'." } }, "041d144efd2745879981e67abb9905ba": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stacked blocks, but the texture resembles marble or stone rather than jello or gelatin. It doesn't clearly depict the 'jello_block' class." } }, "04ba911e767c4bfea2269f6bbca35cdc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple donuts, not jello blocks. The object class is incorrect." } }, "04c00fc6f81441f0acf9a1d092efe830": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of cake or cheesecake, not a jello block or any related item from the specified class list." } }, "04ed26dfe7124e74937d7dd50562625b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a very abstract, elongated pink block that does not clearly resemble a jello block, jello cube, or any common form of jello dessert. It lacks the typical visual characteristics (like translucency, texture, or common shapes) associated with jello." } }, "0716cddd4b14421fb4db6eaedf59375f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that resembles a jellyfish, not a jello block or any of the related search terms." } }, "073626ba1f0a419d9938ff1e1b493aac": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not clearly resemble a jello block or any related dessert. The texture is unusual, with a flaky/cracked appearance on top, and the shape is amorphous, not typical of jello. This makes it unsuitable for representing the class." } }, "07ca61f84ae245138b4589fc72f18909": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (four cubes), not a single object as required." } }, "07ea6d4e19b642ad95f53b680d2d0f55": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish-like creature, not a jello block, cube, or dessert as described in the class list." } }, "08de69eb15244cdba61861d4b7b861f7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be dried roots or fungi in a wooden tray, not jello blocks or any related gelatin dessert." } }, "09e88bb39b424bee93099002f75b9e70": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts Lego toys (figures, car, baseplate, tree, flowers), not a jello block or related dessert." } }, "09f1b6a591e94b58ab4222364f6b5118": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a metallic drain cover or grate, not a jello block or any related dessert item." } }, "0aa96b4145c9450f8d8946a5dbcc358a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a piece of rock or stone, not a jello block or any related item like gelatin or jelly dessert." } }, "0af7ea294fab4abb9e961a0a9d3cc7a8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cartoon character (Strawberry Shortcake), not a jello block or any related dessert." } }, "0b29c13a02334b33a3ead377c358fd3c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or any related object. It shows blue spheres on wooden structures, which is unrelated to the target class." } }, "0b7b9f1bc12a4ebf818387d18f54dc63": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character, not a jello block or any related dessert." } }, "0b80f4fe0de34b70b92a1c8eb3b51961": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely blank. The object is barely visible and occupies a tiny fraction of the image, making it impossible to identify as a jello block or assess its quality or suitability for physics simulation." } }, "0b8fee01acbb42919d91b4fff07ec1bb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a simple block shape, but its texture and opacity do not resemble jello or gelatin. It looks more like a solid, opaque block rather than a translucent, wobbly dessert." } }, "0b9867d98c154737b422fa5afacfc178": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a strawberry, not an object belonging to the 'jello_block' class (e.g., jello, gelatin block)." } }, "0c961bcd4cd64c568ec524b5f0030af7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of cake or pastry with berries, which does not belong to the 'jello_block' class." } }, "0cbbe2cfcac24e528bb1b34f4432d7ec": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright. The object is barely visible and cannot be identified." } }, "0d2ebadf56ab4a8b885d7598c8d18ac2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not resemble a jello block." } }, "0db2a6960d274a86a2071c5324d6fd96": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Lego brick, which is a hard plastic toy, not a soft, wobbly jello block or gelatin dessert." } }, "0e68ae536b274041a819395d46f3ddaf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "0fbbe301e75347fdaf6fb9aaad1e3ae9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Lego construction of a character (Cookie Monster) and a lamppost, not a jello block or any related dessert item." } }, "1020c5a35530475691fff281e9e81f59": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a strawberry, not a jello block or related item." } }, "103e066a3c9545e4b3bfd2f176b38f52": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of mango, which does not belong to the 'jello_block' class." } }, "1060ada682a748bf84f2cf4342924d46": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows Lego blocks, not jello blocks. These are distinctly different objects with different physical properties." } }, "10c4fbc517164a8591f8398d9e917bcf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tray or mold, possibly for laboratory use, not a jello block or gelatin dessert itself." } }, "13591ac0e4ea45749c29f5471eb0ab22": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains text and a cartoon creature with a microphone, not a jello block or anything related to the target class." } }, "1384fccaf3c943a5beddafc32fca1dda": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dessert, possibly fruit-based with cream and sauce, not a jello block or gelatin dessert." } }, "13de9f761fd14380acf33d084e8b2dae": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright, making it very difficult to discern the object. It appears as a faint white cube on a white background, lacking the characteristic color, translucency, or texture of a jello block." } }, "140ab67746834d8d980ddb51e3f82590": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it impossible to identify the object. It does not clearly depict a jello block." } }, "149ebc1ff87e45a2a092d9ba6add62dc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict any object, let alone a jello block. It appears to be just a blue gradient background." } }, "1517039066b0472a9db9148073f5d751": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Rubik's cube on a block, not a jello block. It contains multiple objects and the primary object shown (Rubik's cube) does not belong to the target class." } }, "1570ecb3f99e46eea13eb6d5b980ae7e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character figure, possibly made of a jelly-like substance, but it does not represent a 'jello block', 'jello cube', or any of the typical forms associated with the requested class." } }, "15eae51b0fe84e95bfa74b3ee8463731": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern the object clearly. The quality is too low for training data." } }, "16439282267f4f45ab1a224d7249e31d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block, jello cube, or any related item. It looks more like a rock or a piece of moldy food." } }, "16c2f3b8706f4fd7b64139238f5ab1f8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dessert that looks more like pudding or mousse topped with whipped cream in a bowl, not a jello block or gelatin dessert as specified by the class terms. It lacks the characteristic appearance (translucency, block shape) of jello." } }, "170683a4e5c54b0e9e202064fb53f52a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cake, not a jello block or gelatin dessert." } }, "1758ec9277334676a661f538305c5902": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects forming a complex structure, not a single jello block. The small pink cubes might resemble jello, but they are part of a larger, unrelated assembly and not the main focus." } }, "1780d873776741a0876bd905e90886c6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks more like a cupcake, muffin, or Easter bread with icing and sprinkles, not a jello block or gelatin dessert. It lacks the characteristic translucent and wobbly appearance of jello." } }, "180684eac5064315a5e5ce474fd67120": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stone structure, not a jello block or any related item." } }, "185c715c27264f64b181dc47096f02e8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block made of bricks, not a jello block or anything related to the specified class." } }, "186ef4b9b2834004be683c416405f983": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image clearly depicts a single object resembling a jello block molded into the shape of a Lego brick. The texture is consistent with jello/gelatin, and the quality is good. It fits the class description and is suitable for physics simulation due to the expected wobbly nature of jello." } }, "190d22290a754ce6a9dd63ac2420e341": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality. It does not depict a recognizable jello block." } }, "199f9be566a4481cbc07ee14ceacda77": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of cake with cream and strawberries, not a jello block or gelatin dessert." } }, "19f848c62bef44c0a3cbe72fbcd44ec6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a carton of orange juice, not a jello block or any related item like gelatin or jelly dessert." } }, "1a6d080bec614e8599c9c8cb295e4144": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a molded jello dessert, which fits the 'jello_block', 'jello mold', or 'jelly dessert' description. The quality is good, and it represents a single object suitable for physics simulation due to jello's characteristic wobble." } }, "1b87a08b81d34707bbddaa256827297c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a thin, flat object viewed from the side, which does not resemble a jello block or any related item like gelatin or jelly dessert." } }, "1bb631ef54f04af3a022e6b79e718c0c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that resembles a jellyfish or a slime creature more than a jello block or dessert. It does not clearly represent the target class 'jello_block'." } }, "1de6ddc8b07a4d8a9edae2717b55f65d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white, and the object is extremely faint and barely visible. It cannot be clearly identified as a jello block, and the quality is too low for training." } }, "1f3dec541153462989ab89b26836a9ff": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Rubik's cube, not a jello block or any related dessert item. The object belongs to a completely different category and has vastly different physical properties." } }, "1f6a3c6abfc046308c66f54de3f90783": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky, pixelated animal (likely a cat), not a jello block or any related item." } }, "1f865a37797f46809b218c8488f1c12b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a grey, faceted, geometric object that does not resemble a jello block or any related terms. It lacks the characteristic appearance (color, transparency, texture) of jello." } }, "1f9cf73507874f398a75ab9db22e4409": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block, jello cube, or any common form of jelly dessert. It looks more like a stylized cartoon object or creature component." } }, "1fa75984e231488483182a29e2a3d859": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a donut, not a jello block or any related gelatin dessert." } }, "201c02bf80974468a1d93f534259a9b3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two empty paper cups, not a jello block or related dessert." } }, "2023d6e4c53540539207a63782ad8806": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which is an animal, not a jello block or any related dessert item as specified in the class description." } }, "21a2612640cf49e1ba273218c2f94197": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple abstract, blurry shapes that do not clearly depict a jello block or any recognizable object from the specified class. The quality is poor and the content is ambiguous." } }, "220abbec03e44eecbe8843d190adc0b2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in or cropped, making it impossible to identify the object as a jello block or anything related to the target class." } }, "222eefd4aef6469cbb1e79b001b16e49": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex structure, possibly a game level or toy, not a jello block or any related dessert item." } }, "236762a4bd684e899e573621f8023596": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify the object or assess its quality. It does not clearly depict a jello block." } }, "23c13df4292949d0b5ae084b54d6c9f3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its properties. The quality is too low for training data." } }, "249050941d5a417ab2e2a3442ee870d1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, grey block, likely stone or concrete, resting on a ground texture. This does not resemble a jello block, which should be translucent, often colorful, and appear soft/wobbly." } }, "2781c665b69246eaa36b094169435b86": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a food cart or kiosk, not a jello block or any related dessert." } }, "28e28d3a18c4429e872c0970f4f57650": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a flat, oval disc. While it has a somewhat gelatinous appearance, its shape does not resemble a 'jello block', 'jello cube', or typical 'jello mold'. It is too flat and lacks the volume expected for this class, making it less suitable for representing the typical physics of jello." } }, "295254d4b5b946eea23f959772af280b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly see or identify the object. It does not resemble a jello block or any related item." } }, "2a93f91b3bf9462eb4e14ee87db9b54f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a dessert stand with various pastries and sweets, none of which are jello blocks or related items. It does not depict the target class 'jello_block'." } }, "2b0416504de34179ad425784a387de71": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or anything resembling gelatin. It looks like a thin, rigid object viewed from the side, possibly a piece of wood or metal." } }, "2c54c23ed8a74d4b9022c676ce86fd91": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cheesecake or mousse cake with fruit toppings on a plate, not a jello block or gelatin dessert." } }, "2cd47f698ae140a6bd06b0ed36e645be": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a building frame structure, not a jello block or any related dessert item." } }, "2d03dc126c1a4f37943845aa392f33f5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a generic grey cylinder, which does not resemble a jello block, gelatin, or any related dessert item. It lacks the characteristic color, transparency, and texture associated with the class." } }, "2d0758004a83402aa8736b04ca883f1c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It appears to be made of a rigid material, possibly wood, and lacks the characteristic translucency, color, and texture of jello." } }, "2d752176d37845d4ad997b909a68f3eb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cupcake, not a jello block or any related item from the specified class list." } }, "2d785665af1d44e9a4049d5dfc5c67a7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays objects that resemble game tiles or possibly chocolates, not jello blocks or gelatin desserts." } }, "2dccdd2e465842a2ad33cf9e6fb289f3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a butternut squash, which does not belong to the 'jello_block' class." } }, "2f68d03db2564ca9b7df301b1e4aa39c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of cake, a cup, and a spoon, not a jello block or related item." } }, "302c12a91f5541359ef7a7c9f41de9bf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks detail and color. It's very difficult to identify the object as a jello block or any related item from the class description. The quality is too low for training." } }, "30cd19250afe415582f4478c8db0fabb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It lacks the characteristic texture, shape, and color (even if rendered in grayscale, the texture is wrong) associated with jello. It looks more like a piece of rock or porous material." } }, "31221f556e5c4a4ea801e772528e1af0": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized character or creature, not a jello block or any related dessert item." } }, "3167ad900dd841ba848271cb961df0f8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stack of various fruits, not a jello block or any related item from the specified class list." } }, "3197bb570c194870a80f9a941677ce96": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "319ee0cc94e3486db3a14cc23d1039f7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or any related object. It shows a red box, possibly a toolbox, with some small brown blocks nearby." } }, "31a6428d104d4258af2fb24e00e2cfd3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two cubes with textures resembling roof tiles, not jello or gelatin. It does not depict the target class 'jello_block'." } }, "34e32f801b6642a2bc2fb9b30622590b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows donuts (specifically, sufganiyot), which are baked goods, not jello blocks or gelatin desserts." } }, "3678d5fd71c2413d82b8891282945510": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pixelated stone block, not a jello block. The texture and appearance are incorrect for the requested class." } }, "3720e0be0c0148d29c477ef4e7d679d8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of pie and some strawberries, not a jello block or any related item from the specified class list." } }, "373908b340e54a9f878a3596ee7a4bab": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It appears to be a piece of concrete or plaster." } }, "3835ccde15ca4785903522d56c7a2eeb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image provided is a distorted, black and white image that appears to be a combination of animal features. It does not resemble a jello block, gelatin, or any related dessert item in shape, color, or texture. It is completely unrelated to the target class." } }, "38a2c03610004351acc0cce85ba022e2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a square of chocolate, not a jello block. The texture, color, and appearance do not match the characteristics of jello or gelatin." } }, "39b040b7e5c4477eabd40b7771a29def": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract, low-polygon shape that does not clearly resemble a jello block, jello cube, or any related dessert. It lacks the characteristic appearance (texture, form, translucency) of jello." } }, "39f3119f673d46e897414a02874450a8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is just a black silhouette and does not clearly depict a jello block or any recognizable object. It lacks texture, color, and detail necessary for identification and training." } }, "3ab7e42db84945299b7c367b0e6126ad": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to discern the shape, texture, or details of the object. It does not clearly depict a jello block or any related item." } }, "3b01ee60239b4a77918bd78b65d056b1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block, jello cube, or any type of gelatin dessert. It looks more like a slice of meat or some other organic material." } }, "3c718d25fe814818bd1afbc2e1a12c82": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a butternut squash, which does not belong to the 'jello_block' class." } }, "3ca53f59f56f4a18829b3d5ca58343a5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what looks more like a melting popsicle or ice lolly rather than a jello block. The presence of the stick and the puddle suggests melting, which deviates from the typical representation of a solid jello block or cube." } }, "3d4a694ea9844120856c1cc5db17e9fb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a voxelated donut or cake, not a jello block or gelatin dessert. While jello can be molded, the texture and sprinkles are inconsistent with the target class." } }, "3d911c511f2744ec9bfb99d46d2d6e14": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a jello block or anything related to the class. It appears to be an abstract, low-quality, black and white image of an unidentifiable object." } }, "3f1604af105d4164a204de6347364491": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts two Rubik's cubes, not a jello block or related object. It also contains multiple objects instead of a single one." } }, "3f2e7c82c67248fbb6524c805d15209c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains fragmented parts of objects that are not clearly identifiable as belonging to the 'jello_block' class. The quality is poor due to the fragmentation and lack of context." } }, "405bfb2f18b4462793d64161e3dada23": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mold or tray, possibly a jello mold, but not the jello block/dessert itself. We need images of the actual jello for physics simulation, not the container it might be made in." } }, "40d434724f8c4a31be2a82a10a8d4729": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern the object's material or texture. It does not clearly depict a jello block or anything resembling gelatin; it looks more like white, blocky puzzle pieces or tiles." } }, "41185d114887483a8d81d89d73fc7115": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object's shape is too generic and amorphous. It doesn't clearly resemble a 'jello block', 'jello cube', or a typical 'jello mold'. It looks more like a flattened, abstract blob rather than a recognizable jello dessert." } }, "4139cadb34e8433a881b8380fdf8ed51": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a butternut squash, which does not belong to the 'jello_block' class." } }, "41dac22737c24e4291dfcce5838a1b7a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "4227c0c46a1640ef9c61c455f7bc10f7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image resembles a stylized jellyfish or a lamp more than a jello block or any related dessert item. It does not fit the class description." } }, "4269b905598f40a688f6ef2aaf46055d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not jello blocks or anything related to gelatin or jelly desserts." } }, "42da7b26f173427f89c9ddb64be1be73": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which is an animal, not a jello block or gelatin dessert as specified by the class." } }, "4354a328411745469b5e939167ad1741": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a structure made of Lego-like blocks, which is not related to the 'jello_block' class (jello, gelatin, etc.)." } }, "438b8aa0bc2049f8ab41068a29084be5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a castle-like building, not a jello block or any related item from the specified class list." } }, "43ba9603d5834fad9ecdc1857bb5e419": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related dessert. It appears to be a solid, opaque, grey block structure, possibly made of concrete or stone, sitting on a stand. This does not fit the visual characteristics (translucency, color, texture) of the target class." } }, "45419ad00a5b41819b230efc8070b922": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is just a solid blue color and does not depict any object, let alone a jello block." } }, "45cf382320b74adc9fc62033a760399e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (the jello-like dessert, toppings, and the plate). We need images of a single, clean object, specifically a jello block or cube, for physics simulation training." } }, "4642b38854594e20bb2b6bbd924a9287": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or anything resembling the target class. It appears to show some kind of tiled surface and a small, indistinct object, both rendered in white with low contrast." } }, "4670c9d94f2846cf802bb95603926540": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an ice cream cone, not a jello block or any related item from the specified class list." } }, "473bcd8945054b628be6ef78a97162f8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object lacks the characteristic translucency and texture of jello. It appears as a solid, opaque green block, which does not accurately represent the visual or physical properties of a jello block needed for physics simulation." } }, "478580460e9f4d44858032a3bb933c9c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "486238438ec64c3cb64d607a30d1a9e6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of pizza, not a jello block or related item." } }, "4875e2c6e3d64ba18c866ea7c058f9ee": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright. It is impossible to identify any object, let alone a jello block." } }, "49cda7abf2ac40348b8067c657b81693": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a complex architectural structure, possibly a building model, not a jello block or anything related to the specified class." } }, "49e83a6970214f7e98d961bf95b866b0": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a dessert in a bowl with toppings (whipped cream and cherry). This is not a standalone 'jello_block' or 'jello cube' as requested. It includes multiple objects (bowl, dessert, topping, cherry) and the main object is not clearly identifiable as jello/gelatin, looking more like pudding." } }, "49eb1d572e37402fa7156d594eb86e39": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a hard, stone-like or metal object with moss, not a soft, translucent jello block or gelatin dessert." } }, "4b13b9f6a8b445c48c1e610b34978449": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cupcake or tart, not a jello block or related gelatin dessert." } }, "4b783c5e19e24438a93c6266d6063ece": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden block with letters, not a jello block or any related dessert." } }, "4ca5db6fbe7347a4962959c753243762": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a section of a blocky, Minecraft-style structure, possibly a wall or ruin, not a jello block or any type of gelatin dessert." } }, "4d799df56c8f479dbf3c55b44eeaaa04": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is poorly framed, showing only a small portion of the object in the corner. It's impossible to clearly identify the object as a jello block or assess its quality." } }, "4de2a76e1730487a8d4df844e931fd5a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a metal tin container, not a jello block, gelatin, or any similar dessert." } }, "4e0e6deacc034f339eb6eee84a17d076": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized object that looks more like a potted plant or a cupcake with unusual topping rather than a jello block or jelly dessert. It does not clearly represent the target class." } }, "4ebf0fb60420485ca51ea9c7ad28f577": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts stacked cubes with a grid-like texture, which does not resemble a jello block or any related terms like gelatin or jelly dessert. It looks more like toy blocks or a low-poly structure." } }, "4f4900dfb3934ff2bc4d31b685eb9670": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a shoe, which does not belong to the 'jello_block' class." } }, "4fac7347a1324b389301b95169f20ef3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a complex dessert structure, possibly a cake or a fantasy building made of sweets, decorated with strawberry-like objects. It does not clearly show a jello block or any related item from the specified class list." } }, "4ff2bb37915d4ad6a13918568ea06a9d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, elongated object viewed from the side. It does not resemble a jello block, cube, or mold in shape, color, or texture. It is not clearly identifiable as belonging to the 'jello_block' class." } }, "50e0f0f7e37b4a80a6b809a8831835c2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a rigid, shelf-like structure, possibly made of glass or plastic. It does not resemble a jello block or any related dessert item." } }, "512e5c58293d4eaa83ad0ff9eb5be8e3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a zucchini, which does not belong to the 'jello_block' class." } }, "51304d1bd08148aca6e5a190232a459f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows fungus or mushrooms growing on wood, not a jello block or any related dessert." } }, "5141ba0001424691ae66ee00bf1dfa71": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pastry (like a cinnamon roll or similar), not a jello block or gelatin dessert." } }, "51b458cb0c9e46368ef2b6583a82d4e7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is a solid, grey block with holes, resembling a mechanical part or base plate, not a jello block or any type of dessert." } }, "523838ecb26b404d948b393a3dcc439e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an ice cream sundae, not a jello block or any related gelatin dessert." } }, "52651a99bf12402c9cdfaea8cb865e6a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted does not clearly resemble a jello block or any related item like a jello mold or jelly dessert. It appears to be a stylized, abstract object that doesn't fit the class description." } }, "5377667862a547a1a421a676e063cb0c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dessert that appears to be a small cake or soufflé with ice cream and nuts, not a jello block or gelatin dessert. Additionally, it contains multiple objects (dessert, ice cream, nuts, plate, sauce) rather than a single object." } }, "5378b01d393d4701ba6851d97bbd532d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an industrial setup with conveyor belts and machinery, not a jello block or related dessert." } }, "54395f888ff54b58856a37efe1b84ed0": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a food stall, not a jello block or any related gelatin dessert." } }, "546925c54f3b471d8d833bdd65110834": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which does not belong to the 'jello_block' class. The target class includes items like jello cubes, gelatin desserts, etc." } }, "5470d4a8644e4223a84811a07ff2ba4d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays multiple small spheres around a central structure, which does not clearly represent a 'jello_block' or any related terms like 'jello cube' or 'jello mold'. It looks more like an abstract representation or a different kind of object entirely." } }, "551b01452db94b24bc0d3593781495f8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a large white structure and two small colored cubes). The target objects (potential jello blocks) are partially obscured by the white structure and are not the main focus of the image. We need images focusing solely on the jello block itself." } }, "5598cd89057940d0b9b6d9ad3311cfac": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object made of Lego-like blocks, resembling a cupcake or dessert, not a jello block. The material and expected physics (rigid blocks) are completely different from jello (soft, wobbly)." } }, "5719a470e4f94c619bcc4c7a2615e208": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, not a jello block or any of the related dessert items specified in the class description." } }, "57864ec248b34b52b7933b07848de0ab": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a Lego-like spaceship model, not a jello block or anything related to the specified class." } }, "57a82e68577b4259934aaffcbf28cb1a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a toy car made of blocks, not a jello block or anything related to the requested class." } }, "58baa36e9bd0487c8177c0c39ee7a99a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any recognizable object, let alone a jello block. It appears to be either blank or extremely overexposed." } }, "58c16ba8e8484ee2ab0a5a188592521c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish suspended inside a translucent block, not a standard jello block or gelatin dessert. While the block itself might resemble jello, the prominent jellyfish inside makes it not representative of the 'jello_block' class which typically refers to the edible dessert." } }, "5920339c502f4bd88219d426e0fc2c02": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that resembles a Lego brick, not a jello block or any related item from the provided list. The texture and shape are inconsistent with jello." } }, "5ad54ef93c8f4a2c86b84c7c03602046": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not clearly depict a jello block or any related dessert. It looks more like an abstract, low-polygon shape, possibly a stylized mushroom or structure, rather than jello." } }, "5af966079ae64db9b89dd826ab6b54aa": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a layered dessert, possibly pudding or mousse, in a glass cup with whipped cream and a topping. It does not clearly represent a 'jello_block' or typical gelatin dessert, which is usually more translucent and has a distinct wobbly texture." } }, "5cdd7893753c463eb835351ec730f454": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a thin vertical stack of small shapes, which does not resemble a jello block or any related item. It fails to clearly depict the target object class." } }, "5cffc8a4596241aa9d1e3955f06974d5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image primarily shows a container, and the object inside, which might be jello, is not clearly depicted. We need images focusing on the jello block itself, not the container or mold." } }, "5f1095fe70354ded83812b0dc1fcd76e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or its details. It is too bright and lacks contrast, rendering it unsuitable for training data." } }, "611edc5cff454752b4d58938ca04cb41": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a pink pony figure, not a jello block or any related dessert." } }, "62e1f21249854d5294ad3d90bcec00a1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is almost entirely white, with a very small, indistinct white shape. It does not clearly depict a jello block or any recognizable object due to its extremely low visibility and lack of detail." } }, "638a6756115943119ddb6b442d973a73": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (a slice of something on a plate, and a separate floating shape). Additionally, the object on the plate is ambiguous; it could be interpreted as jello, but it also resembles a slice of pie or tart, making it unclear for the target class 'jello_block'." } }, "638a9233ed4e4581a9fca4d022ce1c2e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks stacked together, not a jello block or any type of gelatin dessert." } }, "63c9391726d54b5e8c0e9e87d640dcd1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a jello mold, which falls under the specified class. The quality is good, and it represents a single object (the jello on a plate, which is acceptable context). Jello is a classic example of an object with interesting physics (wobbliness, deformation) making it suitable for simulation." } }, "642dfa797053466187e7dbfba3830b85": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is too low-poly and lacks the characteristic texture (like translucency) or typical shape (like a cube or mold shape) of jello. It looks more like a generic pink disc and doesn't clearly depict the 'jello_block' class." } }, "64be67fbb7ce427f83279699b21b8359": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a collection of small, dark blocks arranged in a wavy pattern, which does not resemble a jello block, jello cube, or any common form of gelatin dessert. It lacks the characteristic appearance (translucency, smooth texture, typical shape) of the target class." } }, "64e8d14eb5af43a38b7fc3db7cf83ddf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of chocolate cake, not a jello block or gelatin dessert." } }, "6551259392dc4ee19c6064d9b51d936a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a tray, not a jello block or any related gelatin dessert." } }, "67af9bfc67424895adbfbf8ad816f120": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it very difficult to discern the object's features or even confirm it belongs to the 'jello_block' class. It lacks the typical visual characteristics of jello (like color or translucency) and is of low quality due to the poor visibility." } }, "67cb54126dfb48f6a74d01095865b2eb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a layered cake (likely tiramisu), not a jello block or gelatin dessert." } }, "68137801da0c40c8a9e55a4e1faec01c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stone or cobblestone block, not a jello block. The texture and appearance do not match the characteristics of jello (translucent, colorful, wobbly)." } }, "6830e31c6bdb4829ad39c01facdd9859": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is opaque black and looks like a solid block, not like translucent, wobbly jello or gelatin." } }, "68d225a6d45f47fbb2da5c9b35d24fe2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays multiple blocky objects that resemble layered cakes or sandwiches rather than jello blocks. The texture is opaque and solid, not translucent or wobbly like jello. Additionally, there are multiple distinct objects (different colored blocks, a grey structure, flowers), violating the 'single object' guideline." } }, "696ed5ffd87d4ef49e84fbf00cea15de": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cake, not a jello block or any related item from the specified class list." } }, "6a46f36b71a640c7969e29a289bc0269": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows juice cartons, not jello blocks or any related item from the specified class list." } }, "6a97cc69162842689332597fc3372ee4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not a jello block or any type of gelatin dessert." } }, "6b4c1bffd7224d378c46ade9009bd14f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object that resembles a colorful jello block or mold, consistent with the requested class. The quality is adequate for training purposes, and jello is a suitable object for physics simulation due to its characteristic wobbliness." } }, "6beef96c7906473c822709397f63f81c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "6c2ca2784b3642738cdaf3f9cc80a9bd": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a piece of broken debris, possibly plaster or concrete, not a jello block or anything related to gelatin desserts." } }, "6d226d8165184433bff5cb4c37e27510": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a large collection of various block types (like Minecraft blocks), not a single object identifiable as a jello block." } }, "6e94c80c4b6f40aa9895c31ef8efbf6a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or any related dessert item. It appears to be some sort of construction material or trim." } }, "6f51bddebce84ce58d9a19c18551b02a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stack of pixelated blocks with brick-like textures, not a jello block or anything resembling gelatin." } }, "6f7c42e1e5a1426b915b05213ba38940": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Lego minifigure, not a jello block or any related item from the specified class list." } }, "7099f4c91ee448ddbd4f3e6f7e249c87": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a cutting board, knife, apple, and banana peels, none of which belong to the 'jello_block' class." } }, "713fc4046bb04352b51d45f31e950984": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cupcake, not a jello block or any related item from the specified class list." } }, "71fdd82bef144b3cb23a0c21d1a5c25b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related dessert. It appears to be a hard, angular, abstract object, possibly a container or sculpture, lacking the typical characteristics of jello (like translucency, wobbliness, common shapes)." } }, "72a864afb37046e3b5f65387d36d5747": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cake, not a jello block or any related item from the specified class list. Additionally, the image is extremely overexposed and lacks detail, making it low quality." } }, "72cd3ce1ead44d01b2198dd6ecd08927": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a character sitting on a block of dirt/grass, not a jello block or anything related to the target class." } }, "72e01b24145e420d91965a547310c189": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a blocky object that looks more like a Rubik's cube or some kind of electronic device, not a jello block. It does not have the appearance or expected physical properties of jello." } }, "72f7e564a3e84a8aab15e2357c1d929d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, multi-tiered cake with candles, not a jello block or jelly dessert. It does not match the visual characteristics or common forms of the target class." } }, "7303e59a50b24950969baf4510cc5d46": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly shows a single object that resembles a red jello cube or block against a clean background. The quality is acceptable, and it fits the requested class 'jello_block'. It is suitable for physics simulation due to the characteristic properties of jello." } }, "733b0868db6c4acf9fa9c16ccfaa330b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized, cartoonish character with eyes, rather than a typical jello block or dessert. It does not clearly represent the intended object class." } }, "74110fd064524845b8b005a3026f68a8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a birthday cake, not a jello block or any related item from the class list." } }, "746fe961aa304503b28e788f2717e772": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a patch of sandy ground with pebbles, not a jello block or anything related to gelatin desserts." } }, "747650969b3a4afebd7b522c33e8609b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The objects in the image are opaque, matte cubes stacked together. They resemble toy blocks more than jello blocks, which are typically translucent and have a distinct texture. The visual appearance does not align well with the material properties expected for jello/gelatin, making it unsuitable for learning physics parameters for that class." } }, "75125589b2a548e3b051d4ef5ea4c5bb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden basket, not a jello block or any related dessert." } }, "789e15b7cf234d59bc53cd81ef0f9d11": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a vegetable, likely a zucchini or cucumber, not a jello block or any related dessert." } }, "7a3dc12d96f741ab84d358fd2ac3df28": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a squash, not a jello block or any related item from the specified class." } }, "7b62fa23c474424f8458087f7cbfc3ec": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a gourd or pumpkin, not a jello block or anything related to gelatin desserts." } }, "7b912daa25a44162945e31d45acfc502": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pineapple, not a jello block or any related item from the specified class list." } }, "7b9a33386eab4dd986aa0980054ead3c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of cake or tart with fruit, not a jello block or gelatin dessert." } }, "7be4eaa0ee4d4d75a10f0a3350a17f34": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block with a wood texture, not a jello block. The material properties are completely wrong for the target class." } }, "7c363130174a4bc8b7d9d6582532fec5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden blocks, not a jello block or gelatin dessert. The texture and appearance do not match the target class." } }, "7c429579928a42398b9bd7ad0497381a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it difficult to discern any details. Furthermore, the object depicted appears to be a Lego brick, not a jello block or any related item." } }, "7ef29dc548aa42f89e986618b81cdb09": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an ice cream cone or a similar dessert, not a jello block or gelatin dessert." } }, "7f52bf47e9214e2d8451f0317f428b27": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sphere with a galaxy-like texture, which does not resemble a jello block, jello cube, or any typical form of jello dessert." } }, "807729ed9cf84372955fe383693ed743": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a jellyfish, not a jello block or any of the related terms provided." } }, "811fc56e93c145af926905f23cbf093c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it impossible to discern the object clearly. It lacks color, texture, and definition, rendering it unsuitable for training data." } }, "815f5a0ded9a4ffeb66b1e49597e468e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple wooden blocks, not a jello block or anything related to the target class (jello, gelatin, jelly dessert)." } }, "818e088dc59f4a89bfea14cb46a4beca": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of watermelon, not a jello block or any related item from the specified class list." } }, "81c4b185fb174bdf875ed88be6db2394": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of layered cake, which does not belong to the 'jello_block' class." } }, "81df13dbe23c4c9fb5e10d4ab4d6ce74": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts multiple blue, translucent structures that resemble stylized buildings or towers, not jello blocks or any related dessert item." } }, "82b435a4be034d369d06e7ac002a6089": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a low-polygon, abstract white shape that does not resemble a jello block or any related item from the class description. It lacks color, translucency, and the characteristic shape or texture of jello." } }, "8305af9a92e44f9db0adb446d8752fb1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern any object, let alone a jello block. The quality is far too low for training." } }, "83b8af3141dd49f7ba59fb19444565ae": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stack of pancakes with toppings, not a jello block or related dessert." } }, "83fd3dd85e05422785a9386bfce568b9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a basket or hamper, not a jello block or any related item." } }, "84675a7753a04cff935b2511ff985dcc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a very low-poly, flat-shaded representation that lacks the characteristic visual properties of jello (like translucency, texture, or a typical cube/mold shape). It looks more like a generic geometric shape or perhaps a piece of hard candy rather than a jello block." } }, "84b153e8deb94f3ca54989ed7086f8a9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pie on a stand, not a jello block or gelatin dessert." } }, "84e215dd326d41c8b67fc4a6c412f44a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern the object. It appears as faint grey shapes on a white background, not clearly depicting a jello block or any recognizable object." } }, "863b112d64fc4a01a9eaeccc1c0b3e6f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cake, which does not belong to the 'jello_block' class." } }, "8655be19ad7b46958e178b6d7283b491": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to discern the object or its properties. It does not clearly depict a jello block or any related item." } }, "868e3cdb4c7540ce8b4f395514885ce0": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "86d6b638f2224395aafd617933882a77": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a fantasy mushroom or jellyfish-like object, not a jello block or gelatin dessert." } }, "87796ce80d6c420e9b22b5fface0caf3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not jello blocks or anything related to the 'jello_block' class." } }, "8787dadc26454cc9b78c49fc32012dbf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, not a jello block or gelatin dessert." } }, "8855e73f55a14a48ad74eb0cafc4ee05": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "88c5ea2dbeff45818c42c34e44854590": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appear to be stone or concrete blocks, not jello blocks. The material and appearance do not match the target class." } }, "89599995536d4f1ba1998ff26697d915": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts what appears to be a small tart or pie, not a jello block or gelatin dessert. The texture and appearance are inconsistent with the target class 'jello_block'." } }, "8a2203f673cc4e02bcadc9b3bbdba5b4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image appears to be a mousse or pudding in a bowl, not a jello block or gelatin dessert. It lacks the characteristic translucent and wobbly appearance of jello." } }, "8a36fcb9485d4071b43415b595bd6c9d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a butternut squash, which is a vegetable and does not belong to the 'jello_block' class." } }, "8aa00644caed4e57837b2deb98ecca0c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pizza, which does not belong to the 'jello_block' class." } }, "8aa47e5107bc422ba523231e569c5499": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "8ad9f94723a7448bb9a54923e1404bef": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin side view of an object that does not resemble a jello block or any related dessert. It looks more like a flat, possibly wooden or pixelated structure." } }, "8b2580c6fd9a476f9786dcfeb390eeaa": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple different objects (various cakes, cupcakes, cookies, etc.), not a single jello block. It does not clearly depict the target class." } }, "8b90cf14a57148aead04adb5a85eb339": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an icicle, which does not belong to the 'jello_block' class. Jello is a gelatin dessert, typically soft and wobbly, while this object is hard and made of ice." } }, "8b95ec59e635440e89ee8b3f0e6466e4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a donut, which does not belong to the 'jello_block' class." } }, "8cfe08ba56214ae0827f8b2c39482694": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image shows a single object that resembles a molded piece of pink jello or gelatin dessert. While not a perfect 'block', it fits within the broader category description (jello, gelatin dessert, jello mold result). The image quality is good, and the object is suitable for physics simulation due to the expected properties of jello." } }, "8d119e4852924a3e94cfaa54528081f5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block, jello cube, or any common form of gelatin dessert. It looks more like an abstract creature or object." } }, "8db91efc58a0434781d169e1bf4b3e8d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a gourd or pumpkin, not a jello block or related dessert." } }, "8e4d81ae03984d59992b531836a04992": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an architectural model or floor plan, not a jello block or anything related to the target class." } }, "8f0da228a2a64f769348398cc9c58f0b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple donuts, not a jello block or anything related to the target class." } }, "8f71050370c048fe8ab9f3902d42e272": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related terms. It looks more like a type of cheese, cake, or pâté due to its opaque, textured appearance and color. It lacks the typical translucency and smooth texture associated with jello or gelatin." } }, "8fea3562f05345f7ba7ba7f80dbff2f5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts hot dogs or sausages with sides, not a jello block or any related dessert." } }, "90460b162be849dd81212779eb664fa2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a platter with various food items like meats, cheeses, and breadsticks, not a jello block or related dessert." } }, "90b03e4e1ce24f5592bbfbb15b41c442": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cake or tart topped with strawberries, not a jello block or gelatin dessert." } }, "9153ef4f257f4c5c8cc3da8f2d74cdf6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "918de2465c154e42a3556f5afa885243": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object. The quality is too low for training data." } }, "92f1eb75ec31444da802703e6abc0366": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pie, not a jello block or any related gelatin dessert." } }, "9322a079ec6046f1a9afe35d8eaaf38e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a donut with toppings, not a jello block or any related item." } }, "93379208692b4da0b0f7881d70d69dcc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden object, possibly a puzzle or sculpture, not a jello block or anything related to gelatin/jelly desserts." } }, "93cd9744c06241d3a905cd85e4e06c93": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a low-polygon, abstract object that does not resemble a jello block or any related dessert. It looks more like a stylized block structure or character." } }, "9541ae9320ac40cf8a525363857c70f4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block with a brick texture, not a jello block or anything related to gelatin/jelly desserts." } }, "95606b159207445b86484e6f45d74e74": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky, pixelated character or figure, not a jello block or gelatin dessert. It does not resemble the target class." } }, "975a07f2425243b3b719c637790efa72": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a very thin, almost 2D object viewed from the side. It does not resemble a jello block, cube, or any typical gelatin dessert, which usually has more volume and a different texture/appearance. The object looks more like a flat, possibly crystalline structure, and the viewing angle makes it difficult to identify." } }, "975bf895b42a4c6ab491625019732382": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows Lego blocks, not jello blocks. The objects depicted are hard plastic toys, completely different from the requested class of soft, wobbly desserts." } }, "98a4aaa5b5ef445b814eabf8ba31c06a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not jello blocks or any related gelatin dessert." } }, "9963bb7eeaf346288aed83203174211d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of fruit tart or cake, not a jello block or gelatin dessert." } }, "998a836ab30044178bfe0907c553f096": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "99db9d19a03f42138d136efc90c8560f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cupcake, not a jello block or any related gelatin dessert." } }, "9a0381cbbf324118bccd55466159d279": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a simple green block, but lacks any texture, transparency, or detail to clearly identify it as a jello block. It looks like a basic geometric shape rather than a realistic representation of jello." } }, "9a5c5abcdd4f487b8011e42a63b118ee": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a jello block or any related item. The object shown is abstract and poorly rendered, making it unrecognizable as the target class." } }, "9b65dd11838e4f8f8f2df2405df58465": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright and washed out, making it difficult to discern details. More importantly, the object depicted appears to be a small figure on a shelf, not a jello block or anything related to the target class." } }, "9c66e47273b14057a1c6a646336cffda": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stack of wooden crates, not an object belonging to the 'jello_block' class." } }, "9c72edc0766f476498b3685bf8ea6030": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "9ca6a2674b1644d5b29436aa2248d5c7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts stacked blocks that resemble a toy puzzle cube (like a Rubik's cube), not a jello block or gelatin dessert. The texture and appearance are inconsistent with the target class." } }, "9cbc3a86f54a48cab1262e53d4f8d67a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an aerial view of a landscape or terrain model, not a jello block or any related dessert item." } }, "9ccbdec00eb1465e980e76b2787d9af4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows opaque, solid green blocks. It lacks the characteristic translucency and texture of jello or gelatin, making it unsuitable for representing the 'jello_block' class, especially for physics simulation purposes where material properties are key." } }, "9d21bf9206b5450ab157e7e3ff61cd7d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays a low-polygon object that resembles a stylized sword or perhaps a strip of bacon, not a jello block or any related item. It does not fit the visual characteristics of the target class." } }, "9d2a02db0979494b89da323cf352fce1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bee and a flower, neither of which belongs to the 'jello_block' class. Additionally, it depicts multiple objects instead of a single one." } }, "9eb97747c511422e95ec9fc3b8e1e499": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image appears to be made of wood blocks stacked together, not jello or gelatin. The texture and opacity are inconsistent with the 'jello_block' class." } }, "9f10f662bd7743ed97cf1fe46e23dead": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a complex geometric object, possibly mechanical or abstract, made of rigid-looking materials (grey and orange). It does not resemble a jello block, gelatin, or any kind of wobbly dessert." } }, "9f47a81921ef4b25af115b91c2b7d539": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image is too abstract and distorted. It does not clearly resemble a jello block, cube, or mold, making it difficult to identify as belonging to the specified class." } }, "9fbff5821c64480cad13dffdbd91ebef": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stylized, opaque blocks with question marks, resembling mystery blocks from video games like Minecraft or Mario. They do not look like jello or gelatin blocks, which are typically translucent and wobbly." } }, "a085b8480f1d496caf6446f084403f01": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not a jello block or gelatin dessert. The material and appearance are completely different from the target class." } }, "a104c8ee588d4670ba5cd621bddb94c8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block made of bricks, not a jello block. The texture and material are completely different from jello or gelatin." } }, "a1fdce3add9d4f4783b9122b9239c100": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pie on a cutting board, not a jello block or related item." } }, "a202ffecd105422a9b3981f2feee073c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple distinct, opaque, solid-looking blocks. They do not resemble jello or gelatin, which typically have some translucency and a softer appearance. These look more like toy blocks and are not suitable for representing the 'jello_block' class, especially for physics simulation purposes where material properties are key." } }, "a2645d543a7246b3aad9c352407f6456": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which is an animal, not a jello block or gelatin dessert." } }, "a29ab58d85d3405a95455218eb704793": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object resembling a piece of jello or gelatin, fitting the class description. The quality is good, and the object is suitable for physics simulation due to its characteristic properties." } }, "a46784ffc73b4b00a88388bf06aebbb4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized vehicle or weapon ejecting small spheres, not a jello block or any related dessert." } }, "a4ad5eba1b964056a76ec191fbe328ff": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden object, not a jello block or anything related to gelatin desserts. The material and appearance are completely different from the target class." } }, "a4fe5f7c57034bdebf5cf1ea543f730b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows an abstract blue outline or shape, possibly a cookie cutter, which does not resemble a jello block, gelatin, or any related dessert." } }, "a5b9dc50b56b41609a04efb417b3172c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cake, not a jello block or any related gelatin dessert." } }, "a618fc55f88540c3ae25ccd59058cc0d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks contrast, making it difficult to discern the object. Furthermore, the object depicted does not resemble a jello block or any related item from the class description." } }, "a6726b68b53940a892927a77b6a8b441": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a cupcake, soft-serve ice cream, or frozen yogurt, not a jello block or gelatin dessert." } }, "a6fc0e4387f242b5a4492e985865c4d1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Companion Cube from the game Portal, which is a rigid, metallic/plastic cube, not a jello block or any type of gelatin dessert." } }, "a7f28b037e624880beaa3e5259ea31cc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cupcake, not a jello block or any related item like gelatin or jelly dessert." } }, "aadf967919f84a5983dc8b49efcc5b17": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains three stacked blocks, not a single object. Additionally, the texture looks more like solid plastic or wood blocks rather than a wobbly jello block, making it less suitable for learning jello physics." } }, "aaeaf64dad1c4bd784fff83b1a7f9bfa": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden alphabet block, not a jello block or any type of gelatin dessert." } }, "ab131ce60a954af8b3518bb3ca755cc4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not jello blocks. The material and appearance are incorrect for the requested class." } }, "aba72155c4c9415db35d4835abc9c09d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Minecraft scene with multiple characters and objects, none of which belong to the 'jello_block' class." } }, "abfdba1229214dd784c55c2b24abe397": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted has a rough, porous, almost rock-like texture and does not resemble jello, gelatin, or any related dessert. It lacks the characteristic smooth, translucent, and wobbly appearance associated with the 'jello_block' class." } }, "ac03f7ba3b06493798f0f1718d550982": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a jello block or any recognizable object. It appears to be fragmented or incomplete geometry." } }, "aca75c909788497faa953aee9e79af9a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a cake or pastry with icing and sprinkles, not a jello block or gelatin dessert. It doesn't match the visual characteristics of the target class." } }, "add5faa1212c4b868e51b21df0629a72": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky, stylized figure inside a box, which does not resemble a jello block or any related terms like gelatin or jelly dessert." } }, "ae6cd2e6818f4559b4041a5a68b34016": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a stack of solid, opaque blocks. It does not resemble the typical appearance of jello or gelatin, which is usually translucent and wobbly. This object looks more like toy building blocks and would not be suitable for representing the physics of a jello block." } }, "ae9fb0d6de684331b3ab8514a83425c6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not clearly depict a jello block or gelatin dessert. It appears more like a layered cake slice or possibly an ice cream sandwich due to its shape, opacity, and color scheme." } }, "af0a1c85555d44d692156c1c4cf1b0e9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It appears to be a hard, possibly metallic or plastic object, not the soft, translucent material characteristic of jello." } }, "af0f6e99bdc2406797271743dc938c7e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark, making it difficult to clearly identify the object as jello or gelatin. It also contains multiple objects (plate, fork) in addition to the main subject." } }, "b07fe40e15334d65884e51c71c8099e0": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of bread with jam/jelly on a plate, not a jello block or gelatin dessert as defined by the class." } }, "b0a7633456f54d8288cf690267de99e7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly discern the objects or their details. The quality is too low for training data." } }, "b20d9df4bcd7442ea42d181cb35ac15f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a blocky character model (similar to Minecraft Steve), not a jello block or any related item like gelatin or jelly dessert." } }, "b2ea5dd6a8fb405bbf918df2b802940e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden object, not a jello block or anything related to the class 'jello_block'. The material and appearance are completely different." } }, "b2f3832446d64a499ab599c65b66a465": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a baked good, likely a burnt cheesecake or tart, not a jello block or gelatin dessert." } }, "b315eccb47284871a7b38642cd0dd7ba": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and too bright, making it impossible to clearly identify the object or its features. It does not resemble a jello block." } }, "b39f4d8698204fdaa04f35bea6fc6a1c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stacked wooden blocks, not jello or gelatin blocks. The texture and appearance are inconsistent with the target class 'jello_block'." } }, "b4786d912ae245429bf2d1f0f40b97ac": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows multiple blue, translucent, framed cube-like objects. They do not resemble jello blocks or gelatin desserts, which are typically solid and wobbly. These objects look more like rigid containers or abstract structures, making them unsuitable for representing the 'jello_block' class, especially for physics simulation purposes where soft-body dynamics are expected for jello." } }, "b4ac7bb672924afbb9a7616adda89aab": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of cake or pie, not a jello block or gelatin dessert. The texture and appearance are inconsistent with the target class." } }, "b548794219394871953377bd57c6fb1b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality or relevance to the 'jello_block' class." } }, "b573b1c4cf5d42778e701c981de426bc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cake, not a jello block or any related item from the specified class list." } }, "b5c1657d74434d81b1c86b442a6c7177": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image appears to depict an ice cream cone or perhaps a stylized tree, not a jello block or gelatin dessert." } }, "b6050e8eddb34f17bc1c80ff23cadb18": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to identify any object, let alone a jello block. The quality is too low for training." } }, "b653efa2e3254519af4122dd2dc6e38f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object appears to be a solid cube made of different colored opaque squares, possibly wood or plastic. It does not resemble the translucent, wobbly texture typically associated with jello or gelatin blocks." } }, "b6c9eef3a59a409ea789085a40dec434": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a LEGO piece, not a jello block or anything related to the requested class. Also, the image is extremely overexposed/too bright." } }, "b6d23690eea8464f8a49b14dbb1e099e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rainbow-colored torus. While jello can be molded into this shape, the texture and overall appearance do not strongly resemble jello or gelatin. It looks more like a generic geometric shape with a color map applied, rather than a wobbly dessert." } }, "b721ab19caab455ba33147060506214a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and lacks color and texture, making it impossible to identify the objects as jello blocks. Additionally, there are two distinct objects in the image, not one." } }, "b95b52f5a73244059115dcfdd3fd3134": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object. It does not resemble a jello block or any related item." } }, "b96976333b224bf58f82b4f20ed0c4f4": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a train locomotive, which is completely unrelated to the requested class 'jello_block'." } }, "b9a941b9d1e94428b5e0cea89520b3db": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely washed out and too bright. The object is not visible or recognizable." } }, "b9b481bd2f75450ab924bbffadb4e53c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a white block within a dark frame. This does not resemble a jello block, gelatin, or any related dessert item. It looks more like a light fixture or a block of styrofoam." } }, "ba07b6e423ee48ffb652ef7019e84c8f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows concrete road barriers, not jello blocks or any related dessert items." } }, "ba7cefc519e943ab8f10cad3786365ae": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a voxel landscape with trees and checkered structures, not a jello block or any related dessert item." } }, "bb035ac458e8472a9bc4341819d4f441": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a pixelated block that resembles glass or ice more than a jello block. Its rigid, crystalline appearance is not characteristic of jello, making it unsuitable for learning jello-like physics." } }, "bb8fe4619554437081ef74f3d931100e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, fragmented structure that does not resemble a jello block, jello cube, or any recognizable form of gelatin dessert. It is unsuitable for representing the 'jello_block' class." } }, "bc8e0148487a4ccf9d8a48cc8a0b13cf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a sphere with a colorful pixelated texture, which does not resemble a jello block, jello cube, or any related gelatin dessert in shape or texture." } }, "bcc59c4329ad4785bfc5b180f4ed0eb3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a flat, opaque, layered object (grey on top, white below), which does not resemble a jello block or any related dessert. Jello is typically translucent, often colorful, and has a distinct texture not present here." } }, "bd4b9221074f4e45aa2ffb19a9153209": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, not a jello block or any of the related terms like gelatin dessert." } }, "bd65000a73f144f68916be61551a7297": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple abstract block-like objects on a green surface, none of which resemble a jello block or gelatin dessert. The objects appear rigid and lack the characteristic translucency or texture of jello." } }, "bd68fe08a4c14d3b8103b5dc8080e98b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or anything resembling jello. It looks like a poorly rendered fragment of rock or terrain." } }, "bfa9c62efffb4d26a4144addce405f17": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of layered cake, not a jello block or any related item from the specified class list." } }, "bfdc0641523343dba5e793c30e02e411": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a butternut squash, which is not a jello block or any related item." } }, "c079e5d9af0c41219cb6b1fe021eab5b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a sphere with a bumpy, dark, and non-translucent texture. It does not resemble a jello block, cube, or any typical gelatin dessert in shape, color, or texture." } }, "c07fa13f34ff4ac8909881f95ee78491": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks color and texture, making it impossible to identify the object as belonging to the 'jello_block' class. The shape is abstract and doesn't resemble typical jello forms." } }, "c08f28dcf9ff41f682342e5522f74e6b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It looks like a rigid, architectural structure, not a wobbly dessert." } }, "c1531ba2b1af4300b83938b58ec68812": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows what appears to be a loaf of bread or cake, not a jello block or any related item like gelatin or jelly dessert." } }, "c15e41a62b46487fa6dcc67af7f7acee": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks like a stylized watermelon cut into slices, not a jello block or gelatin dessert. The texture and appearance do not match the target class." } }, "c1dbb267f8d34ca088ba2e14b4a0b28b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image appears to be a mousse, tartare, or some other type of dessert, not clearly identifiable as jello or gelatin. The texture does not match the typical smooth, often translucent appearance of jello." } }, "c24138d0f2db40b79585bf44521d5445": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a very abstract geometric shape with flat, opaque colors and distinct edges/vertices. It lacks the characteristic translucency, texture, and slightly wobbly appearance expected of a jello block or gelatin dessert. It looks more like a simple, rigid 3D model than actual jello." } }, "c244f7e2d44e49e096d0eec440fc90a6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of orange or citrus fruit, not a jello block or gelatin dessert." } }, "c25481b902ae47509b3b17160d1af486": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related terms. It looks more like a stylized jellyfish or a futuristic structure." } }, "c2c6a2248b5241afa048a8449aaa9ba9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a strawberry, which does not belong to the 'jello_block' class." } }, "c3ac9517a4d54e11899fcac8c18fdd13": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts objects that look more like mushrooms or some kind of organic growth, not jello blocks or gelatin desserts. They lack the characteristic appearance (color, translucency, texture) of jello." } }, "c402c1f106d54b6690a3b3b0eccce474": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks arranged in a structure, not a jello block or anything related to gelatin desserts." } }, "c47bbf11407043b6938fa638a68c2851": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks color and detail, making it difficult to identify the object as a jello block. It appears as a generic white block against a white background." } }, "c4859f2e5ac94fa1bcb259eb75f0962b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": true, "reason": "The image clearly depicts a single object recognizable as a jello mold or gelatin dessert, consistent with the 'jello_block' class. The quality is good, and the object's properties (shape, translucency suggesting wobble) make it suitable for physics simulation." } }, "c4c071378ad242138b8614122c92cf17": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cake (likely a bundt cake), not a jello block or gelatin dessert. The texture and appearance are inconsistent with the target class 'jello_block'." } }, "c4ddda565be643bb9ea2864468f8a8eb": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cake roll, a mug, and a tray, not a jello block or related item." } }, "c59744a732af4dec932a0f1448d7bb20": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of cake, not a jello block or any related gelatin dessert. It also contains multiple objects (cake, cup, cookies, plate)." } }, "c64db08f3eb047829eaea9268d9221b7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a dark, cosmic-looking sphere, which does not resemble a jello block, jello cube, or any form of gelatin dessert. The shape and texture are inconsistent with the target class." } }, "c694eb3250ef49568d8e2d6c7aab0eb9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cake, not a jello block or gelatin dessert." } }, "c7eff8e045fa4014a95a24c76b3c1a7c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. The texture and appearance look more like a stone or concrete block, not a wobbly dessert." } }, "c8f4687b064e4670aa15d0411e0e4caf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a skull, not a jello block or anything related to the target class." } }, "c96ec380d87b4eb6b55549cc17a0e395": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of cake, not a jello block or gelatin dessert." } }, "cab649e84ff64113bbf3a3c02094b7cc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building (temple/pagoda), not a jello block or any related dessert item." } }, "caf28a4c810741f6a171d8cfd655cc14": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a Lego brick, which is a hard plastic object, not a jello block or gelatin dessert." } }, "cb149914327e416f95e0f15016f028de": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block, jello cube, or any related dessert. It appears to be a sharp, elongated object, possibly a blade or shard, which is completely unrelated to the target class." } }, "cb640cdc102c4a178e74b9b9ec77899a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts donuts, not jello blocks or any related items from the specified class list. Additionally, it shows multiple objects instead of a single object." } }, "cbd8cf0857f2454fa221c28f2c4b50e5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cylindrical container or bottle with cartoon characters, not a jello block or any related dessert item." } }, "cd227f4b788f4dbf92c9f5a08237b91d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a building or stall, not a jello block or any related dessert item." } }, "cd294acd223d41589b456393a6c39bf7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or anything similar. It appears to be some kind of stand or abstract object, and the lighting is very poor, obscuring most details." } }, "cd38ddcafe744606ae87117e7219c1bd": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of cake or a similar dessert with frosting, not a jello block or gelatin dessert." } }, "cf602f9e36684456a266dfac518205f2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image quality is extremely poor. The object is almost invisible against the white background due to lack of contrast and color. It does not clearly depict a jello block." } }, "cfcd4baf21944296bb93fc3c02d51dfe": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a raspberry tart, which is a pastry, not a jello block or related dessert." } }, "d008478f173345abab6f5e339f907a8c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains a bowl of fruit (bananas, oranges, apples) on a tray, along with some bottles. It does not depict a jello block or any related item from the specified class." } }, "d00a04598dd84db4a53afb288667cc9c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a ring-shaped object with a ribbed texture and iridescent colors, which does not resemble a jello block, jello cube, or any common form of gelatin dessert." } }, "d06a5a553fe641ab92f720527b2278f3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a jello block or related object. It looks more like a stylized vortex or liquid effect, and it also contains multiple small floating objects." } }, "d097b03821cc4b95a246e60c3f596228": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts wooden blocks, not jello blocks or anything related to gelatin desserts." } }, "d0f6bdfb8bbe49dd8f79f6150b2d5db1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stylized object that looks more like a machine, container, or lantern, not a jello block or any related dessert item." } }, "d121b1c57de7495f8c0b5affa9c80167": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or any related gelatin dessert. It looks more like a savory baked dish, possibly stuffed vegetables or pastry." } }, "d170ef75c0624c20abe212ae72099dce": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a chocolate cake, not a jello block or gelatin dessert." } }, "d1acf7b6339e4e22967468f37f131525": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed/too bright, making the object almost completely invisible and unrecognizable. It is of very low quality." } }, "d1b442b228e6422f8877bab8f8a6bfec": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a cake (likely cheesecake or mousse) decorated with fruit on a plate, not a jello block or gelatin dessert as specified by the class." } }, "d28009cc01944768912bc66b0b8c0753": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "d305e37f38b34ce7baa242f35ffe118f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts two red spheres connected by a stick, which looks more like cherries or a similar fruit, not a jello block or any related item from the class description." } }, "d44e0a541f5f4ae5aa43acc35658bfcd": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely bright, making the object barely visible against the white background. It lacks the typical color and translucency associated with jello, making it difficult to identify as a 'jello_block'. The quality is too low for training." } }, "d486ed9d01b5487ab49ed4243e76353b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of pie or tart, not a jello block or gelatin dessert." } }, "d49676d1c37a4224a2a31842c56653ea": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or anything resembling the target class. It appears to be a very faint, white strip with perforations, possibly paper or tape, which is completely unrelated to jello or gelatin desserts." } }, "d4f2f04eeebf48a5a05a14e91f09239f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it very difficult to discern the object's details, texture, or even its shape clearly. It does not resemble a jello block or any related term due to the poor image quality and lack of color/translucency typically associated with jello." } }, "d5006697ad3c4bc1ac814110cde19af2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is heavily cropped and shown in grayscale, making it impossible to identify the object as a jello block. It lacks the characteristic color, translucency, and overall shape associated with the class." } }, "d524306aec78407183b2ba47f880af13": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a rigid, opaque object with text/logo elements, not a jello block or anything resembling gelatin." } }, "d5cdd32e969e42c8b9744b2d2f9e48a8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a fruit tart or pastry dessert, not a jello block or gelatin dessert." } }, "d61b6c74ee0645819fe2e9f2156a0206": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "d63f28d78a1c41449ff17169b9994465": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and washed out, making it difficult to discern the object's shape, texture, or material. It does not clearly resemble a jello block or any related dessert." } }, "d64062d6b99c42dc88a2eace83854649": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a stool or small table, not a jello block or any related dessert item." } }, "d679470ca45344829bd212fb56ea1f0b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object is a generic pink oval shape and does not clearly resemble a jello block or any typical form of gelatin dessert. It lacks the characteristic texture, translucency, or shape." } }, "d7735a639fd441b3b3821a815796d2f7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a torus shape with a cereal texture, not a jello block or typical jelly dessert. It also contains an extraneous red line artifact." } }, "d8310afcdcfb4b369f056c6ddb2b9bc7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of layered cake, not a jello block or gelatin dessert. While it might have jelly-like layers, the primary object depicted is cake." } }, "d885043f755c414cb60cf87dd2cb34f2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a white cube with black markings, which does not resemble a jello block or any related item from the class list. It looks more like a calibration object or a test pattern." } }, "d8e047265581465eaea940e25b0eaaa2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract, complex shape made of intersecting planes. It does not resemble a jello block, cube, mold, or any typical form of gelatin dessert." } }, "d9262b63d7e042c0a455dc5d84cda1f9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which is an animal, not a jello block or gelatin dessert." } }, "d93ac9460e8946ce9b33048e4954b0dd": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, not a jello block or any related dessert item." } }, "da8b5d21da9b4037982f29383d60b100": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden building blocks, not a jello block or anything related to gelatin or jelly desserts." } }, "dab6b75ee9d44835b151ef0affa8e44f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a package of 'FRUTIPS', which appears to be a candy or fruit snack product, not a jello block, gelatin, or jelly dessert as required by the class description." } }, "dd2e41aebba14ee3902e30ac4c99f07f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wooden stool or small table, not a jello block or any related dessert item. The texture and form are completely different from the target class." } }, "dd4e986ffa0e4004942dd9b899c5ae2d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pyramid with a brick texture, not a jello block or any related dessert item." } }, "de21240a43b64122bc31c21269f86eff": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and fragmented. It does not clearly depict a jello block or any recognizable object from the specified class list." } }, "df757822af914eeb87d46e4d2d532549": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a cartoon character, not a jello block or any related dessert item." } }, "dfe4208c83bb44eda50b4f2d73d4a36d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a block made of wood, not jello or gelatin. The texture and material are incorrect for the 'jello_block' class." } }, "e047890326064bc9a259fd2263e2cd25": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pie, not a jello block or related object." } }, "e05a65a4163b4f5eab6030e65d9d8de7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a character figure (possibly Pinkie Pie from My Little Pony), not a jello block or related dessert." } }, "e08385238f4d4b59b012233a9fbdca21": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains many other objects besides the jello-like block (broken walls, debris). We need images depicting only the target object class cleanly." } }, "e16595b007024a48a5ef9d48669cabf7": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a solid, opaque, multi-colored block. It lacks the characteristic translucency and texture associated with jello or gelatin, making it not clearly identifiable as belonging to the 'jello_block' class. It looks more like a generic geometric shape." } }, "e2315d81af8f44f48b3fddb65764ba9f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple dessert items, not just a single jello block. Most items appear to be cakes or pastries, not clearly identifiable as jello or gelatin." } }, "e27dafc4122a4ffc84d487532609c206": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a 3D model of a city block with buildings and trees, not a jello block or any related dessert." } }, "e2f33ed05ca848aa8f09908af7f1dfd9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is a black and white line drawing of what appears to be a creature or character, not a jello block or related dessert. The style and lack of detail make it unsuitable for the target class and physics simulation training." } }, "e324cfef06534c60955dc5f05bc447ce": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a wrapped chocolate egg (Cadbury Creme Egg), which does not belong to the 'jello_block' class." } }, "e3455b13c1a14ca69962d5f5fa2f3efa": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows wooden blocks, not jello blocks. The material and appearance are incorrect for the target class." } }, "e36372ef24004266a0ecc52a3453c1d1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects (various types of blocks, rails, torches, etc.) and none of them clearly depict a jello block or anything resembling jello/gelatin." } }, "e41d3d26c8e0414fbcca6efef468da5c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related terms like gelatin dessert. It appears to be a textured, possibly fabric-like object, perhaps a bag or abstract sculpture, which is not representative of the target class." } }, "e468c1abff564a2981ef0974b0160f84": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an abstract humanoid figure, not a jello block or anything related to the requested class." } }, "e526d118bf164b8aa8332399efa3743f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which is an animal, not a jello block or gelatin dessert as required by the class description." } }, "e67b3b6d86724d35b71b9b1c3fc5bfcf": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a jellyfish, which is an animal, not a 'jello_block' or related dessert item as specified by the class terms." } }, "e6e2a5dd531e4dac8752cef4951600e1": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an amorphous blob that does not clearly resemble a jello block, cube, or typical jello mold shape. The tan section and pixelated detail further obscure the identity of the object." } }, "e715ea408d664fe8b45c6ac530c89eaa": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted in the image does not resemble a jello block, jello cube, gelatin dessert, or any related item. It appears to be an abstract, intertwined structure, not a food item." } }, "e8e9c6dfa2c24317b72722bc510db133": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image contains multiple objects, and none of them clearly depict a 'jello_block' or 'gelatin block'. They appear to be other types of desserts or puddings, not fitting the target class description well." } }, "e9a56b5d4f344d5699ddb629f4b94ef8": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object that looks more like a rock, bread, or brownie, not a jello block. Jello is typically translucent, smooth, and often colorful, none of which apply to this object." } }, "e9d0b14e9348426598b62f0ee2cd1add": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a mounted deer head, not a jello block or anything related to the target class." } }, "eaad34d0a1ab47b0a2a29c83d6fc22ba": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a slice of chocolate cake or cheesecake, not a jello block or gelatin dessert." } }, "ec35e70e2cd2428098cf256d6c249b17": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related dessert. The texture appears rocky or scaly, which is inconsistent with the expected appearance and physical properties of jello." } }, "ec42d5254b764a9d9aa079eaed2b1043": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image displays an abstract geometric shape composed of white blocks, which does not resemble a jello block, gelatin, or any related dessert item. It lacks the characteristic appearance (color, translucency, texture) of the target class." } }, "ecaffb1e98664905b8617463dd4c2a1c": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item from the specified class list. It looks more like a mineral formation or a piece of rock/crystal." } }, "ecdbc391a69a4ad48127a9d8d595f8fd": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a pumpkin, not a jello block or any related item from the specified class list." } }, "edc81ad052fc4dfe82a97dda3c977c5a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object's texture and opacity do not resemble a typical jello block. It looks more like a solid, opaque material (like clay or soap) rather than translucent, wobbly gelatin." } }, "edeecbfc039248819bf67c7e55ce8bde": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an object made of solid, opaque blocks, which does not resemble the translucent and wobbly texture characteristic of jello or gelatin blocks. It looks more like toy blocks." } }, "ee25671274534436826f92af7e0191ec": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a jello block or any related item. It shows multiple objects, and the central object is partially obscured and not identifiable as jello." } }, "eeb9c7466ecd482da7e4d162d1e3b1b9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and lacks texture or color, making it impossible to identify as a jello block or determine its material properties. It doesn't clearly depict the object class." } }, "eec268513a9940b689d2c78847b99f72": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too bright and the object is barely visible against the white background. It does not clearly depict a jello block or any related object." } }, "f058995dd57c445a8e50030702a8dbc6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too dark, essentially a silhouette. It lacks any texture or detail, making it impossible to clearly identify the object as jello or assess its suitability for physics simulation." } }, "f117cd1683c24be6bd1da4c16038c2c6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a statue of a lion, which is completely unrelated to the requested class 'jello_block' or its associated terms like gelatin or jelly dessert." } }, "f206c24d6f364cad820c1c842e158568": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a chocolate cake, which is not a jello block or related item. It belongs to a different food category with distinct physical properties." } }, "f295dd1a5b2a40bea76efbe8234eb0cc": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a beverage carton, not a jello block or any related item from the specified class list." } }, "f304013d13f243c89ae0ef5f0441c0c2": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image resembles an octopus or jellyfish, not a jello block or any related dessert item." } }, "f3a737331ffb48788cf66dfc73b345e9": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows objects that resemble hollowed-out coconuts or wooden spheres, not jello blocks or any related gelatin dessert. The texture and form are inconsistent with the target class." } }, "f40662e4f906480b9a204b6d034a8a03": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a box, likely containing a mix for chocolate sauce, not a jello block or gelatin dessert itself." } }, "f49bb64049384b808416bbe48eb78f9a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a wooden chair, which does not belong to the 'jello_block' class." } }, "f53db618068e466e857b27f7962fdcb3": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts objects that look like wheels or gears with bristles, not jello blocks or any related dessert items." } }, "f57b2316afc84704a2b562a82c066a7f": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a block with a stone or brick texture, not a jello block. The material is completely different from jello/gelatin." } }, "f5d26e0e352d4cee8c47a66c8945c02b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not clearly depict a jello block or any recognizable form of jello. It shows faint, scattered hexagonal shapes that are too abstract and indistinct to represent the target object class for physics simulation." } }, "f66aba598a664f4797f3d0170ff33f81": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image does not depict a jello block or anything resembling gelatin or jelly dessert. It appears to be some kind of abstract, possibly Halloween-themed, object or creature." } }, "f726fa6fe8244709a1f2f42e1463bbba": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object depicted is a cube with a grass texture, not a jello block. It does not resemble jello or gelatin." } }, "f73bc6938c46400dbb2e29e55fc5010b": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making it impossible to clearly identify the object or assess its quality. It does not depict a recognizable jello block." } }, "f77876d8297846eeb23c4ad82dbebb97": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is too zoomed in or abstract, making it impossible to identify the object as a jello block or any related item." } }, "f78ea7447a774847bcec4dc101098906": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a bowl of strawberries, not a jello block or any related item." } }, "f8008f8334074394a27b3881595f7fb5": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It appears to be an abstract, spiky white structure." } }, "f973eab835954ca59fb5dab09e932a3e": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a candy apple, not a jello block or any related item from the specified class list." } }, "f99f4768f5f1468abf6b32b5fa34d1da": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows two stylized, anthropomorphic radish-like figures, not a jello block or anything related to the requested class. Also, the image is too bright and lacks detail." } }, "fa056cabe3444f7dbf4572237b5aaf99": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is extremely overexposed and washed out, making the object almost completely invisible and unrecognizable. The quality is too low for training." } }, "fad3515143a94894b1205d77bb62c525": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows stacked blocks that appear to be made of stone or concrete, not jello or gelatin. The texture, color, and overall appearance do not match the 'jello_block' class." } }, "fba68d736aad44b292fcbe430b34a806": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image shows a chocolate cake or lava cake with toppings, not a jello block or gelatin dessert. It does not belong to the requested class." } }, "fbcaa2e44d784de5b8f971ee130741b6": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a tomato being sliced on a cutting board with a knife, not a jello block or any related item." } }, "fe5937ad04294355a0a7adc19882c0fe": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It looks more like a stylized candy trophy or a lollipop-like structure." } }, "fec646eb0ca843e6a7e9d8c301993cfa": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image is completely white and does not depict any object, let alone a jello block." } }, "fec937f72d0d45fea441ca0a50532d2a": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The object in the image does not resemble a jello block or any related item. It appears to be a solid, opaque block, possibly made of stone or wood, which is inconsistent with the translucent and wobbly nature of jello." } }, "ff4da10009204a63836625bbf93f8a06": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts an aerial view of a house and landscape, not a jello block or any related item." } }, "ffd73e3de9754cc695dafd8a382cd01d": { "obj_class": "jello_block", "vlm_filtering": { "is_appropriate": false, "reason": "The image depicts a slice of layered dessert, which looks more like a cake or mousse slice rather than a jello block. Jello typically has a more translucent and wobbly appearance, which is not represented here." } } } ================================================ FILE: config/output_rendering/default.yaml ================================================ render: - nerf - gs - blender_glb - blender_gs nerf_render: split: test rendered_output_names: rgb blender_render_glb: features: - part_label - material_id - E - density - nu cmaps: - turbo - turbo - turbo - turbo - turbo rotate_video: true focal_length: null views: 25 ## how many views to render for 360 degree rotation default_fps: 30 camera_id: 4 blender_render_gs: init_xyz: [0.0, 0.0, 0.0] # Initial XYZ translation xyz_rotation: [0.0, 0.0, 0.0] # XYZ rotation in degrees place_on_ground: true # Whether to automatically place object on ground focal_length_ratio: null # Ratio to scale focal length bg_color: null # Background color (RGB or RGBA) transparent: false # Enable transparent background resolution_x: null # Render resolution X resolution_y: null # Render resolution Y cycles_samples: 16 # Number of Cycles render samples num_renders: null # Number of renders to do start_frame: 0 # Start frame to render is_dropping: false # Whether to drop object on ground save_blend: false # Save blend file for each frame rotate_around: 30 # Degrees of orbit per frame (if null, uses 360/total_frames) camera_id: 4 default_fps: 30 ================================================ FILE: config/paths/default.yaml ================================================ # Base paths # null -> use current directory # project_root: null ## for current directory like config base_path: null ## for everything else. On the cluster, we store data and model on a different mnt # Data directories data_dir: "${paths.base_path}/data" # Output directories outputs_dir: "${paths.base_path}/models" ## storing gs and f3rm render_outputs_dir: "${paths.base_path}/render_outputs" ## storing voxelize grids physgaussian_output_dir: "${paths.base_path}/mpm_sim_outputs" ## storing mp4 simulation results normalization_stats_dir: "${paths.base_path}/normalization_stats" ## storing dataset statistics and normalization ranges # Training checkpoint directories discrete_checkpoint_dir: "${paths.base_path}/checkpoints_discrete" ## storing discrete segmentation model checkpoints continuous_checkpoint_dir: "${paths.base_path}/checkpoints_continuous_mse" ## storing continuous regression model checkpoints # Third-party directories third_party_dir: "third_party" physgaussian_dir: "${paths.third_party_dir}/PhysGaussian" gaussian_splatting_dir: "${paths.physgaussian_dir}/gaussian-splatting" wavelet_generation_dir: "${paths.third_party_dir}/Wavelet-Generation" # neural network inference inference_results_dir: null # VLM labeling directories vlm_base_path: "${paths.base_path}/vlm_results" vlm_seg_mat_sample_results_dir: "${paths.vlm_base_path}/vlm_seg_mat_sample_results" vlm_seg_results_dir: "${paths.vlm_base_path}/vlm_seg_results" vlm_seg_critic_results_dir: "${paths.vlm_base_path}/vlm_seg_critic_results" # Object metadata mapping # Path to a JSON file that contains object metadata including class information # Format: {"obj_id": {"obj_class": "class_name", "vlm_filtering": {...}}, ...} obj_metadata_path: "config/obj_ids_metadata.json" # Default metadata file # Physics Configuration directories physgaussian_config_dir: "config" # Data curation paths data_curation_dir: "${paths.base_path}/data_curation" category_dict_path: "${paths.data_curation_dir}/cat_dict.json" # Path to category dictionary file final_dataset_path: "${paths.data_curation_dir}/new_final_dataset.pkl" # Output file for final dataset render_outputs_base_dir: "${paths.base_path}/class_render_outputs" # Base directory for rendered outputs vlm_filtering_results_dir: "${paths.base_path}/vlm_data_filtering_results" # VLM filtering results # Blender paths # Set to null for system blender or specific path for custom installation blender_path: "blender" blender_nerf_addon_path: "/home/vlongle/code/pixie/BlenderNeRF-main-custom.zip" blender_gs_addon_path: "/home/vlongle/code/pixie/blender-addon.zip" blender_output_dir: "${paths.base_path}/blender_outputs" # Blender scene file for rendering blend_file_path: "pixie/blender/empty_scene.blend" ================================================ FILE: config/physics/default.yaml ================================================ # Physics simulation parameters render_img: true compile_video: true debug: false white_bg: true # Default, can be overridden based on material mode and obj_class save_ply: true ## if true, create ply_files folder and save ply files for each frame # Sample selection sample_id: 0 # Which sample to use for physics simulation (0, 1, 2, etc.) # Object classes that don't use white background no_white_bg_classes: ["snow_and_mud"] ================================================ FILE: config/segmentation/default.yaml ================================================ # VLM segmentation parameters vlm: use_spatial_smoothing: false overwrite: true # VLM labeling configuration labeling: enabled: true # Enable VLM labeling pipeline overwrite: false # Overwrite existing VLM labeling results # VLM segmentation step seg: num_alternative_queries: 5 # Number of alternative queries to generate input_num_views: 15 # Number of views to use for segmentation # VLM critic step critic: input_num_views: 10 # Number of views of the original object to show the critic` # VLM physics sampler step phys_sampler: num_sample_mat: 1 # Number of material samples to generate from the plausible range # VLM API and model configuration api: gemini_api_key: null # Set to API key or leave null to use .env file claude_api_key: null # Set to API key or leave null to use .env file gpt_api_key: null # Set to API key or leave null to use .env file # VLM model configuration models: data_filtering: "gemini-2.5-pro-preview-03-25" # Model for data filtering segmentation: "gemini-2.0-flash" # Model for segmentation seg_critic: "gemini-2.5-pro-preview-03-25" # Model for segmentation critic phys_sampler: "gemini-1.5-flash-latest" # Model for physics sampler phys_judge: "gemini-2.0-flash" # Model for physics judging parse_critic: "gemini-2.0-flash" # Model for parse critic # Neural segmentation parameters neural: result_id: null feature_type: "clip" cache_results: false # Material dictionary material_dict_path: null # Optional: Path to material dictionary JSON file ================================================ FILE: config/training/default.yaml ================================================ # Shared configuration parameters (consistent across normalization, training, inference) enforce_mask_consistency: true background_id: 7 # Material ID for background voxels default_grid_size: 64 # Expected voxel grid size in_material_channels: 4 # Number of material property channels (density, E, nu, material_id) # Feature configuration - change this to switch between feature types feature_type: "clip" # Options: "clip", "rgb", "occupancy" target_obj_classes: null to_normalize: true num_cont_channels: 3 # density, log‑E, ν num_material_classes: 8 # K in one‑hot sample_id: 0 # data_material_channels: 11 # e.g., 8 + 3, transformed in_material_channels # to data_material_channels ## to be automatically set by `inspect_ranges.py` density_min: null density_max: null E_min: null E_max: null nu_min: null nu_max: null # Feature-specific configurations features: clip: feature_channels: 768 cond_dim: 32 rgb: feature_channels: 3 cond_dim: 32 occupancy: feature_channels: 1 cond_dim: 32 # Automatically set values based on feature_type using Hydra interpolation feature_channels: ${training.features.${training.feature_type}.feature_channels} cond_dim: ${training.features.${training.feature_type}.cond_dim} normalization: # Configuration for range computation reservoir_cap: 2000000 # Maximum samples to keep for percentile computation clip_feature_channels: 768 training: # my_config.yaml debug_base_folder: "../debug" interval: 1 first_k: null mix_precision: true batch_size: 4 lr: 1e-4 lr_decay: true lr_decay_feq: 500 lr_decay_rate: 0.998 data_worker: 4 beta1: 0.9 beta2: 0.999 optimizer_name: "Adam" # store by name, we'll reconstruct later # network resolution: 256 padding_mode: "zero" wavelet_type: "bior6.8" use_dense_conv: true use_gradient_clip: false gradient_clip_value: 1.0 use_instance_norm: true use_instance_affine: true use_layer_norm: false use_layer_affine: false train_with_gt_coeff: true # diffusion setting diffusion_step: 1000 diffusion_model_var_type: "FIXED_SMALL" diffusion_learn_sigma: false diffusion_sampler: "uniform" diffusion_model_mean_type: "EPSILON" diffusion_rescale_timestep: false diffusion_loss_type: "MSE" diffusion_beta_schedule: "linear" diffusion_scale_ratio: 1.0 unet_model_channels: 64 unet_num_res_blocks: 3 unet_channel_mult: [1, 1, 2, 4] unet_channel_mult_low: [1, 2, 2, 2] unet_activation: null attention_resolutions: [] # resume starting_epoch: 0 training_epochs: 300 special_symbol: "" network_resume_path: null optimizer_resume_path: null discriminator_resume_path: null discriminator_opt_resume_path: null exp_idx: 0 seed: 69 train_size: 0.9 # other stuff # 0‑6 objects, 7 = background ## evaluation tracking step_factor: 10 ## for diffusing de-sampling use_ddim: true evaluation_interval: 10 saving_intervals: 10 # loss weights lambda_cont: 1.0 lambda_cat: 2.0 # start here; tune if needed ## data specific stuff # ----- scaling ------------------------------------------------- # IMPORTANT: Normalization ranges are dynamically loaded from saved statistics. # You MUST run: python third_party/Wavelet-Generation/data_utils/inspect_ranges.py # to compute actual ranges from your dataset before training. # # The ranges will be loaded from: {normalization_stats_dir}/normalization_ranges.yaml # No hard-coded fallback values are provided to ensure data-driven normalization. # wandb / checkpoint resume resume_checkpoint: null resume_dir: null wandb_api_key: null # Set your wandb API key here or use WANDB_API_KEY environment variable wandb_run_id: null inference: # inference parameters CONT_EPOCH: -1 # -1 for latest checkpoint, or specific epoch number SEG_EPOCH: -1 # -1 for latest checkpoint, or specific epoch number steps_factor: 10 # Factor for faster inference use_ddim: true # Use DDIM sampler for inference batch_size: 4 data_worker: 4 use_saved_test_split: false ================================================ FILE: config/training_3d/default.yaml ================================================ # NeRF training parameters nerf: method: "f3rm" max_iterations: 5_000 disable_scene_contraction: true save_only_latest_checkpoint: false quit_on_completion: true # Gaussian Splatting training parameters gaussian_splatting: max_iterations: 10_000 # Direct specification of GS training iterations ================================================ FILE: config/voxelization/default.yaml ================================================ # Voxel grid parameters grid_size: 64 voxel_size: null # Auto-calculated as 1.0 / grid_size gray_threshold: 0.05 # Scene bounds for voxelization (in world coordinates) # These bounds define the 3D volume where voxels will be generated scene_bounds: x_bound: [-0.5, 0.5] # [min_x, max_x] y_bound: [-0.5, 0.5] # [min_y, max_y] z_bound: [-0.5, 0.5] # [min_z, max_z] # Processing parameters (optional overrides) batch_size: 4096 # Number of voxels to process at once alpha_weighted: true # Whether to weight features by alpha (density) alpha_threshold_for_mask: 0.01 # Threshold for occupancy mask generation ================================================ FILE: data_curation/cat_dict.json ================================================ { "tree": [ "tree", "ficus", "fern", "oak tree", "pine tree", "evergreen", "palm tree", "maple tree", "bonsai tree" ], "flowers": [ "flower", "bouquet", "rose", "tulip", "daisy", "lily", "sunflower", "orchid", "flower arrangement", "flowering plant", "garden flowers", "wildflowers", "floral" ], "bread": [ "bread", "loaf", "baguette", "bagel", "croissant", "roll", "sourdough", "toast", "pastry", "wheat bread", "rye bread", "french bread", "bread slice" ], "water-like_bodies": [ "lake", "pond", "ocean", "pool", "puddle", "river", "stream", "waterfall", "fountain", "water surface", "liquid water", "water body" ], "pillows": [ "pillow", "cushion", "throw pillow", "sofa cushion", "bed pillow", "neck pillow", "decorative pillow", "floor cushion", "bolster" ], "rubber_ducks_and_toys": [ "rubber duck", "bath toy", "rubber toy", "toy duck", "squeaky toy", "floating toy", "plastic duck", "children's bath toy", "yellow duck toy", "rubber animal toy" ], "soda_cans": [ "soda can", "aluminum can", "beverage can", "cola can", "soft drink can", "metal can", "canned drink", "pop can", "fizzy drink can" ], "sport_balls": [ "basketball", "soccer ball", "football", "tennis ball", "baseball", "volleyball", "golf ball", "rugby ball", "ping pong ball", "cricket ball", "bowling ball", "beach ball", "sports ball" ], "jello_block": [ "jello", "gelatin", "jello cube", "jello block", "jelly dessert", "gelatin block", "wobbly dessert", "jello mold", "colorful jello" ], "sand": [ "sand", "beach sand", "desert sand", "sandy terrain", "sand pile", "sand dune", "sandpit", "sand box", "sand texture", "grainy sand" ], "shrubs": [ "shrub", "bush", "hedge", "ornamental bush", "garden shrub", "boxwood", "flowering bush", "evergreen shrub", "decorative plant", "landscaping shrub" ], "rocks": [ "rock", "stone", "boulder", "pebble", "granite", "slate", "fieldstone", "natural stone", "rock formation", "rubble", "geological formation" ], "metal_crates": [ "metal crate", "steel box", "metal container", "shipping crate", "metal storage box", "industrial container", "metal chest", "storage crate", "metallic box" ], "barrels": [ "barrel", "wooden barrel", "metal barrel", "oil drum", "wine barrel", "storage barrel", "keg", "cask", "cylindrical container", "drum container" ], "plastic_bottles": [ "plastic bottle", "water bottle", "soda bottle", "beverage bottle", "empty bottle", "plastic container", "drink bottle", "PET bottle", "recyclable bottle" ], "statues": [ "statue", "sculpture", "monument", "figurine", "bust", "stone figure", "bronze statue", "marble sculpture", "decorative statue", "human figure statue", "animal statue", "garden statue" ], "couches": [ "couch", "sofa", "loveseat", "sectional sofa", "chesterfield", "settee", "divan", "living room couch", "upholstered sofa", "furniture couch" ], "chairs": [ "chair", "armchair", "office chair", "dining chair", "rocking chair", "stool", "folding chair", "desk chair", "lounge chair", "ergonomic chair", "accent chair" ], "grass": [ "grass", "lawn", "turf", "grassland", "meadow", "grassy field", "green grass", "grass patch", "tall grass", "wild grass", "pasture" ], "cars": [ "car", "automobile", "vehicle", "sedan", "hatchback", "SUV", "sports car", "coupe", "convertible", "passenger car", "motor vehicle" ], "lamps": [ "lamp", "desk lamp", "table lamp", "floor lamp", "reading lamp", "bedside lamp", "standing lamp", "task lamp", "decorative lamp", "light fixture", "lighting" ], "fruit": [ "fruit", "apple", "orange", "banana", "pear", "grape", "melon", "watermelon", "cantaloupe", "honeydew", "strawberry", "blueberry", "raspberry", "blackberry", "lemon", "lime", "kiwi", "mango", "pineapple", "peach", "plum", "nectarine", "apricot", "cherry", "grapefruit", "tangerine", "clementine", "pomegranate", "dragon fruit", "fig", "avocado", "papaya", "coconut", "guava", "passion fruit", "persimmon", "fruit bowl", "fruit basket", "citrus", "berries", "tropical fruit", "fresh fruit" ], "snow_and_mud": [ "snow", "mud", "snowy ground", "muddy ground", "wet mud", "fresh snow", "packed snow", "snowy terrain", "muddy terrain", "snow patch", "mud puddle", "snowdrift", "muddy path", "snowy surface", "muddy surface", "slush", "wet snow", "dirty snow", "muddy water", "snowy landscape" ] } ================================================ FILE: data_curation/download_objaverse.py ================================================ import multiprocessing import objaverse import subprocess import glob import pickle import os import hydra from omegaconf import DictConfig import logging from pixie.utils import resolve_paths, load_pickle, set_logger @hydra.main(version_base=None, config_path="../config", config_name="config") def main(cfg: DictConfig) -> None: """Download Objaverse objects by category using Hydra configuration.""" # Set up logging set_logger() # Resolve paths and system-specific settings cfg = resolve_paths(cfg) # Set the number of processes for downloading processes = cfg.data_curation.download.processes if processes is None: processes = multiprocessing.cpu_count() # Get download configuration download_cfg = cfg.data_curation.download final_dataset = load_pickle(cfg.paths.final_dataset_path) logging.info("Available categories: %s", list(final_dataset.keys())) # Determine which categories to download categories_to_download = list(final_dataset.keys()) if download_cfg.obj_class: assert download_cfg.obj_class in final_dataset, \ f"Category '{download_cfg.obj_class}' not found in dataset. Available categories: {list(final_dataset.keys())}" categories_to_download = [download_cfg.obj_class] # For each category you want to download for category in categories_to_download: logging.info("Processing category: %s", category) # Get UIDs for this category category_uids = final_dataset.get(category, []) if not category_uids: logging.warning("No objects found for category: %s", category) continue # Limit the number of UIDs if needed max_objs = download_cfg.max_objs_per_class if max_objs is not None: category_uids = category_uids[:max_objs] logging.info(f"Limiting {category} to {max_objs} objects (from {len(final_dataset[category])} total)") logging.info(f"Downloading {len(category_uids)} objects for category {category}") # Download the limited set of objects objects = objaverse.load_objects( uids=category_uids, download_processes=min(processes, len(category_uids)), ) logging.info("Downloaded %d objects for category %s", len(category_uids), category) if __name__ == "__main__": main() ================================================ FILE: data_curation/manual_data_filtering_correction.py ================================================ import streamlit as st import json import os import glob import math from PIL import Image import io import hydra from omegaconf import DictConfig import logging from pixie.utils import resolve_paths, load_json, save_json, set_logger # Configuration constants COLUMNS_PER_ROW = 12 # Keep the original number of columns # Set page configuration for wider layout st.set_page_config(layout="wide") # Custom CSS to make checkboxes smaller and images larger st.markdown(""" """, unsafe_allow_html=True) def find_image_path(obj_id, render_base_dir, save_folder): """ Given an object ID like "flowers/1d419eb4c9d34fc1a7f1e88d6ea8d55a/", return a .png path if found in render directory. """ # 1) Direct guess: "class_render_outputs/flowers/1d419e.../000.png" expected_path = os.path.join(render_base_dir, save_folder, obj_id, "000.png") if os.path.exists(expected_path): return expected_path # 2) Try the first PNG in that folder obj_dir = os.path.join(render_base_dir, save_folder, obj_id) if os.path.exists(obj_dir): png_files = glob.glob(f"{obj_dir}/*.png") if png_files: return png_files[0] # 3) Fallback: walk the entire directory for root, dirs, files in os.walk(os.path.join(render_base_dir, save_folder)): for file in files: if file.endswith(".png") and obj_id.replace("/", os.sep) in root: return os.path.join(root, file) return None def display_image_grid(items, flip_label, flip_prefix, render_base_dir, save_folder): """ Display a grid of images with checkboxes in a more efficient layout """ # Calculate how many rows we need based on the number of items n_rows = math.ceil(len(items) / COLUMNS_PER_ROW) for row_idx in range(n_rows): # Create a row with the specified number of columns cols = st.columns(COLUMNS_PER_ROW, gap="small") # Get items for this row start_idx = row_idx * COLUMNS_PER_ROW end_idx = min(start_idx + COLUMNS_PER_ROW, len(items)) row_items = items[start_idx:end_idx] # Display each item in its column for col_idx, (obj_id, data) in enumerate(row_items): if col_idx < len(cols): # Make sure we have a column for this item with cols[col_idx]: img_path = find_image_path(obj_id, render_base_dir, save_folder) if img_path: # Get a truncated ID for display short_id = obj_id.split('/')[-2][:8] if '/' in obj_id else obj_id[:8] # Display the image and make it take up more space st.markdown(f'
', unsafe_allow_html=True) # Create a unique key for this image's expander expander_key = f"expander_{obj_id}" # Display the image st.image(img_path, use_container_width=True) # Add an expander for details with st.expander("Details", expanded=False): # Show object ID in a copyable code block st.markdown("**Full Object ID:**") st.code(obj_id, language="text") st.markdown("**Image Path:**") st.code(img_path, language="text") if "reason" in data: st.markdown(f"**VLM Reason:** {data['reason']}") if "error" in data: st.markdown(f"**Error:** {data['error']}") # Display a compact checkbox below the image flip_key = f"{flip_prefix}_{obj_id}" col1, col2 = st.columns([1, 5]) with col1: st.checkbox( "", key=flip_key, value=False, label_visibility="collapsed" ) with col2: st.caption(short_id) # Show truncated ID instead st.markdown('
', unsafe_allow_html=True) else: st.error(f"Image not found for {obj_id}") @hydra.main(version_base=None, config_path="../config", config_name="config") def main(cfg: DictConfig): # Set up logging set_logger() # Resolve paths cfg = resolve_paths(cfg) # Get configuration correction_cfg = cfg.data_curation.manual_correction assert correction_cfg.obj_class, "obj_class must be specified for manual correction" # Set up paths json_path = os.path.join(cfg.paths.vlm_filtering_results_dir, correction_cfg.obj_class, correction_cfg.input_file) new_json_path = os.path.join(cfg.paths.vlm_filtering_results_dir, correction_cfg.obj_class, correction_cfg.output_file) st.title("Image Filtering") if not os.path.exists(json_path): st.error(f"JSON file not found at {json_path}") return # Load the JSON: { "obj_id": {"is_appropriate": bool, ...}, ... } filtered_results = load_json(json_path) # Separate into inappropriate vs. appropriate inappropriate_items = [ (obj_id, data) for obj_id, data in filtered_results.items() if data.get("is_appropriate") == False ] appropriate_items = [ (obj_id, data) for obj_id, data in filtered_results.items() if data.get("is_appropriate") == True ] # Stats at the top col1, col2, col3 = st.columns(3) with col1: st.metric("Total Images", len(filtered_results)) with col2: st.metric("Discarded Images", len(inappropriate_items)) with col3: st.metric("Chosen Images", len(appropriate_items)) st.markdown("""

Instructions

""", unsafe_allow_html=True) # We'll use a single form so there's only one "Save Changes" button with st.form("flip_form"): # Images are now displayed directly in the form instead of in tabs # This ensures all images are visible at once and maximizes horizontal space # Discarded Images Section st.subheader(f"Discarded Images ({len(inappropriate_items)})") st.markdown("

Check boxes to flip to 'Chosen'

", unsafe_allow_html=True) display_image_grid( inappropriate_items, "", # Empty label as we're using collapsed visibility "flip_to_appropriate", cfg.paths.render_outputs_base_dir, correction_cfg.obj_class, ) st.markdown("
", unsafe_allow_html=True) # Chosen Images Section st.subheader(f"Chosen Images ({len(appropriate_items)})") st.markdown("

Check boxes to flip to 'Discarded'

", unsafe_allow_html=True) display_image_grid( appropriate_items, "", # Empty label as we're using collapsed visibility "flip_to_inappropriate", cfg.paths.render_outputs_base_dir, correction_cfg.obj_class, ) # ------------------ # Save Changes Button # ------------------ col1, col2, col3 = st.columns([1, 2, 1]) with col2: submitted = st.form_submit_button("Save Changes", use_container_width=True) if submitted: changes_made = 0 # 1) For each item in the "inappropriate" list: for obj_id, data in inappropriate_items: flip_key = f"flip_to_appropriate_{obj_id}" if st.session_state.get(flip_key, False): filtered_results[obj_id]["is_appropriate"] = True changes_made += 1 # 2) For each item in the "appropriate" list: for obj_id, data in appropriate_items: flip_key = f"flip_to_inappropriate_{obj_id}" if st.session_state.get(flip_key, False): filtered_results[obj_id]["is_appropriate"] = False changes_made += 1 print("changes_made", changes_made) # Only save if changes were made if changes_made > 0: save_json(filtered_results, new_json_path) st.success(f"Changes saved to JSON! ({changes_made} images flipped)") else: st.info("No changes were made.") if __name__ == "__main__": main() ================================================ FILE: data_curation/manual_sim_validation.py ================================================ import streamlit as st import os import math import random import hydra from omegaconf import DictConfig from pixie.utils import resolve_paths, load_json, save_json, set_logger # Set page configuration for wider layout st.set_page_config(layout="wide") # Custom CSS st.markdown(""" """, unsafe_allow_html=True) def find_video_path(obj_id, save_folder, sample_id, grid_size): """ Find the simulation video for a given object ID. Expected path: render_outputs/{obj_id}/sample_{sample_id}/gs_sim_gridsize_{grid_size}_output/output.mp4 """ expected_path = os.path.join( save_folder, obj_id, f"sample_{sample_id}", f"gs_sim_gridsize_{grid_size}_output", "output.mp4" ) if os.path.exists(expected_path): return expected_path return None def display_video_grid(items, flip_label, flip_prefix, columns_per_row, save_folder, sample_id, grid_size): """ Display a grid of videos with checkboxes """ n_rows = math.ceil(len(items) / columns_per_row) for row_idx in range(n_rows): cols = st.columns(columns_per_row, gap="small") start_idx = row_idx * columns_per_row end_idx = min(start_idx + columns_per_row, len(items)) row_items = items[start_idx:end_idx] for col_idx, (obj_id, data, _) in enumerate(row_items): if col_idx < len(cols): with cols[col_idx]: video_path = find_video_path(obj_id, save_folder, sample_id, grid_size) st.markdown(f'
', unsafe_allow_html=True) if video_path: st.video(video_path, autoplay=True, muted=True, loop=True) st.caption(f"ID: {obj_id[:8]}...") # Checkbox to flip status flip_key = f"{flip_prefix}_{obj_id}" st.checkbox(flip_label, key=flip_key) with st.expander("Details"): st.code(obj_id, language="text") st.text(f"Path: {video_path}") else: st.warning(f"Video not found for {obj_id[:8]}...") st.caption(f"ID: {obj_id}") st.markdown('
', unsafe_allow_html=True) @hydra.main(version_base=None, config_path="../config", config_name="config") def main(cfg: DictConfig): set_logger() cfg = resolve_paths(cfg) validation_cfg = cfg.data_curation.manual_sim_validation assert validation_cfg.obj_class, "obj_class must be specified for manual simulation validation" assert validation_cfg.num_samples >= -1, "num_samples must be -1 or a non-negative integer" obj_class = validation_cfg.obj_class num_samples = validation_cfg.num_samples save_folder = validation_cfg.render_outputs_dir or cfg.paths.render_outputs_dir sample_id = validation_cfg.sample_id grid_size = validation_cfg.grid_size columns_per_row = validation_cfg.columns_per_row json_path = os.path.join( cfg.paths.vlm_filtering_results_dir, obj_class, validation_cfg.input_file, ) new_json_path = os.path.join( cfg.paths.vlm_filtering_results_dir, obj_class, validation_cfg.output_file, ) st.title(f"Simulation Quality Validation: {obj_class}") if not os.path.exists(json_path): st.error(f"JSON file not found at {json_path}") return # Load data # Structure: { "obj_id": {"is_appropriate": bool, ...}, ... } all_data = load_json(json_path) # We only care about objects that were previously marked as appropriate # AND have a generated video. valid_items = [] missing_video_items = [] for tag, data in all_data.items(): if not data.get("is_appropriate"): continue obj_id = tag.split("/")[-1] video_path = find_video_path(obj_id, save_folder, sample_id, grid_size) if video_path: # Check if we already have a validation status for this object # If not, default to True (appropriate) if "is_simulation_valid" not in data: data["is_simulation_valid"] = True valid_items.append((obj_id, data, tag)) else: missing_video_items.append(obj_id) if num_samples != -1: assert num_samples >= 0, "--num_samples must be -1 or non-negative" if num_samples < len(valid_items): valid_items = random.sample(valid_items, num_samples) # Separate into valid vs invalid simulations based on current status good_sims = [(oid, d, t) for oid, d, t in valid_items if d.get("is_simulation_valid", True)] bad_sims = [(oid, d, t) for oid, d, t in valid_items if not d.get("is_simulation_valid", True)] # Stats col1, col2, col3, col4 = st.columns(4) with col1: st.metric("Total Candidates", len(valid_items)) with col2: st.metric("Good Simulations", len(good_sims)) with col3: st.metric("Bad Simulations", len(bad_sims)) with col4: st.metric("Missing Videos", len(missing_video_items)) with st.form("validation_form"): st.subheader(f"Valid Simulations ({len(good_sims)})") st.markdown("Check box to mark as **INVALID** (bad physics, artifacts, etc.)") display_video_grid( good_sims, "Mark as Invalid", "flip_to_invalid", columns_per_row, save_folder, sample_id, grid_size, ) st.markdown("---") st.subheader(f"Invalid Simulations ({len(bad_sims)})") st.markdown("Check box to mark as **VALID** (restore to dataset)") display_video_grid( bad_sims, "Mark as Valid", "flip_to_valid", columns_per_row, save_folder, sample_id, grid_size, ) st.markdown("---") submitted = st.form_submit_button("Save Validation Results", use_container_width=True) if submitted: changes = 0 # Process flips from Good -> Bad for obj_id, data, tag in good_sims: key = f"flip_to_invalid_{obj_id}" if st.session_state.get(key, False): all_data[tag]["is_simulation_valid"] = False changes += 1 # Process flips from Bad -> Good for obj_id, data, tag in bad_sims: key = f"flip_to_valid_{obj_id}" if st.session_state.get(key, False): all_data[tag]["is_simulation_valid"] = True changes += 1 if changes > 0: save_json(all_data, new_json_path) st.success(f"Saved {changes} changes to {new_json_path}") # Also update the original file to persist state? # Uncomment if you want to overwrite the input file # save_json(all_data, json_path) else: st.info("No changes made.") if __name__ == "__main__": main() ================================================ FILE: data_curation/objaverse_selection.py ================================================ import objaverse from sentence_transformers import SentenceTransformer, util import torch import pickle import json import hydra from omegaconf import DictConfig from collections import defaultdict import logging from pixie.utils import save_pickle, load_json, resolve_paths @hydra.main(version_base=None, config_path="../config", config_name="config") def main(cfg: DictConfig) -> None: """Main function to run objaverse object selection and categorization.""" # Set up logging set_logger() # Resolve paths and system-specific settings cfg = resolve_paths(cfg) uid = objaverse.load_uids() logging.info("Loading Objaverse annotations...") annotations = objaverse.load_annotations(uid) # Load category dictionary from paths config category_dict_path = cfg.paths.category_dict_path category_dict = load_json(category_dict_path) logging.info("Initializing sentence transformer model...") # Initialize model with config parameters (always use cuda when available) model = SentenceTransformer(cfg.data_curation.objaverse_selection.model.name, device="cuda") # Get object IDs and their names all_obj_ids = list(annotations.keys()) all_obj_names = [annotations[obj_id].get("name", "") for obj_id in all_obj_ids] logging.info("Encoding object descriptions...") # Encode all object descriptions using config batch size obj_embeddings = model.encode( all_obj_names, batch_size=cfg.data_curation.objaverse_selection.batch_size, convert_to_tensor=True, show_progress_bar=True ) # Dictionary: object_id -> (category, similarity_score) assignment = {} top_k = cfg.data_curation.objaverse_selection.top_k for cat_key, cat_list in category_dict.items(): # 1. Create the query text by combining subcategories cat_query = " ".join(cat_list) cat_embedding = model.encode(cat_query, convert_to_tensor=True) # 2. Similarities for all objects (shape: [N_objects]) similarities = util.cos_sim(cat_embedding, obj_embeddings)[0] # 3. Get the top-k indices and their similarity values topk = torch.topk(similarities, k=top_k) topk_indices = topk.indices topk_values = topk.values # 4. For each top-k object, see if it should be assigned (or reassigned) for i, obj_idx in enumerate(topk_indices): obj_id = all_obj_ids[obj_idx] sim_score = topk_values[i].item() # Check if this object hasn't been assigned yet OR # if this category has a higher similarity than the previous assignment if (obj_id not in assignment) or (sim_score > assignment[obj_id][1]): assignment[obj_id] = (cat_key, sim_score) # Build final_dataset = { category: [object_ids...] } final_dataset = defaultdict(list) for obj_id, (cat_key, sim_score) in assignment.items(): final_dataset[cat_key].append(obj_id) final_dataset = dict(final_dataset) # Save final dataset using paths config output path output_path = cfg.paths.final_dataset_path save_pickle(final_dataset, output_path) logging.info(f"Final dataset saved to: {output_path}") if __name__ == "__main__": main() ================================================ FILE: data_curation/render_blender.py ================================================ import argparse, sys, os, math, re import bpy from mathutils import Vector, Matrix import mathutils import numpy as np import json import random import glob import objaverse parser = argparse.ArgumentParser(description='Renders given obj file by rotation a camera around it.') parser.add_argument( '--views', type=int, default=24, help='number of views to be rendered') parser.add_argument( '--obj', type=str, help='Path to the obj file to be rendered.') parser.add_argument( '--obj_id', type=str, help='Objaverse object ID to render (alternative to --obj)') parser.add_argument( '--output', type=str, default=None, help='The path the output will be dumped to.') parser.add_argument( '--format', type=str, default='PNG', help='Format of files generated. Either PNG or OPEN_EXR') parser.add_argument( '--input_model', type=str, default='glb', help='glb is the format for objaverse, but we can use [obj,ply,glb]') parser.add_argument( '--outf_name', type=str, default=None, help='folder to put things in') parser.add_argument( '--depth', action="store_true", help='save_depth') parser.add_argument( '--normal', action="store_true", help='save_normal') parser.add_argument( '--use_model_identifier', action='store_true', help='add the name of the folder to the end of the thing.') parser.add_argument( '--add_floor', action='store_true', help='add_plain_floor') parser.add_argument( '--assets_hdri', default = None, help = "Path to a set of hdr to select randomly for illumination." ) parser.add_argument( '--resolution', type=int, default=256, help='Resolution of the images.') parser.add_argument( '--engine', type=str, default='CYCLES', help='Blender internal engine for rendering. E.g. CYCLES, BLENDER_EEVEE, ...') argv = sys.argv[sys.argv.index("--") + 1:] args = parser.parse_args(argv) # Handle obj_id if provided if args.obj_id is not None: if args.obj is not None: raise ValueError("Cannot specify both --obj and --obj_id") print(f"Loading object from Objaverse with ID: {args.obj_id}") objects = objaverse.load_objects(uids=[args.obj_id]) if not objects or args.obj_id not in objects: raise ValueError(f"Could not find object with ID: {args.obj_id}") args.obj = objects[args.obj_id] print(f"Found object path: {args.obj}") # Set up rendering context = bpy.context scene = bpy.context.scene render = bpy.context.scene.render # bpy.ops.object.delete() # bpy.ops.objects['Light'].delete() # bpy.data.objects['Light'].select_set(True) # bpy.ops.object.delete() render.engine = args.engine render.image_settings.color_mode = 'RGBA' # ('RGB', 'RGBA', ...) render.image_settings.file_format = args.format # ('PNG', 'OPEN_EXR', 'JPEG, ...) render.resolution_x = args.resolution render.resolution_y = args.resolution render.resolution_percentage = 100 bpy.context.scene.cycles.filter_width = 0.01 # bpy.context.scene.render.film_transparent = True bpy.context.scene.cycles.device = 'GPU' bpy.context.scene.cycles.diffuse_bounces = 1 bpy.context.scene.cycles.glossy_bounces = 1 bpy.context.scene.cycles.transparent_max_bounces = 3 bpy.context.scene.cycles.transmission_bounces = 3 bpy.context.scene.cycles.samples = 64 bpy.context.scene.cycles.use_denoising = True scene.world.use_nodes = True scene.view_settings.view_transform = 'Standard' scene.view_settings.look = 'None' def enable_cuda_devices(): prefs = bpy.context.preferences cprefs = prefs.addons['cycles'].preferences cprefs.get_devices() # Attempt to set GPU device types if available for compute_device_type in ('CUDA', 'OPENCL', 'NONE'): try: cprefs.compute_device_type = compute_device_type print("Compute device selected: {0}".format(compute_device_type)) break except TypeError: pass # Any CUDA/OPENCL devices? acceleratedTypes = ['CUDA', 'OPENCL'] accelerated = any(device.type in acceleratedTypes for device in cprefs.devices) print('Accelerated render = {0}'.format(accelerated)) # If we have CUDA/OPENCL devices, enable only them, otherwise enable # all devices (assumed to be CPU) print(cprefs.devices) for device in cprefs.devices: device.use = not accelerated or device.type in acceleratedTypes print('Device enabled ({type}) = {enabled}'.format(type=device.type, enabled=device.use)) return accelerated enable_cuda_devices() context.active_object.select_set(True) bpy.ops.object.delete() bpy.data.objects['Light'].select_set(True) bpy.ops.object.delete() # Import textured mesh bpy.ops.object.select_all(action='DESELECT') def bounds(obj, local=False): local_coords = obj.bound_box[:] om = obj.matrix_world if not local: worldify = lambda p: om @ Vector(p[:]) coords = [worldify(p).to_tuple() for p in local_coords] else: coords = [p[:] for p in local_coords] rotated = zip(*coords[::-1]) push_axis = [] for (axis, _list) in zip('xyz', rotated): info = lambda: None info.max = max(_list) info.min = min(_list) info.distance = info.max - info.min push_axis.append(info) import collections originals = dict(zip(['x', 'y', 'z'], push_axis)) o_details = collections.namedtuple('object_details', 'x y z') return o_details(**originals) # function from https://github.com/panmari/stanford-shapenet-renderer/blob/master/render_blender.py def get_3x4_RT_matrix_from_blender(cam): # bcam stands for blender camera # R_bcam2cv = Matrix( # ((1, 0, 0), # (0, 1, 0), # (0, 0, 1))) # Transpose since the rotation is object rotation, # and we want coordinate rotation # R_world2bcam = cam.rotation_euler.to_matrix().transposed() # T_world2bcam = -1*R_world2bcam @ location # # Use matrix_world instead to account for all constraints location, rotation = cam.matrix_world.decompose()[0:2] R_world2bcam = rotation.to_matrix().transposed() # Convert camera location to translation vector used in coordinate changes # T_world2bcam = -1*R_world2bcam @ cam.location # Use location from matrix_world to account for constraints: T_world2bcam = -1*R_world2bcam @ location # # Build the coordinate transform matrix from world to computer vision camera # R_world2cv = R_bcam2cv@R_world2bcam # T_world2cv = R_bcam2cv@T_world2bcam # put into 3x4 matrix RT = Matrix(( R_world2bcam[0][:] + (T_world2bcam[0],), R_world2bcam[1][:] + (T_world2bcam[1],), R_world2bcam[2][:] + (T_world2bcam[2],) )) return RT # imported_object = bpy.ops.import_scene.obj(filepath=args.obj, use_edges=False, use_smooth_groups=False, split_mode='OFF') if args.input_model == "glb": imported_object = bpy.ops.import_scene.gltf(filepath=args.obj) elif args.input_model == "ply": imported_object = bpy.ops.import_mesh.ply(filepath=args.obj) obj_object = bpy.context.selected_objects[0] print('Imported name:', obj_object.name) bpy.data.objects[obj_object.name].select_set(True) bpy.ops.paint.vertex_paint_toggle() #bpy.context.area.ui_type = 'ShaderNodeTree' #bpy.ops.material.new() mat = bpy.data.materials.get("Material") if len(bpy.context.active_object.data.materials) == 0: bpy.context.active_object.data.materials.append(bpy.data.materials['Material']) else: bpy.context.active_object.data.materials[0] = bpy.data.materials['Material'] if mat: mat.node_tree.nodes.new("ShaderNodeVertexColor") mat.node_tree.links.new(mat.node_tree.nodes[2].outputs['Color'], mat.node_tree.nodes[1].inputs['Base Color']) else: bpy.ops.import_scene.obj(filepath=args.obj, use_edges=False, use_smooth_groups=False, split_mode='OFF',axis_up='Z') # for this_obj in bpy.data.objects: # if this_obj.type == "MESH": # this_obj.select_set(True) # bpy.context.view_layer.objects.active = this_obj # bpy.ops.object.mode_set(mode='EDIT') # bpy.ops.mesh.split_normals() bpy.ops.object.mode_set(mode='OBJECT') print(len(bpy.context.selected_objects)) obj = bpy.context.selected_objects[0] context.view_layer.objects.active = obj # taken from https://devtalk.blender.org/t/calculating-center-point-of-all-mesh-in-scene/18095 def calcBoundingBox(mesh_objs): cornerApointsX = [] cornerApointsY = [] cornerApointsZ = [] cornerBpointsX = [] cornerBpointsY = [] cornerBpointsZ = [] for ob in mesh_objs: ob.select_set(True) bpy.context.view_layer.objects.active = ob bpy.ops.object.transform_apply(location=True, rotation=True, scale=True) bbox_corners = [ob.matrix_world @ Vector(corner) for corner in ob.bound_box] cornerApointsX.append(bbox_corners[0].x) cornerApointsY.append(bbox_corners[0].y) cornerApointsZ.append(bbox_corners[0].z) cornerBpointsX.append(bbox_corners[6].x) cornerBpointsY.append(bbox_corners[6].y) cornerBpointsZ.append(bbox_corners[6].z) minA = Vector((min(cornerApointsX), min(cornerApointsY), min(cornerApointsZ))) maxB = Vector((max(cornerBpointsX), max(cornerBpointsY), max(cornerBpointsZ))) center_point = Vector(((minA.x + maxB.x)/2, (minA.y + maxB.y)/2, (minA.z + maxB.z)/2)) dimensions = Vector((maxB.x - minA.x, maxB.y - minA.y, maxB.z - minA.z)) return center_point, dimensions mesh_objs = [obj for obj in bpy.data.objects if obj.type == 'MESH'] center_point, dimensions = calcBoundingBox(mesh_objs) print(center_point,dimensions) for obj in bpy.data.objects: if obj.type == 'MESH': while obj.parent is not None: obj = obj.parent print(obj) bpy.context.view_layer.objects.active = obj bpy.ops.object.location_clear(clear_delta=False) scale = 1/max(dimensions)*0.5 setattr(obj, 'scale', [scale,scale,scale]) setattr(obj, 'location', obj.location-(center_point*scale)) # just need to find that one parent object (coming from the mesh) break # print(dimensions) # raise() if args.add_floor: ob = bpy.ops.mesh.primitive_plane_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, -scale * dimensions[2]/2 + 0.001), scale=(1, 1, 1) ) bpy.context.view_layer.update() # scaling_value = random.uniform(1, 3) # bpy.context.object.scale = (scaling_value,scaling_value,1) # HDR LIGHT if not args.assets_hdri is None: world = bpy.data.worlds['World'] world.use_nodes = True bg = world.node_tree.nodes['Background'] node_environment = world.node_tree.nodes.new('ShaderNodeTexEnvironment') # Load and assign the image to the node property skyboxes = glob.glob(f'{args.assets_hdri}/*.hdr') skybox_random_selection = skyboxes[random.randint(0,len(skyboxes)-1)] node_environment.image = bpy.data.images.load(skybox_random_selection) # Relative path # node_environment.location = -300,0 world.node_tree.links.new(node_environment.outputs["Color"], bg.inputs["Color"]) else: # bg.inputs[0].default_value[:3] = (1, 1, 1) # bg.inputs[1].default_value = 1.0 # # add a light above the object bpy.ops.object.light_add(type='AREA') light2 = bpy.data.lights['Area'] light2.energy = 30000 bpy.data.objects['Area'].location[1] = -1 bpy.data.objects['Area'].scale[0] = 100 bpy.data.objects['Area'].scale[1] = 100 bpy.data.objects['Area'].scale[2] = 100 world = bpy.data.worlds['World'] world.use_nodes = True bg_node = world.node_tree.nodes['Background'] bg_node.inputs[0].default_value = (1.0, 1.0, 1.0, 1.0) # Pure white bg_node.inputs[1].default_value = 1.0 # Full strength # Place camera cam = scene.objects['Camera'] cam.location = (0, 1.2, 0) # radius equals to 1 cam.data.lens = 35 cam.data.sensor_width = 32 cam_constraint = cam.constraints.new(type='TRACK_TO') cam_constraint.track_axis = 'TRACK_NEGATIVE_Z' cam_constraint.up_axis = 'UP_Y' cam_empty = bpy.data.objects.new("Empty", None) cam_empty.location = (0, 0, 0) cam.parent = cam_empty scene.collection.objects.link(cam_empty) context.view_layer.objects.active = cam_empty cam_constraint.target = cam_empty # Function taken from https://github.com/zhenpeiyang/HM3D-ABO/blob/master/my_blender.py def get_3x4_RT_matrix_from_blender(cam): # bcam stands for blender camera # R_bcam2cv = Matrix( # ((1, 0, 0), # (0, 1, 0), # (0, 0, 1))) # Transpose since the rotation is object rotation, # and we want coordinate rotation # R_world2bcam = cam.rotation_euler.to_matrix().transposed() # T_world2bcam = -1*R_world2bcam @ location # # Use matrix_world instead to account for all constraints location, rotation = cam.matrix_world.decompose()[0:2] R_world2bcam = rotation.to_matrix().transposed() # Convert camera location to translation vector used in coordinate changes # T_world2bcam = -1*R_world2bcam @ cam.location # Use location from matrix_world to account for constraints: T_world2bcam = -1*R_world2bcam @ location # # Build the coordinate transform matrix from world to computer vision camera # R_world2cv = R_bcam2cv@R_world2bcam # T_world2cv = R_bcam2cv@T_world2bcam # put into 3x4 matrix RT = mathutils.Matrix(( R_world2bcam[0][:] + (T_world2bcam[0],), R_world2bcam[1][:] + (T_world2bcam[1],), R_world2bcam[2][:] + (T_world2bcam[2],) )) return RT # Function taken from https://github.com/zhenpeiyang/HM3D-ABO/blob/master/my_blender.py def get_calibration_matrix_K_from_blender(camd): f_in_mm = camd.lens scene = bpy.context.scene resolution_x_in_px = scene.render.resolution_x resolution_y_in_px = scene.render.resolution_y scale = scene.render.resolution_percentage / 100 sensor_width_in_mm = camd.sensor_width sensor_height_in_mm = camd.sensor_height pixel_aspect_ratio = scene.render.pixel_aspect_x / scene.render.pixel_aspect_y if (camd.sensor_fit == 'VERTICAL'): # the sensor height is fixed (sensor fit is horizontal), # the sensor width is effectively changed with the pixel aspect ratio s_u = resolution_x_in_px * scale / sensor_width_in_mm / pixel_aspect_ratio s_v = resolution_y_in_px * scale / sensor_height_in_mm else: # 'HORIZONTAL' and 'AUTO' # the sensor width is fixed (sensor fit is horizontal), # the sensor height is effectively changed with the pixel aspect ratio pixel_aspect_ratio = scene.render.pixel_aspect_x / scene.render.pixel_aspect_y s_u = resolution_x_in_px * scale / sensor_width_in_mm s_v = resolution_y_in_px * scale * pixel_aspect_ratio / sensor_height_in_mm # Parameters of intrinsic calibration matrix K alpha_u = f_in_mm * s_u alpha_v = f_in_mm * s_v u_0 = resolution_x_in_px * scale / 2 v_0 = resolution_y_in_px * scale / 2 skew = 0 # only use rectangular pixels K = mathutils.Matrix( ((alpha_u, skew, u_0), ( 0 , alpha_v, v_0), ( 0 , 0, 1 ))) return K # function taken from https://blender.stackexchange.com/questions/5210/pointing-the-camera-in-a-particular-direction-programmatically def look_at(obj, target, roll=0): """ Rotate obj to look at target :arg obj: the object to be rotated. Usually the camera :arg target: the location (3-tuple or Vector) to be looked at :arg roll: The angle of rotation about the axis from obj to target in radians. Based on: https://blender.stackexchange.com/a/5220/12947 (ideasman42) """ if not isinstance(target, mathutils.Vector): target = mathutils.Vector(target) loc = obj.location # direction points from the object to the target direction = target - loc tracker, rotator = (('-Z', 'Y'),'Z') if obj.type=='CAMERA' else (('X', 'Z'),'Y') #because new cameras points down(-Z), usually meshes point (-Y) quat = direction.to_track_quat(*tracker) # /usr/share/blender/scripts/addons/add_advanced_objects_menu/arrange_on_curve.py quat = quat.to_matrix().to_4x4() rollMatrix = mathutils.Matrix.Rotation(roll, 4, rotator) # remember the current location, since assigning to obj.matrix_world changes it loc = loc.to_tuple() #obj.matrix_world = quat * rollMatrix # in blender 2.8 and above @ is used to multiply matrices # using * still works but results in unexpected behaviour! obj.matrix_world = quat @ rollMatrix obj.location = loc def sphere_renders( nb_planes, nb_circle, elevation_range = [0,180], tetha_range = [0,360] ): positions_to_render = [] for i_plane in range(nb_planes): elevation = np.deg2rad( elevation_range[0] + \ ((i_plane+1) * (elevation_range[1]-elevation_range[0])/(nb_planes+1))) for i_circle in range(nb_circle): azimuth = np.deg2rad(tetha_range[0]+((i_circle+1) * (tetha_range[1]-tetha_range[0])/(nb_circle+1))) eye_position = [ np.sin(elevation)*np.cos(azimuth), np.sin(elevation)*np.sin(azimuth), np.cos(elevation), ] positions_to_render.append(eye_position) return positions_to_render def random_sample_sphere( elevation_range = [0,180], tetha_range = [0,360], nb_frames = 10, ): to_return = [] outside = True max_radius = 1.00001 min_radius = 0.99999 min_max_x = [0,0] min_max_y = [0,0] min_max_z = [0,0] for i_degree in range(tetha_range[0],tetha_range[1],1): v = np.cos(np.deg2rad(i_degree)) if v < min_max_x[0]: min_max_x[0] = v if v > min_max_x[1]: min_max_x[1] = v for i_degree in range(tetha_range[0],tetha_range[1],1): v = np.sin(np.deg2rad(i_degree)) if v < min_max_y[0]: min_max_y[0] = v if v > min_max_y[1]: min_max_y[1] = v for i_degree in range(elevation_range[0],elevation_range[1],1): v = np.cos(np.deg2rad(i_degree)) if v < min_max_z[0]: min_max_z[0] = v if v > min_max_z[1]: min_max_z[1] = v for i in range(nb_frames): outside = True while outside: x = random.uniform(min_max_x[0], min_max_x[1]) y = random.uniform(min_max_y[0], min_max_y[1]) z = random.uniform(min_max_z[0], min_max_z[1]) if (x**2 + y**2 + z**2) * max_radius < max_radius + 0.0001 \ and (x**2 + y**2 + z**2) * max_radius > min_radius: outside = False to_return.append([x,y,z]) return to_return positions = sphere_renders( nb_planes = 1, nb_circle = args.views, elevation_range = [55,65], tetha_range = [0,359] ) # positions = random_sample_sphere( # elevation_range = [2,188], # tetha_range = [0,360], # nb_frames = args.views, # ) # bpy.context.scene.render.filepath = f'{path}/{000}.png' # bpy.ops.render.render(write_still = True) obj_camera = bpy.data.objects["Camera"] look_at_pos = mathutils.Vector((0,0,0)) # print(bpy.data.cameras[0].angle_x) bpy.data.cameras[0].angle_x = 0.6911112070083618 bpy.context.scene.render.resolution_x = args.resolution bpy.context.scene.render.resolution_y = args.resolution K = get_calibration_matrix_K_from_blender(bpy.data.cameras[0]) if args.use_model_identifier: model_identifier = os.path.split(os.path.split(args.obj)[0])[1] path = os.path.join(os.path.abspath(args.output), model_identifier) else: path = os.path.abspath(args.output) if not args.outf_name is None: path = os.path.join(os.path.abspath(args.output), args.outf_name) to_export = { # 'fx': K[0][0], # 'fy': K[1][1], # 'cx': K[0][-1], # 'cy': K[1][-1], 'camera_angle_x': bpy.data.cameras[0].angle_x, "aabb": [ [ 0.5, 0.5, 0.5 ], [ -0.5, -0.5, -0.5 ] ], } frames = [] # add the depth if needed if args.depth: bpy.context.scene.use_nodes = True tree = bpy.context.scene.node_tree links = tree.links for n in tree.nodes: tree.nodes.remove(n) bpy.context.scene.render.image_settings.use_zbuffer=True bpy.context.view_layer.use_pass_z=True # Create input render layer node. render_layers = tree.nodes.new('CompositorNodeRLayers') depth_file_output = tree.nodes.new(type="CompositorNodeOutputFile") depth_file_output.label = 'Depth Output' links.new(render_layers.outputs['Depth'], depth_file_output.inputs[0]) depth_file_output.format.file_format = "OPEN_EXR" depth_file_output.base_path = '' node_viewer = tree.nodes.new('CompositorNodeViewer') node_viewer.use_alpha = False links.new(render_layers.outputs['Image'], node_viewer.inputs[0]) if args.normal: if not args.depth: bpy.context.scene.use_nodes = True tree = bpy.context.scene.node_tree links = tree.links for n in tree.nodes: tree.nodes.remove(n) # Create input render layer node. render_layers = tree.nodes.new('CompositorNodeRLayers') bpy.context.view_layer.use_pass_normal=True bpy.context.view_layer.cycles.denoising_store_passes=True normal_file_output = tree.nodes.new(type="CompositorNodeOutputFile") normal_file_output.label = 'Normal Output' links.new(render_layers.outputs['Denoising Normal'], normal_file_output.inputs[0]) normal_file_output.format.file_format = "OPEN_EXR" normal_file_output.base_path = '' # bpy.ops.wm.save_as_mainfile(filepath=f'{path}/scene.blend') # Check if PNG files already exist and skip rendering if they do existing_png_files = glob.glob(f'{path}/*.png') if existing_png_files: print(f"PNG files already exist in {path}, skipping rendering") # Still need to create transforms.json with the expected frames for i_pos in range(len(positions)): to_add = { "file_path": f'{str(i_pos).zfill(3)}.png', "transform_matrix": [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] # Identity matrix as placeholder } frames.append(to_add) to_export['frames'] = frames with open(f'{path}/transforms.json', 'w') as f: json.dump(to_export, f, indent=4) sys.exit(0) for i_pos, pos in enumerate(positions): obj_camera.location = ( (pos[0])+look_at_pos[0], (pos[1])+look_at_pos[1], (pos[2])+look_at_pos[2] ) # print(obj_camera.location) # look_at(obj_camera,mathutils.Vector((0,0,0))) look_at(obj_camera,look_at_pos) bpy.context.view_layer.update() rt = get_3x4_RT_matrix_from_blender(obj_camera) pos, rt, scale = obj_camera.matrix_world.decompose() rt = rt.to_matrix() matrix = [] for i in range(3): a = [] for j in range(3): a.append(rt[i][j]) a.append(pos[i]) matrix.append(a) matrix.append([0,0,0,1]) # print(matrix) # print(obj_camera.matrix_world.decompose()) # raise() # matrix[0][-1]=obj_camera.location[0] # matrix[1][-1]=obj_camera.location[1] # matrix[2][-1]=obj_camera.location[2] # print(matrix) to_add = {\ "file_path":f'{str(i_pos).zfill(3)}.png', "transform_matrix":matrix } frames.append(to_add) if args.depth: depth_file_output.file_slots[0].path = f'{path}/{str(i_pos).zfill(3)}_depth' if args.normal: normal_file_output.file_slots[0].path = f'{path}/{str(i_pos).zfill(3)}_normal' bpy.context.scene.render.filepath = f'{path}/{str(i_pos).zfill(3)}.png' bpy.ops.render.render(write_still = True) print(f"Saved the image to {path}/{str(i_pos).zfill(3)}.png") if args.depth: os.rename(f'{path}/{str(i_pos).zfill(3)}_depth{str(bpy.data.scenes[0].frame_current).zfill(4)}.exr', f'{path}/{str(i_pos).zfill(3)}_depth.exr') if args.normal: os.rename(f'{path}/{str(i_pos).zfill(3)}_normal{str(bpy.data.scenes[0].frame_current).zfill(4)}.exr', f'{path}/{str(i_pos).zfill(3)}_normal.exr') # raise() # time.sleep(10) # break to_export['frames'] = frames with open(f'{path}/transforms.json', 'w') as f: json.dump(to_export, f,indent=4) ================================================ FILE: data_curation/render_objaverse_classes.py ================================================ import os import glob from concurrent.futures import ProcessPoolExecutor from tqdm import tqdm import hydra from omegaconf import DictConfig import logging import objaverse from pixie.utils import resolve_paths, load_pickle, run_cmd, set_logger def render_object(args): """Render a single object.""" uid, output_dir, gpu_id, blender_cmd, resolution, views = args os.environ['CUDA_VISIBLE_DEVICES'] = str(gpu_id) # Skip if already rendered if glob.glob(f"{output_dir}/*.png"): return True os.makedirs(output_dir, exist_ok=True) # Use --obj_id instead of --obj with path cmd = f'{blender_cmd} -b -P data_curation/render_blender.py -- --obj_id {uid} --output {output_dir} --views {views} --resolution {resolution}' return run_cmd(cmd, step_name=f"Render {uid}") @hydra.main(version_base=None, config_path="../config", config_name="config") def main(cfg: DictConfig) -> None: set_logger() cfg = resolve_paths(cfg) # Load config render_cfg = cfg.data_curation.rendering dataset = load_pickle(cfg.paths.final_dataset_path) # Get categories to render categories = [render_cfg.obj_class] if render_cfg.obj_class else list(dataset.keys()) assert not render_cfg.obj_class or render_cfg.obj_class in dataset, \ f"Category {render_cfg.obj_class} not found" # Prepare render jobs render_jobs = [] for category in categories: uids = dataset[category][:render_cfg.max_objs_per_class] for i, uid in enumerate(uids): output_dir = os.path.join(cfg.paths.render_outputs_base_dir, category, uid).rstrip('/') gpu_id = i % render_cfg.num_gpus render_jobs.append((uid, output_dir, gpu_id, cfg.paths.blender_path, render_cfg.resolution, render_cfg.views)) # Render in parallel logging.info(f"Rendering {len(render_jobs)} objects") with ProcessPoolExecutor(max_workers=render_cfg.num_gpus * render_cfg.jobs_per_gpu) as executor: futures = [executor.submit(render_object, job) for job in render_jobs] results = [] for future in tqdm(futures, total=len(futures)): try: result = future.result(timeout=render_cfg.timeout) results.append(result) except TimeoutError: logging.warning(f"Render job timed out after {render_cfg.timeout} seconds") results.append(False) logging.info(f"Rendered {sum(results)}/{len(render_jobs)} successfully") if __name__ == "__main__": main() ================================================ FILE: data_readme.md ================================================ # PixieVerse Data README This file documents the dataset directory rooted at `paths.base_path` (Hydra config). By default, `paths.base_path` resolves to the current working directory when unset. ## Hugging Face - Dataset (PixieVerse): [https://huggingface.co/datasets/vlongle/pixieverse](https://huggingface.co/datasets/vlongle/pixieverse) - Models/checkpoints: [https://huggingface.co/datasets/vlongle/pixie](https://huggingface.co/datasets/vlongle/pixie) Download PixieVerse archives: ```bash python scripts/download_data.py \ --dataset-repo vlongle/pixieverse \ --dirs archives \ --local-dir /path/to/pixieverse_root ``` Download only one class archive for testing: ```bash python scripts/download_data.py \ --dataset-repo vlongle/pixieverse \ --dirs archives \ --obj-class tree \ --local-dir /path/to/pixieverse_root ``` Unpack into the standard folder layout: ```bash ROOT=/path/to/pixieverse_root set -euo pipefail for d in data outputs render_outputs vlm_seg_results vlm_seg_critic_results vlm_seg_mat_sample_results; do src="$ROOT/archives/$d" dst="$ROOT/$d" mkdir -p "$dst" [ -d "$src" ] || { echo "[skip] $src not found"; continue; } echo "[dir] $d" for a in "$src"/*.tar "$src"/*.tar.gz; do [ -e "$a" ] || continue echo " -> extracting $(basename "$a")" tar -xf "$a" -C "$dst" --checkpoint=2000 --checkpoint-action=echo=" ... extracted 2000 more entries" echo " <- done $(basename "$a")" done done ``` ## Top-level folders - `data` - `outputs` - `render_outputs` - `vlm_seg_results` - `vlm_seg_critic_results` - `vlm_seg_mat_sample_results` ## How data is generated Class-level launcher: ```bash python generate_slurm_vlm_job.py \ --obj_ids_json vlm_data_filtering_results//all_results_corrected.json \ --obj_class \ --overwrite_sim \ --overwrite_vlm \ --submit \ --gray_threshold 0.05 \ --qos ee-high \ --partition eaton-compute ``` Per-object pipeline: ```bash python run_seg.py \ --obj_id \ --obj_class \ --num_alternative_queries 5 \ --num_sample_mat 1 \ --gray_threshold 0.05 ``` ## Folder details ### `data/` Per-object image data and assets used by reconstruction/training. ```text data/ / train/ 0001.png ... ``` ### `outputs/` Intermediate reconstruction/training outputs (organized by object/method/run). ```text outputs/ / / / ... ``` ### `render_outputs/` Final per-object simulation/render artifacts used for curation and validation. Simulation folder naming: - Current: `gs_sim_gridsize__output` - Old: `gs_sim_gridsize__neurips_paper_output` (migrated to new naming) ```text render_outputs/ / sample_0/ gs_sim_gridsize_64_output/ output.mp4 output.gif ... ``` ### `vlm_seg_results/` Raw VLM segmentation stage results per object. ### `vlm_seg_critic_results/` VLM critic outputs that evaluate segmentation candidates. ### `vlm_seg_mat_sample_results/` Material/physics parameter sampling outputs (often per object and sample index). ```text vlm_seg_mat_sample_results/ / sample_0/ chosen_vlm_results.json ... ``` ## Manual validation ```bash streamlit run data_curation/manual_sim_validation.py data_curation.manual_sim_validation.obj_class= ``` The validator uses class-level JSON under `vlm_data_filtering_results//` and reads videos from: `render_outputs//sample_*/gs_sim_gridsize__output/` ## Hugging Face dataset card The Hugging Face dataset README (`README.md`) should mirror this file (`data_readme.md`). ## Citation If you find this dataset useful, please consider citing: ```bibtex @article{le2025pixie, title={Pixie: Fast and Generalizable Supervised Learning of 3D Physics from Pixels}, author={Le, Long and Lucas, Ryan and Wang, Chen and Chen, Chuhao and Jayaraman, Dinesh and Eaton, Eric and Liu, Lingjie}, journal={arXiv preprint arXiv:2508.17437}, year={2025} } ``` ================================================ FILE: docs/Cochin_Bold/readme.html ================================================ Cochin BoldFontsgeek

Cochin Bold

This font was downloaded from fontsgeek.com . You can visit fontsgeek.com for thousands of free fonts.

View Charmap and other information Browse other free fonts

You will be shortly redirected to fontsgeek.

================================================ FILE: nbs/pixie.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "8743506e", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "id": "ac95f1bc", "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "import os\n", "\n", "cwd = Path.cwd() \n", "if cwd.name == \"nbs\": \n", " ROOT = cwd.parent.resolve() \n", "else:\n", " ROOT = cwd \n", "os.chdir(ROOT)" ] }, { "cell_type": "code", "execution_count": 3, "id": "6896389a", "metadata": {}, "outputs": [], "source": [ "from pixie.viz_utils import *\n", "import trimesh\n", "from pixie.utils import *\n", "from IPython.display import Image, Video\n", "from ipywidgets import Output, GridspecLayout\n", "from IPython import display" ] }, { "cell_type": "code", "execution_count": 4, "id": "291c0e0c", "metadata": {}, "outputs": [], "source": [ "obj_id = \"f420ea9edb914e1b9b7adebbacecc7d8\"" ] }, { "cell_type": "markdown", "id": "d79cede2", "metadata": {}, "source": [ "## Training" ] }, { "cell_type": "code", "execution_count": 5, "id": "f6236a5c", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[32mINFO \u001b[0m \u001b[34mCreated directories:\n", "{\n", " \"data_dir\": \"/home/vlongle/code/pixie/data/f420ea9edb914e1b9b7adebbacecc7d8\",\n", " \"nerf_output\": \"/home/vlongle/code/pixie/models/f420ea9edb914e1b9b7adebbacecc7d8/f3rm\",\n", " \"gs_output\": \"/home/vlongle/code/pixie/models/f420ea9edb914e1b9b7adebbacecc7d8/gs\",\n", " \"render_output\": \"/home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8\",\n", " \"vlm_base_dir\": \"/home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results/f420ea9edb914e1b9b7adebbacecc7d8\",\n", " \"physgaussian_output\": \"/home/vlongle/code/pixie/mpm_sim_outputs/vlm/f420ea9edb914e1b9b7adebbacecc7d8\",\n", " \"blender_output\": \"/home/vlongle/code/pixie/blender_outputs/f420ea9edb914e1b9b7adebbacecc7d8\",\n", " \"blend_file_path\": \"pixie/blender/empty_scene.blend\",\n", " \"blender_gs_addon_path\": \"/home/vlongle/code/pixie/blender-addon.zip\"\n", "}\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mDownloading object with UID: f420ea9edb914e1b9b7adebbacecc7d8\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSuccessfully downloaded object: f420ea9edb914e1b9b7adebbacecc7d8\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSuccessfully prepared NeRF dataset for data directory: /home/vlongle/code/pixie/data/f420ea9edb914e1b9b7adebbacecc7d8\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mNeRF training completed. Config path: /home/vlongle/code/pixie/models/f420ea9edb914e1b9b7adebbacecc7d8/f3rm/2025-08-02_220348/config.yml. Time taken: 0.00 seconds\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mGaussian Splatting training completed. Model path: /home/vlongle/code/pixie/models/f420ea9edb914e1b9b7adebbacecc7d8/gs\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSkipping voxelization because it already exists at /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRunning VLM segmentation...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mVLM segmentation results already exist at /home/vlongle/code/pixie/vlm_results/vlm_seg_results/f420ea9edb914e1b9b7adebbacecc7d8/vlm_results.json\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRunning VLM visualization of segmentation candidates...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mVLM visualization files already exist\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRunning VLM segmentation critic...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] VLM_SEG_CRITIC | python pixie/vlm_labeler/vlm_seg_critic.py --obj_id f420ea9edb914e1b9b7adebbacecc7d8 --data_dir /home/vlongle/code/pixie/data --vlm_seg_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_results --vlm_seg_critic_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_critic_results --input_num_views 10 --overwrite False --model_name gemini-2.5-pro-preview-03-25 --api_key AIzaSyBbF9p3WVLsh1fjEdZRLPP0vaOBHpVyaMQ\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mFound query folders: ['query_2', 'query_1', 'query_3', 'query_4', 'query_0']\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mVLM model name: gemini-2.5-pro-preview-03-25\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSetting up VLM's model gemini-2.5-pro-preview-03-25 with API key AIzaSyBbF9p3WVLsh1fjEdZRLPP0vaOBHpVyaMQ\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSegmentationCriticAgent: Prediction already exists at /home/vlongle/code/pixie/vlm_results/vlm_seg_critic_results/f420ea9edb914e1b9b7adebbacecc7d8/vlm_critic_results.json. Skipping generation.\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mBest query: query_2\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mScore: 10/10\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mFull evaluation results saved to /home/vlongle/code/pixie/vlm_results/vlm_seg_critic_results/f420ea9edb914e1b9b7adebbacecc7d8/vlm_critic_results.json\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: genai.GenerativeModel(\n", " model_name='models/gemini-2.5-pro-preview-03-25',\n", " generation_config={},\n", " safety_settings={},\n", " tools=None,\n", " system_instruction='\\nYou are a segmentation quality critic. Your task is to evaluate the quality of segmentation results produced by a CLIP-based segmentation model.\\n\\nYou will be shown:\\n1. A set of original RGB images of a 3D object from different views\\n2. Segmentation results for different part queries\\n\\nYour job is to:\\n1. Evaluate each segmentation query based on how well it separates the object into meaningful parts\\n2. Score each query on a scale of 1-10 (10 being perfect)\\n3. Provide reasoning for your scores\\n4. Suggest improvements to the queries if needed\\n\\nConsider the following factors in your evaluation:\\n- Does the segmentation properly separate the object into distinct, semantically meaningful parts?\\n- Are the boundaries of the segments accurate and clean?\\n- Is any important part of the object missed or incorrectly segmented?\\n- IMPORTANT: note that our imperfect CLIP segmentation model is heavily dependent on the choice of part queries. Thus,\\neven if a query might not be semantically correct, as long as it is useful for separating the object into distinct parts,\\nyou should score it high.\\n- Bad queries would result in bad segmentation that are noisy or different parts are not correctly and/or clearly separated.\\n\\nYour output should be a JSON in the following format:\\n\\n```json\\n{\\n \"query_evaluations\": {\\n \"query_0\": {\\n \"score\": 8,\\n \"reasoning\": \"This query effectively separates the object into functionally distinct parts. The boundaries are clean and consistent across different views.\"\\n },\\n \"query_1\": {\\n \"score\": 3,\\n \"reasoning\": \"This query fails to distinguish important parts of the object, making it unsuitable for physical property assignment.\"\\n },\\n ...\\n },\\n \"best_query\": \"query_1\",\\n \"suggested_improvements\": \"Consider using more specific terms like \\'ceramic pot\\' instead of just \\'pot\\' to improve segmentation boundaries.\"\\n}\\n```\\nwhere `query_{i}` is the i-th query in the \"all_queries\" list.\\n\\nBe detailed in your reasoning and make concrete suggestions for improvements.\\n',\n", " cached_content=None\n", ")\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] Successfully completed step: VLM_SEG_CRITIC\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSaved vlm_seg_critic configuration: /home/vlongle/code/pixie/vlm_results/vlm_seg_critic_results/f420ea9edb914e1b9b7adebbacecc7d8/vlm_seg_critic_config.yaml\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRunning VLM physics sampler...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] VLM_PHYS_SAMPLER | python pixie/vlm_labeler/vlm_phys_sampler.py --obj_id f420ea9edb914e1b9b7adebbacecc7d8 --vlm_seg_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_results --vlm_seg_mat_sample_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results --overwrite False --num_sample_mat 1 --model_name gemini-1.5-flash-latest --api_key AIzaSyBbF9p3WVLsh1fjEdZRLPP0vaOBHpVyaMQ\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSetting seed 0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m>> Sampling material for f420ea9edb914e1b9b7adebbacecc7d8 sample 0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mVLM model name: gemini-1.5-flash-latest\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSetting up VLM's model gemini-1.5-flash-latest with API key AIzaSyBbF9p3WVLsh1fjEdZRLPP0vaOBHpVyaMQ\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mMathSamplerAgent: Prediction already exists at /home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/vlm_results.json. Skipping generation.\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mGenerated material sample 0 for f420ea9edb914e1b9b7adebbacecc7d8\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: genai.GenerativeModel(\n", " model_name='models/gemini-1.5-flash-latest',\n", " generation_config={},\n", " safety_settings={},\n", " tools=None,\n", " system_instruction='...',\n", " cached_content=None\n", ")\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] Successfully completed step: VLM_PHYS_SAMPLER\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSaved vlm_phys_sampler configuration: /home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results/f420ea9edb914e1b9b7adebbacecc7d8/vlm_phys_sampler_config.yaml\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRunning VLM parse segmentation critic...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] VLM_PARSE_SEG_CRITIC | python pixie/vlm_labeler/vlm_parse_seg_critic.py --obj_id f420ea9edb914e1b9b7adebbacecc7d8 --vlm_seg_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_results --vlm_seg_critic_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_critic_results --vlm_seg_mat_sample_results_dir /home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results --model_name gemini-2.0-flash --api_key AIzaSyBbF9p3WVLsh1fjEdZRLPP0vaOBHpVyaMQ\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSetting seed 0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m>> BEST_QUERY: ['brown pot', 'brown trunk', 'green leaves']\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m>> NUM_SAMPLE_MAT: 1\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mUpdated material sample 0 with best query\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] Successfully completed step: VLM_PARSE_SEG_CRITIC\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSaved vlm_parse_seg_critic configuration: /home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results/f420ea9edb914e1b9b7adebbacecc7d8/vlm_parse_seg_critic_config.yaml\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mUsing configured sample: /home/vlongle/code/pixie/vlm_results/vlm_seg_mat_sample_results/f420ea9edb914e1b9b7adebbacecc7d8/sample_0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mProcessing material sample sample_0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mCopied material dictionary to /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/material_dict.json\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] SEGMENTATION_sample_0 | python pixie/voxel/segmentation.py --grid_feature_path /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/clip_features.npz --occupancy_path /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/clip_features_pc.ply --output_dir /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0 --material_dict_path /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/material_dict.json --use_spatial_smoothing False --overwrite True --background_id 7\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mLoaded material properties from /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/material_dict.json\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mLoading feature grid from /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/clip_features.npz...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mBounds: min=[-0.5 -0.5 -0.5], max=[0.5 0.5 0.5]\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mLoading features from /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/clip_features_features.npy...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mCreating coordinate grid from metadata and applying occupancy mask...\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSelected 19598 voxels from mask\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mfeatures_filtered: torch.Size([19598, 768])\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mPart 0 (brown pot): 10584 voxels\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mPart 1 (brown trunk): 5573 voxels\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mPart 2 (green leaves): 3441 voxels\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mPart labels saved to /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/part_labels.npy\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m>>> LOADING ORIGINAL RGB\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m>>> CREATING SEMANTIC COLORS\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mApplied material properties for brown pot: {'density': 1774.4067519636624, 'E': 414556.8099117258, 'nu': 0.2602763376071644, 'material_id': 6}\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mApplied material properties for brown trunk: {'density': 563.4649548990691, 'E': 184730.95986778094, 'nu': 0.3645894113066656, 'material_id': 0}\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mApplied material properties for green leaves: {'density': 287.5174422525385, 'E': 46753.19002346239, 'nu': 0.39636627605010294, 'material_id': 0}\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRGB point cloud saved to /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/segmented_rgb.ply\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[SEGMENTATION] Statistics:\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mmaterial_id: (array([0, 6], dtype=int32), array([ 9014, 10584]))\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mpart_labels: (array([0, 1, 2]), array([10584, 5573, 3441]))\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mdensity: 1168.989501953125\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mE: 284623.5625\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mnu: 0.31383395195007324\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mSemantic point cloud saved to /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/segmented_semantics.ply\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m>>> CREATING MATERIAL GRID\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mGrid shape: [64 64 64]\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mMaterial grid saved to /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/material_grid.npy\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mIndividual material property grids saved to /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] Successfully completed step: SEGMENTATION_sample_0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34mRunning simulation for sample sample_0\u001b[0m\n", "\u001b[32mINFO \u001b[0m \u001b[34m[RUN] PHYS_SIM_sample_0 | cd third_party/PhysGaussian && xvfb-run -a python gs_simulation.py --model_path /home/vlongle/code/pixie/models/f420ea9edb914e1b9b7adebbacecc7d8/gs --point_cloud_path /home/vlongle/code/pixie/render_outputs/f420ea9edb914e1b9b7adebbacecc7d8/sample_0/segmented_semantics.ply --output_path /home/vlongle/code/pixie/mpm_sim_outputs/vlm/f420ea9edb914e1b9b7adebbacecc7d8/sample_0 --config config/pixie/custom_tree_config.json --render_img --compile_video --debug --white_bg\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[Taichi] version 1.5.0, llvm 15.0.4, commit 7b885c28, linux, python 3.10.18\n", "Warp 0.10.1 initialized:\n", " CUDA Toolkit: 11.5, Driver: 12.5\n", " Devices:\n", " \"cpu\" | x86_64\n", " \"cuda:0\" | NVIDIA RTX A6000 (sm_86)\n", " \"cuda:1\" | NVIDIA GeForce RTX 3080 (sm_86)\n", " \"cuda:2\" | NVIDIA GeForce RTX 3080 (sm_86)\n", " Kernel cache: /home/vlongle/.cache/warp/0.10.1\n", "[Taichi] Starting on arch=cuda\n", "Loading scene config...\n", "Loading gaussians...\n", "LOADING PLY FILE\n", "xyz.shape: (482596, 3)\n", "opacities.shape: (482596, 1)\n", "features_dc.shape: (482596, 3, 1)\n", "features_extra.shape: (482596, 3, 15)\n", "scales.shape: (482596, 3)\n", "rots.shape: (482596, 4)\n", "loaded from /home/vlongle/code/pixie/models/f420ea9edb914e1b9b7adebbacecc7d8/gs\n", "Initializing scene and pre-processing...\n", "Filtered 355536 particles based on opacity.\n", "Initializing MPM solver...\n", "Module warp_utils load on device 'cuda:0' took 2.10 ms\n", "Particles initialized from torch data.\n", "Total particles: 355536\n", "Setting material to jelly\n", "Material ID: 0\n", "Module mpm_utils load on device 'cuda:0' took 145.51 ms\n", "conf_values (19598,)\n", "conf_values [1. 1. 1. ... 1. 1. 1.]\n", "Material field data (19598 particles) doesn't match MPM solver (355536 particles). Performing K-NN smoothing interpolation (K=10).\n", "\n", "Material Field Point Cloud Bounds:\n", "X: [-0.4206, 0.4365]\n", "Y: [-0.3571, 0.3730]\n", "Z: [-0.5000, 0.5000]\n", "\n", "MPM Particles Bounds:\n", "X: [-0.4259, 0.4260]\n", "Y: [-0.3784, 0.3743]\n", "Z: [-0.5319, 0.4992]\n", "\n", "Visualization saved to material_field_debug\n", "Number of particles too far from nearest neighbor: 0\n", "Number of assigned particles: 355536\n", "smoothing with k_smoothing_neighbors: 10\n", "K-NN smoothing interpolation complete. Average distance to *closest* material point: 0.010543\n", "Number of particles assigned default properties due to distance: 0\n", "FIX_GROUND: True\n", "Adding ground boundary condition...\n", "Ground BC - Position ranges: X:[0.5869, 1.4131], Y:[0.6350, 1.3650], Min Z:0.5000\n", "Created ground boundary condition at [1.0, 1.0, 0.525] with size [0.9131218194961548, 0.8650487661361694, 0.025]\n", ">>> stationary_mask: [ True False False ... True False True] Number of stationary particles: 50790 material_ids: (array([0, 6], dtype=int32), array([304746, 50790]))\n", ">>> cluster_sizes: {0: 50650}\n", ">> MIN_XYZ: [0.66372025 0.7490158 0.52988005] max_xyz: [1.3379831 1.2077754 0.7513428]\n", ">>> Created cuboid BC for cluster 0 at [1.0008516311645508, 0.9783955812454224, 0.6406114101409912] with size [0.43713143467903137, 0.32937976717948914, 0.2107313573360443] this cluster has 50650 points\n", "Created cuboid BC for the largest stationary cluster.\n", "Material IDs: (array([0, 6], dtype=int32), array([304746, 50790])) \n", "Simulating Frames: 0%| | 0/125 [00:00" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(f\"{paths['render_output']}/rgb_renders/test/rgb/0001.jpg\")" ] }, { "cell_type": "markdown", "id": "979bb9d4", "metadata": {}, "source": [ "Verify the voxel grid is correct" ] }, { "cell_type": "code", "execution_count": 9, "id": "4b560919", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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qBkzZow5fPiwAUxmZqYJCQkxs2fPNsYY89Of/tR07tzZdO3a1bhcLnPDDTeYhx56yISHh5vf/e53JiUlxZSUlBhjjJk0aVK9n9MaKBQasGvXLgOYr776ytr28ccfG5vNZg4fPnzBx27ZssWkpKSYoqKiqyoUvk2bz/Tuu+8al8tl3G53U5T5rWRnZ5tHHnnE+trr9Zrk5GTrA322e++919x+++31tuXk5JipU6c2aZ1XUmPbfDaPx2PCwsLMokWLmqrEK+5y2uzxeEy/fv3MwoULL/jHeunSpSYwMNC8+OKLBjCjRo0ykZGRpri42BhjTI8ePUxSUpK1/5w5c4zL5TJvvfWWad++vfnjH/9oioqKTGVlZasMBXUfNeDsybCA897Wfra6ybAWLFhAYmJic5R6xVxum8/WWm/lr62tZdOmTQwbNszaZrfbGTZsGOvWrTvvY9atW1dvf4Dhw4c3uH9rczltPltVVRVut5vo6OimKvOKutw2P/PMM8THx1+0W2fs2LHMnTuXF154AYBdu3axYsUKEhISACgtLa333v/tb39LbW0tEyZMoKCggAceeICkpCTCw8P5wx/+wPLly3E6nezbt+/bNPuKaV2f2lbkzMmw6jidznNuaz9b3WRYo0aNauoSr7jLbfOZjh07xi9+8YtWeSv/sWPH8Hq91oe3TkJCwjlz3dQpLi4+7/6X+vtoaZfT5rM98cQTJCcnnxOOrdXltPnLL7/k9ddfZ+vWrZf0M6ZPn8706dPJyckhOzubnJwcAHw+H06nk2nTpln77t+/H4Camhry8vLqPc+TTz5JZWUlL730Eu3bt7/EFjatay4ULuW29t27d1/Wc9dNhrVly5bLenxTaco2n6miooLbb7+dHj168PTTT3/r55OWN2fOHJYuXcrnn39uTe7W1lRWVjJhwgRee+01YmNjG/XYGTNmMGnSJG6++Ways7OZN28ep06d4qGHHgJg4sSJpKSkMHv2bIKCgujZs2e9x0dGRgKcs70lXXOh0NjJsM7k8Xg4fvx4g91CK1euZN++fdYLXWf06NEMHDiQzz///FtUfvmass11KisrGTFiBGFhYSxbtoyAgIBvW/YVd+aY8zMdOXKkwfYlJiY2av/W5nLaXGfu3LnMmTOHv//979x4441NWeYV1dg279u3j/3793PnnXda2+puQHM6nezdu5dOnTqd92eNHTuWkpISfv7zn1NcXExmZma9rqSDBw9it19lvfQtfVGjtaq76Lpx40Zr2yeffHLBi65FRUUmNze33j/AvPTSS+Zf//pXc5V+2S6nzcYYU15ebvr06WMGDx5sTp061RylXrbs7Gwzffp062uv12tSUlIueKH5jjvuqLetb9++V92F5sa02RhjnnvuORMeHm7WrVvXHCVecY1pc3V19Tmf21GjRpmhQ4ea3Nxcc/r06eYsvcUpFC5gxIgR5qabbjIbNmwwX375penSpUu94ZmHDh0y3bp1Mxs2bGjwObiKRh8Z0/g2l5eXm5ycHJORkWHy8vJMUVGR9c/j8bRUMxpUN3LkzTffNLt27TJTpkypN3JkwoQJZtasWdb+a9asMU6n08ydO9fs3r3bPPXUU1flkNTGtLlutMz7779f7/WsrKxsqSY0WmPbfLbWOCqouSgULqC0tNSMGzfOtGvXzoSHh5uHHnqo3gcjPz/fAGbVqlUNPsfVFgqNbfOqVasMcN5/+fn5LdOIizhzzHl2drZZv3699b3BgwebSZMm1dv/3XffrTfm/K9//WszV/ztNabNHTp0OO/r+dRTTzV/4d9CY1/nM13LoaBZUkVExHKVXQEREZGmpFAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCwKBRERsSgURETEolAQERGLQkFERCz/H0II0w8BAE6uAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "voxel_path = f\"{paths['render_output']}/clip_features_pc.ply\"\n", "pc = trimesh.load(voxel_path)\n", "viz(pc.vertices, pc.colors)" ] }, { "cell_type": "code", "execution_count": 10, "id": "aa66708e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'segmentation': {'material_dict': {'pot': {'density': [1500, 2000],\n", " 'E': [200000.0, 500000.0],\n", " 'nu': [0.2, 0.3],\n", " 'material_id': 6},\n", " 'trunk': {'density': [400, 700],\n", " 'E': [100000.0, 300000.0],\n", " 'nu': [0.3, 0.4],\n", " 'material_id': 0},\n", " 'leaves': {'density': [200, 400],\n", " 'E': [20000.0, 50000.0],\n", " 'nu': [0.3, 0.4],\n", " 'material_id': 0}},\n", " 'reasoning': 'The pot is made of a dense, stiff material and is stationary. The trunk and leaves are made of a less dense, more flexible material, allowing them to sway. The leaves are less dense and flexible than the trunk.',\n", " 'constraints': 'assert material_dict[\"leaves\"][\"density\"] < material_dict[\"trunk\"][\"density\"] < material_dict[\"pot\"][\"density\"], \"The density of the leaves should be less than the trunk and the pot\"\\nassert material_dict[\"leaves\"][\"E\"] < material_dict[\"trunk\"][\"E\"] < material_dict[\"pot\"][\"E\"], \"The stiffness of the leaves should be less than the trunk and the pot\"',\n", " 'all_queries': [['pot', 'trunk', 'leaves'],\n", " ['bonsai pot', 'bonsai trunk', 'bonsai leaves'],\n", " ['brown pot', 'brown trunk', 'green leaves'],\n", " ['ceramic pot', 'tree trunk', 'foliage'],\n", " ['base', 'branch', 'leaf']]},\n", " 'seg_critic': None,\n", " 'phys_sampler': None,\n", " 'parse_seg_critic': None,\n", " 'chosen_results': {'material_dict': {'brown pot': {'density': 1774.4067519636624,\n", " 'E': 414556.8099117258,\n", " 'nu': 0.2602763376071644,\n", " 'material_id': 6},\n", " 'brown trunk': {'density': 563.4649548990691,\n", " 'E': 184730.95986778094,\n", " 'nu': 0.3645894113066656,\n", " 'material_id': 0},\n", " 'green leaves': {'density': 287.5174422525385,\n", " 'E': 46753.19002346239,\n", " 'nu': 0.39636627605010294,\n", " 'material_id': 0}},\n", " 'sampling_attempts': 1,\n", " 'all_queries': [['brown pot', 'brown trunk', 'green leaves']]}}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_vlm_results(cfg)" ] }, { "cell_type": "code", "execution_count": 11, "id": "4948e513", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Video(f\"{paths['physgaussian_output']}/sample_{cfg.physics.sample_id}/frames/output.mp4\",\n", "embed=True)" ] }, { "cell_type": "code", "execution_count": 12, "id": "e30734f6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'part_label': memmap([2, 2, 2, ..., 2, 2, 2], dtype=int32),\n", " 'E': array([10.752638, 10.752638, 10.752638, ..., 10.752638, 10.752638,\n", " 10.752638], dtype=float32),\n", " 'density': array([5.6612835, 5.6612835, 5.6612835, ..., 5.6612835, 5.6612835,\n", " 5.6612835], dtype=float32),\n", " 'nu': memmap([0.39636627, 0.39636627, 0.39636627, ..., 0.39636627, 0.39636627,\n", " 0.39636627], dtype=float32),\n", " 'material_id': memmap([0, 0, 0, ..., 0, 0, 0], dtype=int32)}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_path = get_material_segmentation_path(cfg, paths['render_output'], paths)\n", "pred_pc, pred_feats = load_semantic_ply(pred_path)\n", "pred_feats" ] }, { "cell_type": "code", "execution_count": 13, "id": "e7a51082", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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59Xu27ePffv2+a39unDy5EkOHDjQ2N2owC+//OLX9keMGMGCBQuYMmWKJwzYHW7Zmm+W60pjabi8g0dRFL/Pz28quYDKc/b0mabArl272LVrl9/aLy0t5ejRoxw9etRzIXr06FHCwsKkfquhR48ejBs3jsmTJ7NgwQLsdjvTpk3jhhtu8FR1ysjIYNSoUXzwwQcMHDiQAwcOsGjRIi699FLatGnDtm3b+Nvf/saIESP8kutDIgFA+HCB7UP1tpaE1K+k2eCLft12teDTTz9l+vTpLFiwgLS0NObPn8/YsWPZu3dvpQ/WIiMj+fvf/0737t0xGo3897//ZdKkScTExDB27FgAnnvuOV5++WXef/99kpKSmDFjBmPHjmXXrl31Xj1XaljSbPDDGPy3v/2NIUOG8Mwzz3Ddddexfv16rwI3AI8++igZGRl88MEHgGuK4sSJE3nppZdIS0vz5K4LCAjwJOJ/4IEHuPzyy0lMTOT48ePMnDkTnU7HjTfe6HPf/BZTevPNN7Nz506WLVvGf//7X3755Rev+cdVMXnyZDIzMz3Lc8895/Mx3VFMOp0OVVVZv369rPjXiggICOCtt97yWte+fXvCwsIoKiqqYi9JVTS0hsvnflJVlY0bN0r9tiICAgJYtGgRb775pmddhw4dpH594OOPP6Z79+6MGjWKSy+9lGHDhnldYNjtdvbu3esp0mI0Gvnpp58YM2YM3bt35/777+fqq6/mm2++aayPIGkNaApoag1L63NmS/1KmgU+6bf2Gn7xxReZPHkykyZNomfPnixYsIDAwEDeeeedSu1HjhzJVVddRY8ePejcuTP33nsvffv29SROF0Iwf/58Hn/8ca688kr69u3LBx98wPHjx/nqq6/O9VuoFKlhSbPAD2Pw+eefz5dffsknn3xC7969mT17NvPnz+fmm2/22GRmZnL06FHP+4ULF+JwOLj77rtp27atZ7n33ns9Nunp6dx4440kJydz3XXX0aZNG3777TefoivdKMIPd5G7d++mZ8+ebNiwwVNSdenSpVx66aWkp6d7PNtnM3LkSFJTU5k/f77Px3I6nRw7doykpCT++OMPdu7cydChQ9HpdH65QT58+DAnT54kNTUVg6Hq6oONxbZt24iNjSU2Nraxu1KB3Nxc9uzZQ0pKit9KtAshKCoqwm63M3v2bE9Y86233oqq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 5,\n", " subplot_kw={'projection': '3d'},\n", " figsize=(15, 4)\n", ")\n", "viz(pred_pc, pred_feats['part_label'], discrete=True, ax=ax[0])\n", "viz(pred_pc, pred_feats['material_id'], discrete=True, ax=ax[1])\n", "viz(pred_pc, pred_feats['E'], ax=ax[2])\n", "viz(pred_pc, pred_feats['nu'], ax=ax[3])\n", "viz(pred_pc, pred_feats['density'], ax=ax[4])" ] }, { "cell_type": "code", "execution_count": 14, "id": "4b8b54c7", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b4ac4020f672497ea88d58ca825b261b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "GridspecLayout(children=(Output(layout=Layout(grid_area='widget001')), Output(layout=Layout(grid_area='widget0…" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blender_output_dir = paths['blender_output']\n", "filepaths = [\n", "os.path.join(blender_output_dir, feature, f\"{feature}.mp4\")\n", "for feature in ['part_label', 'material_id', 'E', 'density', 'nu']\n", "]\n", "\n", "grid = GridspecLayout(1, len(filepaths))\n", "\n", "for i, filepath in enumerate(filepaths):\n", " out = Output()\n", " with out:\n", " display.display(display.Video(filepath, embed=True,))\n", " grid[0, i] = out\n", "grid\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "b55cc138", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Video(f\"{blender_output_dir}/gs_renders/output.mp4\", embed=True)" ] } ], "metadata": { "kernelspec": { "display_name": "pixie_release", "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.18" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: nbs/real_scene.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "e8182c7d", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "id": "3a406cbd", "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "import os\n", "\n", "cwd = Path.cwd() \n", "if cwd.name == \"nbs\": \n", " ROOT = cwd.parent.resolve() \n", "else:\n", " ROOT = cwd \n", "os.chdir(ROOT)" ] }, { "cell_type": "code", "execution_count": 3, "id": "d37ca9ff", "metadata": {}, "outputs": [], "source": [ "from pixie.viz_utils import *\n", "import trimesh\n", "from pixie.utils import *\n", "from IPython.display import Image, Video\n", "from ipywidgets import Output, GridspecLayout\n", "from IPython import display\n", "from pixie.utils import _find_latest_inference_dir" ] }, { "cell_type": "code", "execution_count": 4, "id": "8249824d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:Real data must use `disable_scene_contraction=True` and `USE_COLMAP_DATAPARSER`. Setting this automatically.\n", "WARNING:root:Real data must use `disable_scene_contraction=True` and `USE_COLMAP_DATAPARSER`. Setting this automatically.\n" ] }, { "data": { "text/plain": [ "{'data_dir': 'real_scene_data/bonsai',\n", " 'nerf_output': '/home/vlongle/code/pixie-dev/models/bonsai/f3rm',\n", " 'gs_output': '/home/vlongle/code/pixie-dev/models/bonsai/gs',\n", " 'render_output': 'real_scene_render_outputs/bonsai',\n", " 'neural_base_dir': '/home/vlongle/code/pixie-dev/inference_combined_mse_clip_results/20250826_121144/bonsai',\n", " 'physgaussian_output': '/home/vlongle/code/pixie-dev/mpm_sim_outputs/neural/bonsai',\n", " 'blender_output': '/home/vlongle/code/pixie-dev/blender_outputs/bonsai',\n", " 'blend_file_path': 'pixie/blender/empty_scene.blend',\n", " 'blender_gs_addon_path': '/home/vlongle/code/pixie/blender-addon.zip'}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "\n", "cfg = load_config()\n", "\n", "obj_id = \"bonsai\" ## [bonsai, bouquet, vasedeck]\n", "\n", "\n", "cfg.obj_id = obj_id\n", "cfg.material_mode = \"neural\" #[vlm, neural]\n", "cfg.paths.data_dir = \"real_scene_data\"\n", "cfg.paths.render_outputs_dir = \"real_scene_render_outputs\"\n", "cfg.is_objaverse_object = False\n", "cfg = resolve_paths(cfg)\n", "paths = get_output_paths(cfg, cfg.obj_id)\n", "cfg.segmentation.neural.result_id = _find_latest_inference_dir(cfg)\n", "\n", "## resolve paths again\n", "cfg = resolve_paths(cfg)\n", "paths = get_output_paths(cfg, cfg.obj_id)\n", "paths" ] }, { "cell_type": "code", "execution_count": 5, "id": "ace82902", "metadata": {}, "outputs": [ { "data": { "image/png": "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ceNGTj31VJ544ontVrmuWrWKPn368PLLLzNu3Ljdvkb7lNQ1a9aQmZnJ+++/L1NNhfh/ZHdTV7+KXUkdM/3vpenTp3PllVdy6qmnBovX7rvvvuB+27ZZuXIl8fj2OzRNmzaNsrIyxo4du8fXaE8Azc3N6LrOoEGD9mmLv6amJm688UbGjx/P8OHDd7unbEeglGLChAmce+65wXqMju7mm2/mtNNOY/To0Yc7lL1y2223ccIJJ3Daaacd7lD2KJlMcs8993DMMcdw9tkHphzJwbRp0yamT59OdnY23//+9/fqMUopFi9eDPjnlKlTp3L11Vdz4403fiW7kr7ULYVDYf369XTr1u1whyGEOMS+iq0EkKSwR57nUVlZ+YX6FpVSX6p+yS9bvOLg+7J9Jg5EvF/F8QSQpCCEEGIbHXNlihBCiMNCkoIQQoiAJAUhhBABSQpCCCECkhSEEGI36uvrueiii8jOziY3N5crrriClpaW3T7m4Ycf5uSTTyY7OxtN02hoaDg0wR4AkhSEEGI3LrroIpYuXcobb7zBiy++yOzZs/nRj36028fE43HGjRvHL3/5y0MU5YEjSUEIIXbhV7/6Fa+++irLly/n6quvxrIs7r//fmbMmEFlZeUOx//jH/+gb9++TJw4kenTpx+GiL84SQpCCLETf//737nrrruIRqNUVFQwaNAgTj/9dAYOHBhs5rWtuXPnMn78eK644goqKio455xz9qs0/+Emi9eEEGInRowYgaZpbNmyhZUrV+J5Hl27duWqq67id7/7Hbfffjs/+clPguMvvPBCWltbefHFF4Pb+vXrx/Lly9myZQu5ubmH4V3sO2kpCCG+ciZOnIimabv9KS8v324nP13XKSsr44477mDTpk3cfffdfPDBB8H98+bNY8yYMcG/ly5dSmtrKwB5eXlMnTr1kL2/L+JLXSVVCCH2x54286qtrWX06NF069aNl156CfC7k8rLy+natSvr1q2jd+/enH766axcuZLi4mKqq6spKSkJniMej1NYWMi6deu2u72jk6QghPjK2dNmXu3VUQcMGBBs5vW73/2OgQMHEo/HUUoxbdo0RowYwbRp05g4ceIOzzFs2DBOOukkFi5c2OFL5m9Luo+EEOJzCgsLMQyDaDTKuHHjuOKKKygvLwdgw4YNfOc736GsrIyysjJuv/12dF1HKRV0J1VXV7No0aJglz3btnnllVcYOXIkeXl55OXlMWbMmO26nzoKSQpCCPE5lmVx7LHHMnPmTKZPn0737t1xXZeKigr69u3Lww8/HHQnFRUVoZSiqKiIBx54gNraWh588EGGDBkSDDpXV1fz+uuv07t3b2bNmsW8efPo2rUrY8eOZePGjYf53X6OEkIIsYMZM2aocDisHn/8cfX2228rQMViMVVdXa2UUqqgoECVlJSo4cOHK6WUmjNnjgLUmWeeqZYvX65uvfVWFQqF1OLFi9URRxyh7r333u2e33EclZWVpf7yl78c6re2WzKmIIQQO3HhhReyadMmbrnlFqqqqgB/MVtJSQmpVIrNmzdTWlpKaWkpACeeeCKjRo3inXfeYdCgQfTu3Zvnn3+eY445ZqfPH4/HsW2b/Pz8Q/ae9oZ0Hx1g+1onpb6+nquuuoqjjjqKaDRKt27duPrqq2lsbOywMcOhre3ywAMP0L17dyKRCCNGjNhjP2z7qtJIJMKAAQN4+eWXD1psu7IvMS9dupTzzjuP7t27o2naYZu6uC8xP/LII5x00kmHtX98X+J99tlnGTp0KLm5uWRmZjJ48GD++te/7vE1rrzySj777DNSqRTDhw9n/fr1ANTV1QHgOA4jR44Mjh8xYgT9+/cnmUyyZMkSzjzzzF0+9y9+8Qs6d+683TTWDuFwN1X+vxk3bpwaNGiQev/999WcOXNUr1691Pjx43d5/OLFi9V//dd/qRdeeEGtWrVKzZw5U/Xu3Vudd955HTZmpZS699571aRJk9SkSZMUoLZs2XJQYpsxY4ayLEtNmzZNLV26VP3whz9Uubm5qqamZqfHv/fee8owDHX33XerZcuWqZtvvjlowh8q+xrzBx98oK6//nr11FNPqdLS0h26GQ6FfY35u9/9rnrggQdURUWFWr58ubrssstUTk6O2rBhQ4eMd9asWerZZ59Vy5YtU6tWrVJTp05VhmGoV199dZ9ec3fdSRdffLEaMWJE0J2UTCZVRUWFqqioUJ06dVLXX3+9qqioUJ988omaNGmSysvLUx999NEX/2McYJIUDqBly5YpQC1YsCC47ZVXXlGapqmNGzfu9fM8/fTTyrIsZdv2wQhzO1805lmzZh3UpDB8+HD105/+NPi367qqc+fOatKkSTs9/oILLlBnnXXWdreNGDFC/fjHPz4o8e3Mvsa8rZ31PR8KXyRmpQ59//gXjVcppYYMGaJuvvnmfXrd+++/X3Xr1k2FQiEFqMmTJwf3jR49WvXs2VOdffbZSiml1qxZo4Adfnr06KFycnK2+851JNJ9dADNmzeP3Nxchg4dGtw2ZsyYndZJ2Z3Gxkays7MxzYM/5HOgYj4YUqkU5eXl2zWvdV1nzJgxzJs3b6eP+fyqUoDTTz99l8cfaPsT8+F2IGI+lP3jXzRepRQzZ85k5cqVjBo1ap9ee1fdSQBvvfUWiUQi6E7q3r07yr/wDn4mT55MXV0dr7766nbfuY5EBpoPoOrqaoqLi7e7zTRN8vPzqa6u3qvnqKur484779xjad4D5UDEfLDU1dXhuu4Oq0FLSkpYsWLFTh/z+VWl7ccfqveyPzEfbgci5kPZP76/8TY2NtKlSxeSySSGYfDHP/6R0047bb/jmDBhApdeeilDhw5l+PDhTJ06ldbWVi6//HIALrnkErp06cKkSZMAmDx5MrfccgtPPvkk3bt3Dz6TsViMWCy233EcaNJS2At7UyflQHzhm5qaOOuss+jXrx+33XbblyJmIe666y5mzJjBc889RyQSOdzh7FJWVhaLFi1iwYIF/O///i8TJkzg7bff3u/nu/DCC5kyZQq33HILgwcPZtGiRbz66qtBslq3bl0wawngT3/6E6lUivPPP59OnToFP1OmTPmib+2AkpbCXthTnRSAHj16UFpaSm1t7Xa3O45DfX19MG1tV5qbmxk3bhxZWVk899xzhEKhDh/zwda+qrSmpma722tqanYZW2lp6T4df6DtT8yH2xeJecqUKdx11128+eabDBw48GCGGdjfeHVdDwrcDR48mOXLlzNp0iROPvnk/Y7lyiuv5Morr9zpfZ9POGvXrt3v1zmUpKWwF4qKiujbt+9ufyzLYuTIkUGdlHZvvfUWnucxYsSIXT5/U1MTY8eOxbIsXnjhhQNytXWwYz4Utl1V2s7zPGbOnLndNMBtjRw5crvjAd54441dHn+g7U/Mh9v+xnz33Xdz5513HvL+8QP1N/Y8j2QyeTBC/HI7rMPc/w+NGzdODRkyRM2fP1+9++67qnfv3ttN79ywYYM66qij1Pz585VSSjU2NqoRI0aoAQMGqFWrVqmqqqrgx3GcDhmzUhBgM+UAAAL+SURBVEpVVVWpiooK9cgjjyhAzZ49W1VUVKjNmzcf0Ni2nQa4bNky9aMf/Ujl5uZuNw1w4sSJwfHvvfeeMk1TTZkyZYdVpYfKvsa8u6mLHTXmu+66S1mWpZ555pntPrPNzc0dMt7f/OY36vXXX1erV69Wy5YtU1OmTFGmaapHHnnkkMT7ZSJJ4QDbvHmzGj9+vIrFYio7O1tdfvnl231R2qepzZo1Sym1dUrnzn7WrFnTIWNWSqlbb711pzE/9thjBzy+9mmAlmWp4cOHq/fffz+4b/To0erSSy/d7vinn35a9enTR1mWpfr3769eeumlAx7TnuxLzLuaujh69OgOG/MRRxyx05hvvfXWDhnvTTfdpHr16qUikYjKy8tTI0eOVDNmzDhksX6ZyM5rQgghAjKmIIQQIiBJQQghRECSghBCiIAkBSGEEAFJCkIIIQKSFIQQQgQkKQghhAhIUhBCCBGQpCCEECIgSUEIIURAkoIQQoiAJAUhhBABSQpCCCECkhSEEEIEJCkIIYQISFIQQggRkKQghBAiIElBCCFEQJKCEEKIgCQFIYQQAUkKQgghApIUhBBCBCQpCCGECEhSEEIIEZCkIIQQIiBJQQghRECSghBCiIAkBSGEEAFJCkIIIQKSFIQQQgQkKQghhAhIUhBCCBGQpCCEECIgSUEIIURAkoIQQoiAJAUhhBABSQpCCCECkhSEEEIEJCkIIYQISFIQQggRkKQghBAiIElBCCFEQJKCEEKIgCQFIYQQAUkKQgghApIUhBBCBCQpCCGECEhSEEIIEZCkIIQQIiBJQQghRECSghBCiIAkBSGEEAFJCkIIIQKSFIQQQgQkKQghhAhIUhBCCBGQpCCEECIgSUEIIURAkoIQQoiAJAUhhBABSQpCCCECkhSEEEIEJCkIIYQISFIQQggRkKQghBAiIElBCCFEQJKCEEKIgCQFIYQQAUkKQgghApIUhBBCBCQpCCGECEhSEEIIEZCkIIQQIiBJQQghRECSghBCiMD/AUGqrfj1AxYwAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pc = trimesh.load(f\"{paths['render_output']}/clip_features_pc.ply\")\n", "viz(pc.vertices, pc.colors);" ] }, { "cell_type": "code", "execution_count": 6, "id": "0c5cdeef", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'part_label': memmap([6, 6, 6, ..., 6, 6, 6], dtype=int32),\n", " 'E': array([15.351016 , 15.304461 , 14.87731 , ..., 15.8357725, 15.787883 ,\n", " 14.490429 ], dtype=float32),\n", " 'density': array([6.4753 , 6.3867593, 6.258811 , ..., 6.5176353, 6.552531 ,\n", " 6.4386277], dtype=float32),\n", " 'nu': memmap([0.32326677, 0.3304015 , 0.33524716, ..., 0.31787965, 0.31019688,\n", " 0.32906172], dtype=float32),\n", " 'material_id': memmap([6, 6, 6, ..., 6, 6, 6], dtype=int32)}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_path = get_material_segmentation_path(cfg, paths['render_output'], paths)\n", "pred_pc, pred_feats = load_semantic_ply(pred_path)\n", "pred_feats" ] }, { "cell_type": "code", "execution_count": 7, "id": "6ba1434a", "metadata": {}, "outputs": [], "source": [ "config = load_json(join_path(\n", " \"third_party/PhysGaussian\",\n", " get_physics_config_path(cfg, cfg.obj_id, cfg.material_mode, cfg.obj_class)))\n", "rotation_axis = config.get(\"rotation_axis\", [0])\n", "rotation_degree = config.get(\"rotation_degree\", [0])\n", "\n", "rotations = [0, 0, 0]\n", "for deg, axis in zip(rotation_degree, rotation_axis):\n", " rotations[axis] = deg" ] }, { "cell_type": "code", "execution_count": 9, "id": "9d2e2d7f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAEQCAYAAABsnLdtAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XeYXVW5+PHv2u3U6TWTXiCFEpDQUYpoQFFRf1guKogXy5WLgFcU9AKigqgg4lUiigG9ei0XQQSFi2DQ0AkESEgvTDJJprdTd1u/P85kIIbAmSRTzuT9PM9+ktlnl3X2zLyzz7vftZbSWmuEEEIIIYQQQgghhBgBxmg3QAghhBBCCCGEEEIcOCQZJYQQQgghhBBCCCFGjCSjhBBCCCGEEEIIIcSIkWSUEEIIIYQQQgghhBgxkowSQgghhBBCCCGEECNGklFCCCGEEEIIIYQQYsRIMkoIIYQQQgghhBBCjBhJRgkhhBBCCCGEEEKIESPJKCGEEEIIIYQQQggxYiQZJYQQQgghhBBCCCFGjCSjhBBCCCGEEEIIIcSIkWSUEEIIIYQQQgghhBgxkowSQgghhBBCCCGEECNGklFCCCGEEEIIIYQQYsRIMkoIIYQQQgghhBBCjBhJRgkhhBBCCCGEEEKIESPJKCGEEEIIIYQQQggxYiQZJd7QKaecwiWXXFL09kuWLEEpRU9Pzz6dd9q0adx88837dAwhhBBCCCGEEEKMPdZoN0C8sfPPP58777wTANu2mTJlCp/4xCe48sorsay9//adf/759PT0cM899+ynlgohhDiQ5HI5XNctenvHcYhGo8PYIiGEeHMSu4QQpWoo8asUYpcko0rAGWecweLFi8nn8/z5z3/m85//PLZtc8UVVwz5WEEQoJQahlYKIYQ4UORyOWpjMdJD2KexsZFNmzaN+RsjIcT4JbFLCFGqhhq/SiF2STKqBEQiERobGwH43Oc+x9133829997LFVdcwU033cTixYvZuHEj1dXVvOc97+E73/kOyWQSgDvuuINLLrmEX/ziF3zlK19h7dq1fOxjHxusttqZmPrb3/7GKaec8qZt+eUvf8kPfvAD1qxZQyKR4LTTTuPmm2+mvr5+l+0ee+wxrrjiCtauXcsRRxzBz372Mw499NDB15cuXcoVV1zBs88+S21tLe9///u5/vrrSSQS++OSCSGEGEau65IGLrEUkSK2zwM379iB67pj+qZICDG+SewSQpSqocSvUoldMmZUCYrFYoPleYZhcMstt7By5UruvPNOHnnkES6//PJdts9kMtxwww387Gc/Y+XKldxyyy186EMf4owzzmD79u1s376dE044oahze57HN77xDV544QXuueceNm/ezPnnn7/bdl/60pe48cYbeeaZZ6irq+M973kPnucBsGHDBs444ww++MEP8uKLL/Lb3/6WpUuXctFFF+3bhRFCCDGiYgrihnrTJSYFuUKIMURilxCiVBUTv0oldkllVAnRWvPwww/z4IMP8u///u8AuwwuPm3aNL75zW/y2c9+lh//+MeD6z3P48c//jHz588fXBeLxcjn84MVV8W64IILBv8/Y8YMbrnlFo4++mhSqdRgNRbA1VdfzTve8Q4A7rzzTiZNmsTdd9/Nhz70Ia6//nrOPffcwbYfdNBB3HLLLZx88snceuutYzp7K4QQ4lWWKixvut3wN0UIIYomsUsIUaqKiV+lErtKpZ0HtPvuu49kMonneYRhyL/8y79wzTXXAPDXv/6V66+/ntWrV9PX14fv++RyOTKZDPF4HCgMXnb44Yfvl7YsW7aMa665hhdeeIHu7m7CMASgubmZefPmDW53/PHHD/6/urqa2bNns2rVKgBeeOEFXnzxRX71q18NbqO1JgxDNm3axNy5c/dLW4UQQgwvUxWWN91u+JsihBBFk9glhChVxcSvUoldkowqAaeeeiq33norjuPQ1NQ0OIve5s2bOeuss/jc5z7Ht771Laqrq1m6dCmf+tSncF13MBkVi8X2y6Dl6XSahQsXsnDhQn71q19RV1dHc3MzCxcuHNKsJKlUis985jNcfPHFu702ZcqUfW6nEEKIkSEf6IQQpUhilxCiVEkySoyoRCLBrFmzdlu/bNkywjDkxhtvxDAKw3/97ne/K+qYjuMQBMGQ2rF69Wo6Ozv59re/zeTJkwF49tlnX3fbJ598cjCx1N3dzdq1awcrnt7ylrfw8ssvv+57EkIIUTocQxMp4gNdqPXwN0YIIYoksUsIUaqKiV+lErtkAPMSNmvWLDzP44c//CEbN27kl7/8JYsWLSpq32nTpvHiiy+yZs0aOjo6BgcXfyNTpkzBcZzB891777184xvfeN1tr732Wh5++GFWrFjB+eefT21tLWeffTYAX/7yl3n88ce56KKLWL58OevWreOPf/yjDGAuhBAlxjSKX4QQYqyQ2CWEKFXDEbumTZuGUmq35fOf//we9/n973/PnDlziEajHHbYYfz5z38e8nuREFvC5s+fz0033cQNN9zAoYceyq9+9Suuv/76ova98MILmT17NgsWLKCuro7HHnvsTfepq6vjjjvu4Pe//z3z5s3j29/+Nt/73vded9tvf/vbfOELX+Coo45ix44d/OlPf8JxHAAOP/xwHn30UdauXctb3/pWjjzySK666iqampqKf/NCCCFG3c5S8WIWIYQYKyR2CSFK1XDErmeeeYbt27cPLg899BAA55xzzutu//jjj/PRj36UT33qUzz//POcffbZnH322axYsWJI51Val0gNlxBCCCHGhL6+PioqKrilHGJFjEmY1ZqL+6C3t5fy8vIRaKEQQuxOYpcQolQNJX7ta+y65JJLuO+++1i3bt3rjj394Q9/mHQ6zX333Te47rjjjuOII44ouqcWSGWUEEIIIfaSVBcIIUqRxC4hRKkaSuzq6+vbZcnn8296fNd1+e///m8uuOCCPU6C9sQTT3D66afvsm7hwoU88cQTQ3ovkowSQgghxF6RcVeEEKVIYpcQolQNJXZNnjyZioqKwaWYIX3uueceenp6OP/88/e4zY4dO2hoaNhlXUNDAzt27BjSe5HZ9IQQQgixVwyKqxwwZEAAIcQYIrFLCFGqiolfO2PXli1bdummF4lE3vT4t99+O2eeeeaIjOcsySghhBBC7JViu7FIVxchxFgisUsIUaqKiV87Xy8vLx/SmFGvvPIKf/3rX/nDH/7whts1NjbS2tq6y7rW1lYaGxuLPhdINz0hhBBC7CXDKH4RQoixQmKXEKJUDWfsWrx4MfX19bz73e9+w+2OP/54Hn744V3WPfTQQxx//PFDOp9URgkhhBBirzhGYXkz/vA3RQghiiaxSwhRqoqJX3sTu8IwZPHixZx33nlY1q5pok984hNMnDhxcMypL3zhC5x88snceOONvPvd7+Y3v/kNzz77LLfddtuQzinJKCGEEELslWIH+DWHvylCCFE0iV1CiFJVTPzam9j117/+lebmZi644ILdXmtubsZ4TbnVCSecwK9//Wu+9rWvceWVV3LQQQdxzz33cOihhw7pnJKMEkIIIcReMVRhKWY7IYQYKyR2CSFKVTHxa29i1zvf+U60fv1ZG5YsWbLbunPOOYdzzjln6Cd6DUlGCSGEEGKvGIbCLOKOp/AsTaalEkKMDRK7hBClqpj4VSqxa0wmo5qbm+no6Bix89XW1jJlypQRO9/+JNdqaOR6CSHE/iPVBUKIUiSxSwhRqoarMmo0jLlkVHNzM7PnzCWXzYzYOaOxOGtWrxpy0uBHP/oR3/3ud9mxYwfz58/nhz/8Icccc8wwtXJ3zc3NzJ09m0wuN2LnjEejrFqzpuhrdf311/OHP/yB1atXE4vFOOGEE7jhhhuYPXv2MLd0d83NzcyZPZdsbuR+tmLROKvXDO1nq6WlhS9/+cv85S9/IZPJMGvWLBYvXsyCBQuGsaVCCDF0Mu6KEKIUSewSQpSq4RozajSMuWRUR0dHIRH12S/DxBGoKGlpJrfoBjo6OoaUMPjtb3/LZZddxqJFizj22GO5+eabWbhwIWvWrKG+vn4YG/yqjo4OMrkc35g7l+nx+LCfb1Mmw3+uWjWka/Xoo4/y+c9/nqOPPhrf97nyyit55zvfycsvv0wikRjmFu+qo6ODbC7DSRO/S0Vk5rCfrze/gaUtXxrS9eru7ubEE0/k1FNP5S9/+Qt1dXWsW7eOqqqqYW6tEEIMnVQXCCFKkcQuIUSpksqokTBxCkw7aLRbsUc33XQTF154IZ/85CcBWLRoEffffz8///nP+cpXvjKibZkejzOnrGxEz1msBx54YJev77jjDurr61m2bBlve9vbRqVNFZGZ1MQOGZVzv5kbbriByZMns3jx4sF106dPH8UWCSHEnkl1gRCiFEnsEkKUqvFUGVVEGBb/zHVdli1bxumnnz64zjAMTj/9dJ544olRbNnY19vbC0B1dfUot2Rsuvfee1mwYAHnnHMO9fX1HHnkkfz0pz8d7WYJIcTrMpTCMIpYVIk8ohNCHBAkdgkhSlVR8atEYpcko/ZCR0cHQRDQ0NCwy/qGhgZ27NgxSq0a+8Iw5JJLLuHEE0/k0EMPHe3mjEkbN27k1ltv5aCDDuLBBx/kc5/7HBdffDF33nnnaDdNCCF2s7NUvJhFCCHGColdQohSNZ5i19jtpifGnc9//vOsWLGCpUuXjnZTxqwwDFmwYAHXXXcdAEceeSQrVqxg0aJFnHfeeaPcOiGE2JVlKWzzze94rBK5KRJCHBgkdgkhSlUx8atUYpdURu2F2tpaTNOktbV1l/Wtra00NjaOUqvGtosuuoj77ruPv/3tb0yaNGm0mzNmTZgwgXnz5u2ybu7cuTQ3N49Si4QQYs+Gq7rg73//O+95z3toampCKcU999yzy+upVIqLLrqISZMmEYvFmDdvHosWLdp/b0wIMa5JZZQQolSNp9glyai94DgORx11FA8//PDgujAMefjhhzn++ONHsWVjj9aaiy66iLvvvptHHnlEBuN+EyeeeCJr1qzZZd3atWuZOnXqKLVICCH2zDCKX4YinU4zf/58fvSjH73u65dddhkPPPAA//3f/82qVau45JJLuOiii7j33nv3w7sSQox3wxW7hBBiuI2n2CXd9PbSZZddxnnnnceCBQs45phjuPnmm0mn04Oz64mCz3/+8/z617/mj3/8I2VlZYNjalVUVBCLxUa5dWPPpZdeygknnMB1113Hhz70IZ5++mluu+02brvtttFumhBC7GbnQJlvup0e2nHPPPNMzjzzzD2+/vjjj3PeeedxyimnAPDpT3+an/zkJzz99NO8973vHdrJhBAHnOGKXUIIMdyKiV+lErvGbjKqZYS6Je3leT784Q/T3t7OVVddxY4dOzjiiCN44IEHdhvUfCRsymTG7HluvfVWgMEPDDstXryY888/fz+0auh68xvG7HmOPvpo7r77bq644gquvfZapk+fzs0338y55547DC0UQoh9U+zTt503RX19fbusj0QiRCKRIZ/3hBNO4N577+WCCy6gqamJJUuWsHbtWr7//e8P+VhCiAPPUGOXEEKMFcXEr1KJXWMuGVVbW0s0Fie36IYRO2c0Fqe2tnbI+1100UVcdNFFw9Ci4tTW1hKPRvnPVatG7JzxaHRI10rrsfObUFtbSywaZ2nLl0bsnLHo0H+2zjrrLM4666xhapEQQuw/Q/1AN3ny5F3WX3311VxzzTVDPu8Pf/hDPv3pTzNp0iQsy8IwDH7605/ytre9bcjHEkIceCQZJYQoVZKMGkZTpkxhzepVdHR0jNg5a2trmTJlyoidb3+ZMmUKq9askWtVpClTprB6jfxsCSHE/jLUri5btmyhvLx8cP3eVEVBIRn15JNPcu+99zJ16lT+/ve/8/nPf56mpiZOP/30vTqmEOLAId30hBClSrrpDbMpU6bIB/giybUaGrleQgix/xiqyOqCsPBveXn5LsmovZHNZrnyyiu5++67efe73w3A4YcfzvLly/ne974nySghxJsaauwSQoixopj4VSqxa0wmo4QQQggx9hVdXbAfZ3XxPA/P8zD+6aCmaRKGJXL3JYQYVaMRu4QQYn8oqjKqRGKXJKOEEEIIsVcMS2FaRXygG+JxU6kU69evH/x606ZNLF++nOrqaqZMmcLJJ5/Ml770JWKxGFOnTuXRRx/lF7/4BTfddNMQzySEOBANV+wSQojhVkz8KpXYJckoIYQQQuyVogcBHuJd0bPPPsupp546+PVll10GwHnnnccdd9zBb37zG6644grOPfdcurq6mDp1Kt/61rf47Gc/O7QTCSEOSMMVu4QQYrgVNYB5icQuSUYJIYQQYq8MV1eXU0455Q1nY21sbGTx4sVDO6gQQgyQbnpCiFIl3fSEEEIIccBThkIV8YFOlchNkRDiwCCxSwhRqoqJX6USuyQZJYQQQoi9Il1dhBClSGKXEKJUSTc9IYQQQhzwpLpACFGKJHYJIUqVVEYJIYQQ4oBnqCLHXXnzTYQQYsRI7BJClKpi4lepxC5JRgkhhBBiryijuKdvpfKETghxYJDYJYQoVcXEr1KJXZKMEkIIIcReMUyFYRZRXRCOQGOEEKJIEruEEKWqmPhVKrFLklFCCCGE2CuGbWDYRXygQ49Aa4QQojgSu4QQpaqY+FUqsatECriEEEIIMeYMDKL5ZkvJDF4ghDgwDGPs+tGPfsS0adOIRqMce+yxPP3000Xt95vf/AalFGefffYu67XWXHXVVUyYMIFYLMbpp5/OunXrhtwuIcQ4MY7uuyQZJYQQQoi9srNUvJhFCCHGiuGKXb/97W+57LLLuPrqq3nuueeYP38+CxcupK2t7Q3327x5M//xH//BW9/61t1e+853vsMtt9zCokWLeOqpp0gkEixcuJBcLjektgkhxofxdN817pJRWmt6e3vRujRK04QQQohSpUxV9CKEEGPFcMWum266iQsvvJBPfvKTzJs3j0WLFhGPx/n5z3++x32CIODcc8/l61//OjNmzNjlNa01N998M1/72td43/vex+GHH84vfvELtm3bxj333LM3b10IUeKG676rpaWFj33sY9TU1BCLxTjssMN49tln97j9kiVLUErttuzYsaPoc467ZFR3dzeVlZW0tbVJQkoIIYQYRkpRVFcXJbkoIcQYMtTY1dfXt8uSz+d3O6bruixbtozTTz99cJ1hGJx++uk88cQTe2zLtddeS319PZ/61Kd2e23Tpk3s2LFjl2NWVFRw7LHHvuExhRDjV1Hxa4j3Xd3d3Zx44onYts1f/vIXXn75ZW688UaqqqredN81a9awffv2waW+vr7o8467Acx3JqDWrl1LLBYjmUxiGOMu5yaEEEKMumKfvklllBBiLBlq7Jo8efIu66+++mquueaaXdZ1dHQQBAENDQ27rG9oaGD16tWve/ylS5dy++23s3z58td9fWeFwesdcyjVB0KI8aOY+DXU+64bbriByZMns3jx4sF106dPL2rf+vp6Kisrh3S+ncZtlmbr1q3kcjn6+/vxPG+0myOEEEKMO9JNTwhRioYau7Zs2UJvb+/gcsUVV+xzG/r7+/n4xz/OT3/6U2pra/f5eEKIA8NQYlcxVZ0A9957LwsWLOCcc86hvr6eI488kp/+9KdFteeII45gwoQJvOMd7+Cxxx4b0nsZt8koAMuy8H2fFStWkE6npdueEEIIsR8p0yh6EUKIsWKosau8vHyXJRKJ7HbM2tpaTNOktbV1l/Wtra00Njbutv2GDRvYvHkz73nPe7AsC8uy+MUvfsG9996LZVls2LBhcL9ijymEGP+GErsmT55MRUXF4HL99de/7jE3btzIrbfeykEHHcSDDz7I5z73OS6++GLuvPPOPbZjwoQJLFq0iLvuuou77rqLyZMnc8opp/Dcc88V/V7GXTe911IDnSWbm5uZOHEiWmvi8bh02xNCCCH2A+mmJ4QoRcMRuxzH4aijjuLhhx/m7LPPBiAMQx5++GEuuuii3bafM2cOL7300i7rvva1r9Hf388PfvADJk+ejG3bNDY28vDDD3PEEUcAhUqHp556is997nNFt00IMX4MpZveli1bKC8vH1z/eol0KMSqBQsWcN111wFw5JFHsmLFChYtWsR55533uvvMnj2b2bNnD359wgknsGHDBr7//e/zy1/+sqj3Mq6TUfBqQkopxbp165g2bRrJZBLbtke5ZUIIIURpM2wDw3nzBzyGFCYLIcaQ4Ypdl112Geeddx4LFizgmGOO4eabbyadTvPJT34SgE984hNMnDiR66+/nmg0yqGHHrrL/jvHXXnt+ksuuYRvfvObHHTQQUyfPp3//M//pKmpaTDhJYQ4sBQTv3bGrp3V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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 4,\n", " subplot_kw={'projection': '3d'},\n", " figsize=(15, 4))\n", "viz(pred_pc, pred_feats['part_label'], discrete=True, rotation=rotations,\n", "ax=ax[0])\n", "viz(pred_pc, pred_feats['E'], rotation=rotations,\n", "ax=ax[1])\n", "viz(pred_pc, pred_feats['nu'], rotation=rotations,\n", "ax=ax[2])\n", "viz(pred_pc, pred_feats['density'], rotation=rotations,\n", "ax=ax[3])" ] }, { "cell_type": "code", "execution_count": 10, "id": "bb142364", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gs_sim_out_path = f\"{paths['physgaussian_output']}/sample_{cfg.physics.sample_id}\"\n", "sim_out = Path(gs_sim_out_path) / \"frames\" / \"output.mp4\"\n", "Video(sim_out, embed=True)" ] } ], "metadata": { "kernelspec": { "display_name": "pixie_release", "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.18" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: normalization_stats/material_statistics.json ================================================ {"dataset_info": {"total_objects": 1577, "failed_objects": 0, "total_voxels": 413401088}, "material_distribution": {"-1": {"count": 246700, "percentage": 0.05967570167594721}, "0": {"count": 23403291, "percentage": 5.661158540540658}, "1": {"count": 18155441, "percentage": 4.39172550024832}, "2": {"count": 4251952, "percentage": 1.0285294653119055}, "3": {"count": 494, "percentage": 0.00011949654085090362}, "4": {"count": 62776, "percentage": 0.015185252729668674}, "5": {"count": 4049178, "percentage": 0.9794792799384215}, "6": {"count": 2882975, "percentage": 0.6973796353433883}, "7": {"count": 360348281, "percentage": 87.16674712767085}}, "raw_ranges": {"density": {"min": 0.0, "max": 7919.525390625}, "youngs_modulus": {"min": 0.0, "max": 207151890432.0}, "poisson_ratio": {"min": 0.0, "max": 0.546366274356842}}, "log_ranges": {"density": {"min": -6.000000476837158, "max": 3.8986992835998535, "p1": 1.7031893730163574, "p99": 3.871432304382324}, "youngs_modulus": {"min": -6.000000476837158, "max": 11.316288948059082, "p1": 3.0183002948760986, "p99": 10.881680488586426}}, "poisson_percentiles": {"p01": 0.21027633547782898, "p05": 0.21027633547782898, "p10": 0.26458939909935, "p25": 0.3041105270385742, "p50": 0.3102763295173645, "p75": 0.39688411355018616, "p90": 0.43013817071914673, "p95": 0.4418972432613373, "p99": 0.4492689371109009}, "normalization_ranges": {"density_p1": 1.7031893730163574, "density_p99": 3.871432304382324, "E_p1": 3.0183002948760986, "E_p99": 10.881680488586426, "nu_p1": 0.21027633547782898, "nu_p99": 0.4492689371109009}} ================================================ FILE: normalization_stats/normalization_ranges.yaml ================================================ {"density_min": 1.7031893730163574, "density_max": 3.871432304382324, "E_min": 3.0183002948760986, "E_max": 10.881680488586426, "nu_min": 0.21027633547782898, "nu_max": 0.4492689371109009, "density_p1": 1.7031893730163574, "density_p99": 3.871432304382324, "E_p1": 3.0183002948760986, "E_p99": 10.881680488586426, "nu_p1": 0.21027633547782898, "nu_p99": 0.4492689371109009} ================================================ FILE: pipeline.py ================================================ import time import os import shutil import logging from pathlib import Path from typing import Optional, Tuple import hydra from omegaconf import DictConfig from pixie.utils import (run_cmd, get_obj_class_for_id, download_object, prepare_nerf_dataset_from_blender_output, resolve_paths, get_output_paths, get_physics_config_path, should_use_white_bg, create_directories, validate_config, get_latest_nerf_run, save_contextual_config, get_vlm_api_key, get_vlm_results, generate_material_segmentation, generate_neural_segmentation, set_logger, configure_real_scene_voxelization, format_real_scene_sample, get_material_segmentation_path, should_use_colmap) def download_assets(cfg: DictConfig) -> None: """Download the specified 3D object from Objaverse if a local path isn't provided.""" if cfg.obj_path is None: download_object(cfg.obj_id) def render_blender_images(cfg: DictConfig, paths: dict) -> str: """Render images using Blender.""" if cfg.obj_path is not None: obj_params = ["--obj_path", cfg.obj_path] else: obj_params = ["--obj_id", cfg.obj_id] blender_render_cmd_list = [ "blender", "--background", "--python", "pixie/blender/generate_blendernerf_data.py", "--", *obj_params, "--num_images", cfg.data_rendering.num_images, "--format", cfg.data_rendering.format, "--camera_dist_min", cfg.data_rendering.camera_dist_min, "--camera_dist_max", cfg.data_rendering.camera_dist_max, "--output_dir", paths['data_dir'], "--scene_scale", cfg.data_rendering.scene_scale, "--blender_nerf_addon_path", cfg.paths.blender_nerf_addon_path, ] if cfg.data_rendering.transparent_bg: blender_render_cmd_list.append("--transparent_bg") blender_render_cmd = " ".join(map(str, blender_render_cmd_list)) # Add Blender path if specified if cfg.paths.blender_path: blender_path = f'export PATH="{cfg.paths.blender_path}:$PATH";' blender_render_cmd = f"{blender_path} {blender_render_cmd}" # Check if we need to run Blender transforms_path = f"{paths['data_dir']}/transforms_train.json" if cfg.overwrite or not os.path.exists(transforms_path): run_cmd(blender_render_cmd, step_name="BLENDER_RENDER") save_contextual_config(cfg, paths['data_dir'], "blender") return paths['data_dir'] def train_distilled_clip_nerf(cfg: DictConfig, blender_output_dir: str, paths: dict) -> Optional[str]: """Train the CLIP-distilled NeRF model (F3RM).""" prepare_nerf_dataset_from_blender_output(blender_output_dir) start = time.time() train_cmd = [ "ns-train", cfg.training_3d.nerf.method, "--data", blender_output_dir, # blender_output_dir already contains the obj_id "--max-num-iterations", cfg.training_3d.nerf.max_iterations, "--viewer.quit-on-train-completion", str(cfg.training_3d.nerf.quit_on_completion), "--pipeline.model.disable-scene-contraction", str(cfg.training_3d.nerf.disable_scene_contraction), "--save_only_latest_checkpoint", str(cfg.training_3d.nerf.save_only_latest_checkpoint), "--output_dir", cfg.paths.outputs_dir, ] # Check if we need to train output_dir = paths['nerf_output'] latest_run = get_latest_nerf_run(output_dir) # Check if checkpoint exists checkpoint_exists = False if latest_run: config_path = os.path.join(latest_run, "config.yml") checkpoint_dir = os.path.join(latest_run, "nerfstudio_models") checkpoint_exists = (os.path.exists(config_path) and os.path.exists(checkpoint_dir) and len(os.listdir(checkpoint_dir)) > 0) # Train if needed if not latest_run or not checkpoint_exists: run_cmd(train_cmd, step_name="TRAIN_F3RM_RERUN") # Get the updated latest run after training latest_run = get_latest_nerf_run(output_dir) if not latest_run: raise RuntimeError(f"Failed to find NeRF training run in {output_dir}") config_path = os.path.join(latest_run, "config.yml") end = time.time() logging.info(f"NeRF training completed. Config path: {config_path}. Time taken: {end - start:.2f} seconds") return config_path def train_gaussian_splatting(cfg: DictConfig, blender_output_dir: str, paths: dict) -> None: """Train the Gaussian Splatting model.""" gs_train_cmd_str = ( f"cd {cfg.paths.gaussian_splatting_dir} && python train.py " f"-s {blender_output_dir} " # blender_output_dir already contains the obj_id f"--iterations {cfg.training_3d.gaussian_splatting.max_iterations} " f"--model_path {paths['gs_output']}") if cfg.overwrite or not os.path.exists( f"{paths['gs_output']}/point_cloud"): run_cmd(gs_train_cmd_str, step_name="TRAIN_GS") save_contextual_config(cfg, paths['gs_output'], "gaussian_splatting") logging.info( f"Gaussian Splatting training completed. Model path: {paths['gs_output']}" ) def generate_voxels(cfg: DictConfig, config_path: str, paths: dict) -> str: """Generate voxel grid and CLIP features from the trained NeRF.""" if not cfg.is_objaverse_object: # Auto-configure voxelization for real scene data configure_real_scene_voxelization(cfg) format_real_scene_sample(cfg, paths) bounds = cfg.voxelization.scene_bounds voxel_cmd = [ "python", "pixie/voxel/voxelize.py", "--scene", config_path, "--output", f"{paths['render_output']}/clip_features.npz", "--voxel_size", str(cfg.voxelization.voxel_size), "--gray_threshold", str(cfg.voxelization.gray_threshold), "--min_x", str(bounds.x_bound[0]), "--max_x", str(bounds.x_bound[1]), "--min_y", str(bounds.y_bound[0]), "--max_y", str(bounds.y_bound[1]), "--min_z", str(bounds.z_bound[0]), "--max_z", str(bounds.z_bound[1]) ] should_run_voxel = ( cfg.overwrite_voxel or not (os.path.exists(f"{paths['render_output']}/clip_features.npz") and os.path.exists(f"{paths['render_output']}/clip_features_pc.ply"))) if should_run_voxel: run_cmd(voxel_cmd, step_name="VOXELIZE") save_contextual_config(cfg, paths['render_output'], "voxelization") else: logging.info(f"Skipping voxelization because it already exists at {paths['render_output']}") return paths['render_output'] def run_physics_simulation(cfg: DictConfig, sample_output_dir: str, point_cloud_path: str, paths: dict) -> None: """Runs physics simulation on a single segmented material point cloud.""" if not sample_output_dir or not point_cloud_path: logging.info("No segmented sample provided to run simulation. Skipping.") return if not Path(point_cloud_path).exists(): logging.error(f"Point cloud not found at {point_cloud_path}. Skipping simulation.") return sample_id = Path(sample_output_dir).name logging.info(f"Running simulation for sample {sample_id}") phys_config = get_physics_config_path(cfg, cfg.obj_id, cfg.material_mode, cfg.obj_class) # Use configured physgaussian output path: physgaussian_output/{obj_id}/{sample_id} gs_sim_out_path = f"{paths['physgaussian_output']}/{sample_id}" os.makedirs(gs_sim_out_path, exist_ok=True) phys_sim_list = [ "xvfb-run", "-a", "python", "gs_simulation.py", "--model_path", paths['gs_output'], "--point_cloud_path", point_cloud_path, "--output_path", gs_sim_out_path, "--config", f"{phys_config}", # Adjusted for cd into PhysGaussian "--render_img", "--compile_video", ] if cfg.physics.debug: phys_sim_list.append("--debug") # Add white background flag if needed if should_use_white_bg(cfg, cfg.material_mode, cfg.obj_class): phys_sim_list.append("--white_bg") if cfg.physics.save_ply: phys_sim_list.append("--save_ply") phys_sim_cmd = f"cd {cfg.paths.physgaussian_dir} && {' '.join(phys_sim_list)}" sim_output_exists = (Path(gs_sim_out_path) / "frames" / "output.gif").exists() or \ (Path(gs_sim_out_path) / "frames" / "output.mp4").exists() if cfg.overwrite or not sim_output_exists: run_cmd(phys_sim_cmd, step_name=f"PHYS_SIM_{sample_id}") save_contextual_config(cfg, gs_sim_out_path, "physics_simulation") else: logging.info(f"Physics simulation results already exist at {gs_sim_out_path}. Skipping.") def run_vlm_segmentation(cfg: DictConfig, paths: dict) -> None: """Run VLM segmentation to generate part queries.""" if not cfg.segmentation.vlm.labeling.enabled or cfg.material_mode != 'vlm': return logging.info("Running VLM segmentation...") model_name = cfg.segmentation.vlm.labeling.models.segmentation api_key = get_vlm_api_key(cfg, model_name) vlm_seg_output_dir = f"{cfg.paths.vlm_seg_results_dir}/{cfg.obj_id}" vlm_seg_cmd = [ "python", "pixie/vlm_labeler/vlm_seg.py", "--obj_id", cfg.obj_id, "--obj_class", cfg.obj_class, "--output_dir", vlm_seg_output_dir, "--data_dir", cfg.paths.data_dir, "--overwrite", str(cfg.segmentation.vlm.labeling.overwrite), "--num_alternative_queries", str(cfg.segmentation.vlm.labeling.seg.num_alternative_queries), "--input_num_views", str(cfg.segmentation.vlm.labeling.seg.input_num_views), "--model_name", model_name, "--api_key", api_key, ] vlm_results_path = f"{vlm_seg_output_dir}/vlm_results.json" if cfg.overwrite or not os.path.exists(vlm_results_path): run_cmd(vlm_seg_cmd, step_name="VLM_SEG") save_contextual_config(cfg, vlm_seg_output_dir, "vlm_seg") else: logging.info(f"VLM segmentation results already exist at {vlm_results_path}") def run_vlm_viz_seg_candidates(cfg: DictConfig, paths: dict) -> None: """Run VLM visualization of segmentation candidates.""" if not cfg.segmentation.vlm.labeling.enabled or cfg.material_mode != 'vlm': return logging.info("Running VLM visualization of segmentation candidates...") model_name = cfg.segmentation.vlm.labeling.models.segmentation api_key = get_vlm_api_key(cfg, model_name) vlm_viz_cmd = [ "python", "pixie/vlm_labeler/vlm_viz_seg_candidates.py", "--obj_id", cfg.obj_id, "--vlm_seg_results_dir", cfg.paths.vlm_seg_results_dir, "--render_outputs_dir", cfg.paths.render_outputs_dir, "--outputs_dir", cfg.paths.outputs_dir, "--grid_size", str(cfg.voxelization.grid_size), "--gray_threshold", str(cfg.voxelization.gray_threshold), "--overwrite", str(cfg.overwrite), "--model_name", model_name, "--api_key", api_key, ] vlm_seg_output_dir = f"{cfg.paths.vlm_seg_results_dir}/{cfg.obj_id}" # Check if visualization files exist viz_files_exist = False if os.path.exists(vlm_seg_output_dir): query_dirs = [d for d in os.listdir(vlm_seg_output_dir) if d.startswith("query_")] if query_dirs: first_query_dir = os.path.join(vlm_seg_output_dir, query_dirs[0]) viz_files_exist = os.path.exists(os.path.join(first_query_dir, "clip.png")) if cfg.overwrite or not viz_files_exist: run_cmd(vlm_viz_cmd, step_name="VLM_VIZ_SEG_CANDIDATES") save_contextual_config(cfg, vlm_seg_output_dir, "vlm_viz_seg_candidates") else: logging.info("VLM visualization files already exist") def run_vlm_seg_critic(cfg: DictConfig, paths: dict) -> None: """Run VLM segmentation critic to evaluate segmentation quality.""" if not cfg.segmentation.vlm.labeling.enabled or cfg.material_mode != 'vlm': return logging.info("Running VLM segmentation critic...") model_name = cfg.segmentation.vlm.labeling.models.seg_critic api_key = get_vlm_api_key(cfg, model_name) vlm_critic_cmd = [ "python", "pixie/vlm_labeler/vlm_seg_critic.py", "--obj_id", cfg.obj_id, "--data_dir", cfg.paths.data_dir, "--vlm_seg_results_dir", cfg.paths.vlm_seg_results_dir, "--vlm_seg_critic_results_dir", cfg.paths.vlm_seg_critic_results_dir, "--input_num_views", str(cfg.segmentation.vlm.labeling.critic.input_num_views), "--overwrite", str(cfg.overwrite), "--model_name", model_name, "--api_key", api_key, ] vlm_critic_output_dir = f"{cfg.paths.vlm_seg_critic_results_dir}/{cfg.obj_id}" run_cmd(vlm_critic_cmd, step_name="VLM_SEG_CRITIC") save_contextual_config(cfg, vlm_critic_output_dir, "vlm_seg_critic") def run_vlm_phys_sampler(cfg: DictConfig, paths: dict) -> None: """Run VLM physics sampler to generate material samples.""" if not cfg.segmentation.vlm.labeling.enabled or cfg.material_mode != 'vlm': return logging.info("Running VLM physics sampler...") model_name = cfg.segmentation.vlm.labeling.models.phys_sampler api_key = get_vlm_api_key(cfg, model_name) vlm_sampler_cmd = [ "python", "pixie/vlm_labeler/vlm_phys_sampler.py", "--obj_id", cfg.obj_id, "--vlm_seg_results_dir", cfg.paths.vlm_seg_results_dir, "--vlm_seg_mat_sample_results_dir", cfg.paths.vlm_seg_mat_sample_results_dir, "--overwrite", str(cfg.segmentation.vlm.labeling.overwrite), "--num_sample_mat", str(cfg.segmentation.vlm.labeling.phys_sampler.num_sample_mat), "--model_name", model_name, "--api_key", api_key, ] vlm_sampler_output_dir = f"{cfg.paths.vlm_seg_mat_sample_results_dir}/{cfg.obj_id}" run_cmd(vlm_sampler_cmd, step_name="VLM_PHYS_SAMPLER") save_contextual_config(cfg, vlm_sampler_output_dir, "vlm_phys_sampler") def run_vlm_parse_seg_critic(cfg: DictConfig, paths: dict) -> None: """Run VLM parse segmentation critic to finalize results.""" if not cfg.segmentation.vlm.labeling.enabled or cfg.material_mode != 'vlm': return logging.info("Running VLM parse segmentation critic...") model_name = cfg.segmentation.vlm.labeling.models.parse_critic api_key = get_vlm_api_key(cfg, model_name) vlm_parse_cmd = [ "python", "pixie/vlm_labeler/vlm_parse_seg_critic.py", "--obj_id", cfg.obj_id, "--vlm_seg_results_dir", cfg.paths.vlm_seg_results_dir, "--vlm_seg_critic_results_dir", cfg.paths.vlm_seg_critic_results_dir, "--vlm_seg_mat_sample_results_dir", cfg.paths.vlm_seg_mat_sample_results_dir, "--model_name", model_name, "--api_key", api_key, ] vlm_parse_output_dir = f"{cfg.paths.vlm_seg_mat_sample_results_dir}/{cfg.obj_id}" run_cmd(vlm_parse_cmd, step_name="VLM_PARSE_SEG_CRITIC") save_contextual_config(cfg, vlm_parse_output_dir, "vlm_parse_seg_critic") @hydra.main(version_base=None, config_path="config", config_name="config") def main(cfg: DictConfig) -> None: """Main function to run the entire pipeline.""" # Set up logging first set_logger() # Validate configuration validate_config(cfg) # Resolve paths and system-specific settings cfg = resolve_paths(cfg) # Auto-detect object class if not provided if cfg.obj_class is None and cfg.obj_id is not None: cfg.obj_class = get_obj_class_for_id(cfg.obj_id, cfg) # Get all output paths paths = get_output_paths(cfg, cfg.obj_id) # Create necessary directories create_directories(paths) start_time = time.time() # Download assets if needed if cfg.is_objaverse_object: download_assets(cfg) # Render Blender images render_blender_images(cfg, paths) data_dir = paths['data_dir'] # Train NeRF model config_path = train_distilled_clip_nerf(cfg, data_dir, paths) if not cfg.is_objaverse_object and should_use_colmap(cfg, paths): data_dir = f"{data_dir}/colmap" # Train Gaussian Splatting model train_gaussian_splatting(cfg, data_dir, paths) # Generate voxels render_output_dir = generate_voxels(cfg, config_path, paths) # Run VLM labeling pipeline if enabled if cfg.material_mode == 'vlm' and cfg.segmentation.vlm.labeling.enabled: # Run VLM segmentation to generate part queries run_vlm_segmentation(cfg, paths) # Run VLM visualization of segmentation candidates run_vlm_viz_seg_candidates(cfg, paths) # Run VLM segmentation critic run_vlm_seg_critic(cfg, paths) # Run VLM physics sampler run_vlm_phys_sampler(cfg, paths) # Run VLM parse segmentation critic run_vlm_parse_seg_critic(cfg, paths) # Generate material segmentation if cfg.material_mode == 'vlm': sample_output_dir = generate_material_segmentation( cfg, render_output_dir, paths) elif cfg.material_mode == 'neural': sample_output_dir = generate_neural_segmentation( cfg, render_output_dir, paths) else: raise ValueError(f"Invalid material mode: {cfg.material_mode}") point_cloud_path = get_material_segmentation_path(cfg, render_output_dir, paths) # Run physics simulation run_physics_simulation(cfg, sample_output_dir, str(point_cloud_path), paths) end_time = time.time() logging.info(f"Total time taken: {end_time - start_time:.2f} seconds") if __name__ == "__main__": main() ================================================ FILE: pixie/__init__.py ================================================ ================================================ FILE: pixie/blender/__init__.py ================================================ ================================================ FILE: pixie/blender/apply_feature_colors.py ================================================ #!/usr/bin/env python from __future__ import annotations import argparse, os, sys from pathlib import Path from typing import List, Tuple import numpy as np from plyfile import PlyData import bpy from mathutils import Vector, kdtree import objaverse import random # Try importing matplotlib - if not available, use fallback colormaps import matplotlib.pyplot as plt import matplotlib.cm as cm from mathutils import Matrix import json import socket import subprocess HAS_MATPLOTLIB = True # ----------------------------------------------------------------------------- # PART-LABEL PALETTES # ----------------------------------------------------------------------------- # New palettes with more distinct shades within each family. PALETTE_ELASTICITY_NEW = [ (0.85, 0.22, 0.22), # Brick Red (1.00, 0.50, 0.20), # Orange (0.98, 0.75, 0.30), # Golden Yellow (0.70, 0.35, 0.10), # Brownish-Orange (1.00, 0.60, 0.60), # Light Salmon Pink ] PALETTE_PLASTICITY_NEW = [ (0.10, 0.40, 0.75), # Steel Blue (0.20, 0.70, 0.65), # Teal / Aquamarine (0.45, 0.35, 0.70), # Indigo / Dark Lavender (0.05, 0.20, 0.45), # Dark Navy (0.60, 0.80, 0.95), # Sky Blue ] # Old palettes kept for reference or if user prefers them via a future flag _PALETTE_ELASTICITY_ORIGINAL = [ (0.98, 0.40, 0.40), # light red (0.90, 0.20, 0.20), # red (0.70, 0.10, 0.10), # dark red (0.50, 0.00, 0.00), # very dark red / maroon (1.00, 0.60, 0.60), # pale red (0.85, 0.30, 0.30), (0.75, 0.15, 0.15), (0.60, 0.05, 0.05), ] _PALETTE_PLASTICITY_ORIGINAL = [ (0.20, 0.60, 0.95), # light blue (0.10, 0.40, 0.85), # blue (0.05, 0.25, 0.65), # dark blue (0.02, 0.15, 0.45), # very dark blue (0.40, 0.70, 1.00), (0.15, 0.50, 0.90), (0.08, 0.30, 0.70), (0.04, 0.20, 0.50), ] # Map palette-type string → colour list PALETTE_MAP = { 'elasticity': PALETTE_ELASTICITY_NEW, # Using the new ones by default 'plasticity': PALETTE_PLASTICITY_NEW, # Using the new ones by default 'elasticity_original': _PALETTE_ELASTICITY_ORIGINAL, # For potential future choice 'plasticity_original': _PALETTE_PLASTICITY_ORIGINAL, # For potential future choice } # ----------------------------------------------------------------------------- # CLI & ENV HELPERS # ----------------------------------------------------------------------------- def str2bool(v: str | bool) -> bool: if isinstance(v, bool): return v if v.lower() in {"yes", "true", "t", "1", "y"}: return True if v.lower() in {"no", "false", "f", "0", "n"}: return False raise argparse.ArgumentTypeError("Boolean value expected.") def parse_argv() -> argparse.Namespace: if "--" in sys.argv: argv = sys.argv[sys.argv.index("--") + 1:] else: argv = sys.argv[1:] ap = argparse.ArgumentParser( description="Transfer CLIP-PCA colours onto mesh") ap.add_argument("--obj_ids", nargs="+", default=[], type=str, help="List of Objaverse UIDs of the assets") ap.add_argument( "--pred_ply", nargs="+", type=str, help="List of PLY paths for CLIP PCA colours", default=[ ]) ap.add_argument( "--clip_pred_ply", nargs="+", type=str, help="List of PLY paths for CLIP PCA colours", default=[ ]) ap.add_argument( "--glb_paths", nargs="+", type=str, default=None, help="List of local GLB paths", ) ap.add_argument("--output_dir", type=str, default="test_qualitative_debug_viz", help="Directory for coloured GLB") ap.add_argument("--normalize", type=str2bool, default=True, help="Normalize mesh to unit cube") ap.add_argument("--scene_scale", type=float, default=1.0, help="Scale factor after normalisation") ap.add_argument("--radius", type=float, default=None, help="Manual KD radius") ap.add_argument("--kd_max", type=int, default=5, help="# nearest samples for average") # ** Stylisation flags ** ap.add_argument("--stylise", choices=["none", "voxels"], default="none", help="Voxel stylisation") ap.add_argument("--voxel_size", type=float, default=0.05, help="Voxel remesh size") ap.add_argument("--voxel_adaptivity", type=float, default=0.0, help="Voxel remesh adaptivity") ap.add_argument("--keep_separate", action="store_true", help="Don't join meshes before remesh") # ** Colormap options ** ap.add_argument( "--colormap", type=str, default="turbo", help= "Colormap to use: blue, viridis, plasma, inferno, magma, turbo, coolwarm, seismic, rainbow, jet, etc." ) ap.add_argument("--vmin", type=float, default=None, help="Min value for colormap normalization") ap.add_argument("--vmax", type=float, default=None, help="Max value for colormap normalization") ap.add_argument("--gamma", type=float, default=8.0, help="Gamma/sharpness for sigmoid mapping (0 = linear)") ap.add_argument( "--feature", type=str, default="E", help="Feature to use for colormap", choices=["E", "density", "nu", "part_label", "material_id", "rgb", "clip_pca"]) ap.add_argument( "--label_palette", type=str, default="default", choices=["default", "elasticity", "plasticity"], help= "Palette to use for part_label colouring (only applies when --feature part_label)." ) ap.add_argument("--render_scene_scale", nargs="+", type=float, default=[1.0]) ap.add_argument("--transparent", action="store_true", default=False) ap.add_argument( "--is_dreamphysics", nargs="+", type=str2bool, default=[False], help="List of booleans, one per --obj_id, marking DreamPhysics assets", ) ap.add_argument("--overwrite", action="store_true", default=False) ap.add_argument("--camera_id", type=int, default=None, help="Camera index in transforms.json (0-based, optional)") ap.add_argument( "--blend", type=str2bool, default=False, help= "If true, blend original RGB shader with feature‐colour shader using an Empty-controlled gradient." ) ap.add_argument( "--blend_feature", type=str, default="rgb", help="Secondary feature to blend with when --blend true.\n" "Use 'rgb' to blend with the original material (default).\n" "Otherwise choose another feature (E, density, nu, \n" "part_label, material_id, clip_pca) to blend two painted features.") ap.add_argument( "--save_blend", type=str2bool, default=False, help= "If true, also save the current Blender scene (.blend) for inspection." ) ap.add_argument("--log_normalize_feature", type=str2bool, default=True, help="If true, log-normalize the feature values.") ap.add_argument( "--material_types", type=str, default="plain,glossy", help="Comma-separated material styles for branch1 and branch2.\n" "Options per branch: plain | glossy | original.\n" "'plain' and 'glossy' create new Principled BSDFs with \n" "appropriate parameters; 'original' reuses the object's \n" "existing shader graph (only valid for branch2).") ap.add_argument( "--noise_edge", type=str2bool, default=False, help= "If true, add a Noise Texture modulation to the blend mask for a more organic edge." ) ap.add_argument( "--noise_scale", type=float, default=50.0, help= "Noise texture scale when --noise_edge is true (higher = finer noise)." ) ap.add_argument( "--noise_strength", type=float, default=0.3, help= "How strongly noise perturbs the edge (0-1). 0.3 gives subtle jitter; 1.0 full displacement." ) ap.add_argument( "--focal_length", type=float, default=None, help="Camera focal length in mm. Overrides any camera intrinsics.") ap.add_argument( "--rotate_video", action="store_true", default=False, help= "If set, generate multiple frames for a 360° rotating video instead of a single still." ) ap.add_argument("--views", type=int, default=120, help="Number of views for 360° rotation (default: 120)") ap.add_argument("--data_dir", type=str, default=None, help="Data directory containing the transforms.json file") ap.add_argument("--blend_file_path", type=str, default=None, help="Path to the Blender scene file (.blend) to use for rendering") args = ap.parse_args(argv) # Pre-parse material_types into list so we don't repeat later mt = [s.strip().lower() for s in args.material_types.split(",")] # Ensure we have two values if len(mt) == 1: mt = mt * 2 elif len(mt) > 2: mt = mt[:2] args.material_types = mt # overwrite with list for convenience return args def ensure_dir(p: str | Path) -> Path: p = Path(p) p.mkdir(parents=True, exist_ok=True) return p # ----------------------------------------------------------------------------- # SCENE UTILITIES # ----------------------------------------------------------------------------- def clear_scene(): bpy.ops.object.select_all(action="SELECT") bpy.ops.object.delete() for coll in list(bpy.data.collections): if coll.users == 0 and coll.name != "Collection": bpy.data.collections.remove(coll) for db in (bpy.data.meshes, bpy.data.materials, bpy.data.images, bpy.data.textures): for block in list(db): if block.users == 0: db.remove(block) def scene_bbox(objs: List[bpy.types.Object]) -> Tuple[Vector, Vector]: depsgraph = bpy.context.evaluated_depsgraph_get() bb_min = Vector((1e9, 1e9, 1e9)) bb_max = Vector((-1e9, -1e9, -1e9)) for ob in objs: ob_eval = ob.evaluated_get(depsgraph) for corner in ob_eval.bound_box: wco = ob_eval.matrix_world @ Vector(corner) bb_min = Vector(map(min, bb_min, wco)) bb_max = Vector(map(max, bb_max, wco)) return bb_min, bb_max def make_blended_material(mesh_objs, layer_main: str = "CLIP_PCA", layer_blend: str | None = None, style_main: str = "plain", style_blend: str = "plain", *, noise_edge: bool = False, noise_scale: float = 50.0, noise_strength: float = 0.3): """Create a material that blends between two vertex-colour layers along the Z-axis. Parameters ---------- layer_main : str Name of the *first* vertex-colour layer. This is the layer that will be visible where the gradient factor is 0 (i.e. towards the EMPTY). layer_blend : str | None Name of the *second* vertex-colour layer to blend to. If *None* the original material of the object is used instead – this matches the previous behaviour of the function. If provided, the original material is ignored and we blend *layer_main* → *layer_blend*. """ # Re-use (or create) the empty that drives the gradient. if "BlendController" in bpy.data.objects: empty = bpy.data.objects["BlendController"] else: empty = bpy.data.objects.new("BlendController", None) bpy.context.collection.objects.link(empty) empty.location = (0, 0, 0.2 ) # Slightly above centre so original shows first for ob in mesh_objs: for slot in ob.material_slots: mat = slot.material if mat is None or not mat.use_nodes: continue nt = mat.node_tree # Locate the output node out = next(n for n in nt.nodes if n.type == "OUTPUT_MATERIAL") # ---- remove current surface link & remember old shader -------- try: old_link = next( l for l in nt.links if l.to_node == out and l.to_socket.name == "Surface") old_shader = old_link.from_node nt.links.remove(old_link) except StopIteration: old_shader = None # Helper to create BSDF with style --------------------------------- def _create_bsdf(style: str, x: int, y: int): bsdf = nt.nodes.new("ShaderNodeBsdfPrincipled") bsdf.location = (x, y) if style == "glossy": bsdf.inputs["Roughness"].default_value = 0.0 bsdf.inputs["Specular IOR Level"].default_value = 1.0 bsdf.inputs["Metallic"].default_value = 0.1 # "plain" keeps default values return bsdf # ---- FIRST feature branch (layer_main) ----------------------- vc1 = nt.nodes.new("ShaderNodeVertexColor") vc1.layer_name = layer_main vc1.location = (-750, 250) bsdf1 = _create_bsdf(style_main, -500, 250) nt.links.new(vc1.outputs["Color"], bsdf1.inputs["Base Color"]) # ---- Determine SECOND branch: either another layer or original shader if layer_blend is None: # Use original shader OR create new according to style_blend if style_blend == "original" and old_shader is not None: branch2_shader = old_shader else: branch2_shader = _create_bsdf(style_blend, -500, 0) if old_shader is not None and style_blend == "plain": # For plain we could adopt old base colour/texture by linking # old_shader's BaseColor into new bsdf if it has one. Keep simple. pass else: vc2 = nt.nodes.new("ShaderNodeVertexColor") vc2.layer_name = layer_blend vc2.location = (-750, 0) bsdf2 = _create_bsdf(style_blend, -500, 0) nt.links.new(vc2.outputs["Color"], bsdf2.inputs["Base Color"]) branch2_shader = bsdf2 # ---- gradient-mask branch ------------------------------------ tc = nt.nodes.new("ShaderNodeTexCoord") tc.location = (-1000, -200) sep = nt.nodes.new("ShaderNodeSeparateXYZ") sep.location = (-800, -200) ramp = nt.nodes.new("ShaderNodeMapRange") ramp.location = (-600, -200) # ramp.inputs["From Min"].default_value = -0.5 # ramp.inputs["From Max"].default_value = 0.5 ramp.inputs["From Min"].default_value = 0.5 ramp.inputs["From Max"].default_value = -0.5 # ramp.inputs["From Min"].default_value = -0.1 ## sharper transition! # ramp.inputs["From Max"].default_value = 0.1 tc.object = empty nt.links.new(tc.outputs["Object"], sep.inputs["Vector"]) nt.links.new(sep.outputs["Z"], ramp.inputs["Value"]) # ---- optional noise modulation ------------------------------ fac_output = ramp.outputs["Result"] # default if noise_edge: noise = nt.nodes.new("ShaderNodeTexNoise") noise.location = (-900, -450) noise.inputs["Scale"].default_value = noise_scale noise.inputs["Roughness"].default_value = 0.0 nt.links.new(tc.outputs["Object"], noise.inputs["Vector"]) sub = nt.nodes.new("ShaderNodeMath") sub.operation = 'SUBTRACT' sub.location = (-700, -350) nt.links.new(noise.outputs["Fac"], sub.inputs[0]) sub.inputs[1].default_value = 0.5 # center noise around 0 mul = nt.nodes.new("ShaderNodeMath") mul.operation = 'MULTIPLY' mul.location = (-550, -350) nt.links.new(sub.outputs[0], mul.inputs[0]) mul.inputs[1].default_value = noise_strength add = nt.nodes.new("ShaderNodeMath") add.operation = 'ADD' add.location = (-400, -350) nt.links.new(ramp.outputs["Result"], add.inputs[0]) nt.links.new(mul.outputs[0], add.inputs[1]) clamp = nt.nodes.new("ShaderNodeClamp") clamp.location = (-250, -350) nt.links.new(add.outputs[0], clamp.inputs[0]) fac_output = clamp.outputs[0] # ---- final mix ------------------------------------------------ mix = nt.nodes.new("ShaderNodeMixShader") mix.location = (-300, 50) # Socket order: shader1 (Fac=0) , shader2 (Fac=1) nt.links.new(bsdf1.outputs[0], mix.inputs[1]) nt.links.new(branch2_shader.outputs[0], mix.inputs[2]) nt.links.new(fac_output, mix.inputs["Fac"]) nt.links.new(mix.outputs[0], out.inputs["Surface"]) # ── in normalise_objects() ────────────────────────────────────────────── def normalize_objects(objs: list[bpy.types.Object], scene_scale: float = 1.0): """ Translate the WHOLE hierarchy so its bbox centre is at the origin, then scale it so the largest side is 1 m (× scene_scale). Returns (scale, centre) so the same transform can be applied to the PLY. """ bb_min, bb_max = scene_bbox(objs) centre = (bb_min + bb_max) / 2 size_vec = bb_max - bb_min if max(size_vec) > 0: scale = scene_scale / max(size_vec) else: scale = scene_scale # Create the transformation matrices T = Matrix.Translation(-centre) S = Matrix.Scale(scale, 4) transform_matrix = S @ T # Apply the transformation to every object (not just root objects) for ob in objs: ob.matrix_world = transform_matrix @ ob.matrix_world # Force update bpy.context.view_layer.update() return float(scale), np.array(centre) # ----------------------------------------------------------------------------- # VOXEL STYLISATION # ----------------------------------------------------------------------------- # def join_meshes(objs: List[bpy.types.Object]) -> bpy.types.Object: # if len(objs)==1: # ob = objs[0] # else: # bpy.ops.object.select_all(action="DESELECT") # for o in objs: o.select_set(True) # bpy.context.view_layer.objects.active = objs[0] # bpy.ops.object.join() # ob = bpy.context.view_layer.objects.active # bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) # return ob # Modify the join_meshes function to split leaves: def join_meshes(objs: List[bpy.types.Object]): leaf_objs = [ob for ob in objs if "leafset" in ob.name.lower()] other_objs = [ob for ob in objs if ob not in leaf_objs] merged = [] if other_objs: bpy.ops.object.select_all(action="DESELECT") for ob in other_objs: ob.select_set(True) bpy.context.view_layer.objects.active = other_objs[0] bpy.ops.object.join() tgt = bpy.context.view_layer.objects.active bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) merged.append(tgt) # apply scale to leaves separately for ob in leaf_objs: bpy.context.view_layer.objects.active = ob bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) merged.append(ob) return merged def voxel_remesh(ob: bpy.types.Object, size=0.02, adaptivity=0.0): print("Remeshing", ob.name) bpy.context.view_layer.objects.active = ob # mod = ob.modifiers.new("VoxelRemesh", type="REMESH") # mod.mode = "VOXEL" # mod.voxel_size = size # mod.adaptivity = adaptivity mod = ob.modifiers.new("BlocksRemesh", type="REMESH") if "leafset" in ob.name.lower(): # mod.mode = "BLOCKS" # mod.octree_depth = 15 mod.mode = "VOXEL" mod.voxel_size = 0.008 mod.adaptivity = 0.0 else: mod.mode = "BLOCKS" mod.octree_depth = 7 # mod.scale = 0.9 # mod.scale = 0.99 # if "leafset" in ob.name.lower(): # return bpy.ops.object.modifier_apply(modifier=mod.name) # ----------------------------------------------------------------------------- # PLY & KD-TREE # ----------------------------------------------------------------------------- def load_semantic_ply(ply_path, normalize=True, is_dreamphysics=False): """Load semantic colors and positions from the PLY file.""" ply_data = PlyData.read(ply_path) vertex_elem = ply_data['vertex'] # PlyElement vertex_data = vertex_elem.data # <-- structured NumPy array # positions positions = np.column_stack( (vertex_data['x'], vertex_data['y'], vertex_data['z'])) features = {} # Discrete features (labels) if 'part_label' in vertex_data.dtype.names: features['part_label'] = vertex_data['part_label'] if 'material_id' in vertex_data.dtype.names: features['material_id'] = vertex_data['material_id'] # Continuous features if 'E' in vertex_data.dtype.names: features['E'] = vertex_data['E'] if 'density' in vertex_data.dtype.names: features['density'] = vertex_data['density'] if 'nu' in vertex_data.dtype.names: features['nu'] = vertex_data['nu'] if is_dreamphysics: features['E'] *= 1e7 if normalize: if 'E' in features: features['E'] = np.log(features['E']) if 'density' in features: features['density'] = np.log(features['density']) return positions, features # ----------------------------------------------------------------------------- # COLORMAP SYSTEM # ----------------------------------------------------------------------------- # Built-in colormaps for when matplotlib is not available BUILTIN_COLORMAPS = { 'blue': [ (0.02, 0.12, 0.24), # Dark blue (0.00, 0.41, 0.71), # Medium blue (0.00, 0.78, 1.00), # Light cyan ], 'viridis': [ (0.267, 0.005, 0.329), # Dark purple (0.128, 0.565, 0.551), # Teal (0.993, 0.906, 0.144), # Yellow ], 'plasma': [ (0.050, 0.030, 0.528), # Dark blue (0.796, 0.280, 0.469), # Pink (0.940, 0.975, 0.131), # Yellow ], 'inferno': [ (0.001, 0.000, 0.014), # Black (0.735, 0.215, 0.330), # Red (0.988, 1.000, 0.645), # Yellow-white ], 'coolwarm': [ (0.230, 0.299, 0.754), # Blue (0.865, 0.865, 0.865), # Gray (0.706, 0.016, 0.150), # Red ], 'turbo': [ (0.190, 0.072, 0.583), # Purple (0.100, 0.800, 0.300), # Green (0.730, 0.150, 0.095), # Red ], } def _lerp(a, b, t): """Linear interpolation between two colors.""" return tuple(x + (y - x) * t for x, y in zip(a, b)) def _sigmoid(x, k=8.0): """Sigmoid function for non-linear mapping.""" if k == 0: return x # Linear mapping return 1 / (1 + np.exp(-k * (x - 0.5))) def builtin_colormap(t_norm: float, colormap_name: str, gamma: float = 8.0) -> tuple[float, float, float]: """Apply a built-in colormap to a normalized value.""" if colormap_name not in BUILTIN_COLORMAPS: print(f"Warning: Unknown colormap '{colormap_name}', using 'blue'") colormap_name = 'blue' colors = BUILTIN_COLORMAPS[colormap_name] t = _sigmoid(max(0, min(1, t_norm)), gamma) # Interpolate between colors n_colors = len(colors) if n_colors == 2: return _lerp(colors[0], colors[1], t) elif n_colors == 3: if t < 0.5: return _lerp(colors[0], colors[1], t / 0.5) else: return _lerp(colors[1], colors[2], (t - 0.5) / 0.5) else: # General case for more colors segment_size = 1.0 / (n_colors - 1) idx = int(t / segment_size) if idx >= n_colors - 1: return colors[-1] local_t = (t - idx * segment_size) / segment_size return _lerp(colors[idx], colors[idx + 1], local_t) def load_clip_ply(ply_path: str | Path) -> Tuple[np.ndarray, np.ndarray]: """Return Nx3 positions and Nx3 RGB float colours (0‑1).""" ply = PlyData.read(ply_path) v = ply["vertex"].data xyz = np.column_stack((v["x"], v["y"], v["z"])) if {"red", "green", "blue"}.issubset(v.dtype.names): rgb = np.column_stack((v["red"], v["green"], v["blue"])) / 255.0 else: raise ValueError("PLY is missing colour fields (red/green/blue)") return xyz.astype(np.float32), rgb.astype(np.float32) def build_kdtree(pts: np.ndarray) -> kdtree.KDTree: kd = kdtree.KDTree(len(pts)) for i, p in enumerate(pts): kd.insert(p, i) kd.balance() return kd def paint_mesh_with_clip( mesh_objs: List[bpy.types.Object], clip_pos: np.ndarray, clip_rgb: np.ndarray, radius: float | None = None, kd_max: int = 5, *, layer_name: str = "CLIP_PCA", ) -> None: """Fill *layer_name* vertex-colour layer with colours from CLIP PCA point-cloud.""" # Build KD-tree once kd = build_kdtree(clip_pos) # Stats total_verts = 0 mapped_verts = 0 for ob in mesh_objs: me = ob.data if layer_name not in me.vertex_colors: me.vertex_colors.new(name=layer_name) vcol = me.vertex_colors[layer_name] # Ensure layer length matches loops if len(vcol.data) != len(me.loops): vcol.data.foreach_set("color", [0.0] * len(me.loops) * 4) # RGBA zeros for poly in me.polygons: for li in poly.loop_indices: total_verts += 1 vi = me.loops[li].vertex_index wco = ob.matrix_world @ me.vertices[vi].co nearest = kd.find((wco.x, wco.y, wco.z)) # (co, idx, dist) assert nearest is not None, "No nearest point found" if nearest is not None: col = clip_rgb[nearest[1]] vcol.data[li].color = (*col.tolist(), 1.0) mapped_verts += 1 # Print diagnostics print("\n[CLIP-PCA Colour Transfer]") print(f" Point-cloud points : {len(clip_pos):6d}") print(f" Number of vertices : {total_verts}") print(f" Mesh loops : {total_verts:6d}") print( f" Loops coloured : {mapped_verts:6d} ({mapped_verts/total_verts*100:5.1f} %)\n" ) def paint_mesh_with_feature(mesh_objs, clip_pos, E_vals, kd_max=5, radius=None, vmin=None, vmax=None, colormap="plasma", palette=None, *, layer_name: str = "CLIP_PCA"): # Print scene bounds for debugging print("\n[DEBUG] Scene bounds:") bb_min_mesh, bb_max_mesh = scene_bbox(mesh_objs) print(f"Mesh bounds: min={bb_min_mesh}, max={bb_max_mesh}") print( f"PLY bounds: min={clip_pos.min(axis=0)}, max={clip_pos.max(axis=0)}") # Build KD tree ---------------------------------------------------------- kd = kdtree.KDTree(len(clip_pos)) for i, p in enumerate(clip_pos): kd.insert(p, i) kd.balance() if radius is None: bb = clip_pos.ptp(0) # diag of point cloud radius = 0.03 * np.linalg.norm(bb) print(f"[DEBUG] Using KD radius: {radius:.6f}") # Precompute colormap LUT if continuous lut = None if palette is None: cmap = cm.get_cmap(colormap) lut = (cmap(np.linspace(0, 1, 256))[:, :3]).astype(np.float32) # Ensure vmin and vmax are calculated based on the full E_vals if not provided # This was the original behavior and is generally correct for consistent coloring. current_vmin = np.min(E_vals) if vmin is None else vmin current_vmax = np.max(E_vals) if vmax is None else vmax scale = 255.0 / (current_vmax - current_vmin + 1e-12) # Track distance stats max_dist_overall = 0.0 total_dist_overall = 0.0 count_overall = 0 skipped_overall = 0 for ob in mesh_objs: me = ob.data if layer_name not in me.vertex_colors: me.vertex_colors.new(name=layer_name) vcol = me.vertex_colors[layer_name] num_verts = len(me.vertices) # Array to store the calculated feature value for each vertex of the current object vertex_feature_values = np.zeros(num_verts, dtype=np.float32) # --- Step 1: Calculate average feature value for each vertex --- for vert_idx, vert in enumerate(me.vertices): wco = ob.matrix_world @ vert.co hits = kd.find_n( wco, kd_max) # kd.find_range(wco, radius) # Alternative if hits: dist = hits[0][2] # Distance to nearest point max_dist_overall = max(max_dist_overall, dist) total_dist_overall += dist count_overall += 1 # Optional: Skip if distance is too large, though this might leave uncolored vertices # if dist > radius * 2: # Example threshold # skipped_overall += 1 # vertex_feature_values[vert_idx] = np.nan # Or some default value # continue # Take feature values from E_vals based on indices from KD-tree hits feature_samples = [ E_vals[h[1]] for h in hits if h[1] < len(E_vals) ] if feature_samples: vertex_feature_values[vert_idx] = np.mean(feature_samples) else: # No valid hits (e.g. all hit indices out of bounds for E_vals) # or no hits at all if find_range was used and found none. vertex_feature_values[ vert_idx] = current_vmin if palette is None else 0 # Default to min or first label else: # No points found by KDTree (e.g. if find_range used and found none) skipped_overall += 1 vertex_feature_values[ vert_idx] = current_vmin if palette is None else 0 # Default value # --- Step 2: Vectorized color calculation --- v_colors_rgb = np.zeros((num_verts, 3), dtype=np.float32) if palette is None: # Continuous colormap if lut is not None: # Should always be true if palette is None # Vectorized scaling and LUT lookup indices = np.clip( ((vertex_feature_values - current_vmin) * scale), 0, 255).astype(np.int32) v_colors_rgb = lut[indices] else: # Discrete palette (for part_label) # Ensure labels are integers for palette lookup int_labels = vertex_feature_values.astype(np.int32) # Handle potential out-of-bounds labels if palette is a list/array if isinstance(palette, dict): v_colors_rgb = np.array([ palette.get(lbl, (0, 0, 0)) for lbl in int_labels ]) # Default to black if label not in dict elif isinstance(palette, list): default_color_arr = np.array([0.0, 0.0, 0.0]) # Default color (black) # Efficiently create colors array safe_labels = np.clip(int_labels, 0, len(palette) - 1) v_colors_rgb = np.array(palette)[safe_labels] # Identify out-of-bound original labels and set them to default (not strictly necessary with np.clip if that behavior is fine) # out_of_bounds_mask = (int_labels < 0) | (int_labels >= len(palette)) # v_colors_rgb[out_of_bounds_mask] = default_color_arr else: # Fallback for unexpected palette type v_colors_rgb = np.array( [distinct_hsv_palette(10)[0]] * num_verts) # Default to first color of HSV palette # Combine with alpha channel v_colors_final = np.ones((num_verts, 4), dtype=np.float32) v_colors_final[:, :3] = v_colors_rgb # --- Step 3: Broadcast vertex → loops in one go --- flat_colors = np.empty(len(me.loops) * 4, dtype=np.float32) loop_vertex_indices = np.array( [loop.vertex_index for loop in me.loops]) flat_colors = v_colors_final[loop_vertex_indices].ravel() vcol.data.foreach_set("color", flat_colors) # Print distance statistics (overall for all mesh objects processed) if count_overall > 0: avg_dist_overall = total_dist_overall / count_overall print(f"\n[DEBUG] Overall Distance statistics:") print(f"Max distance to nearest point: {max_dist_overall:.6f}") print(f"Average distance to nearest point: {avg_dist_overall:.6f}") print(f"Vertices skipped (no KD hits or too far): {skipped_overall}") print(f"Total vertices processed for KD search: {count_overall}") def distinct_hsv_palette(n, seed=42): """Generate n visually-distinct colors that are vibrant but not oversaturated. The colors are similar to those in the reference image, but slightly darker for better contrast against a pure white background.""" random.seed(seed) # Define a custom color palette inspired by the reference image # These colors work well under white lighting and white backgrounds # Each color is now slightly darker for better contrast base_colors = [ (0.0, 0.64, 0.73), # Darker Cyan (0.686, 0.765, 0.149), # Specific Yellowish-Green (#afc326) from user (0.8, 0.25, 0.25), # Darker Red (0.85, 0.4, 0.85), # Darker Pink (0.212, 0.400, 0.221 ), # Specific Green from reference image (monster head) - Even Darker (0.15, 0.3, 0.85), # Darker Blue (0.37, 0.17, 0.85), # Darker Purple (0.8, 0.5, 0.0), # Darker Orange (0.85, 0.68, 0.0), # Darker Yellow (0.4, 0.75, 0.75), # Darker Teal (0.68, 0.5, 0.86), # Darker Lavender (0.78, 0.5, 0.3), # Darker Coral ] return base_colors[:n] def get_color_for_part_label(part_label: int, num_part_label: int = 8, *, palette_type: str = 'default'): """Return an RGB colour (0-1) for the given *part_label*. If *palette_type* is 'default' the legacy *distinct_hsv_palette* is used. If 'elasticity' or 'plasticity', pre-defined warm/cool palettes are used so that the two groups cannot clash even if label IDs overlap. """ if palette_type != 'default' and palette_type in PALETTE_MAP: palette = PALETTE_MAP[palette_type] if part_label >= len(palette): # Fallback to HSV palette if we run out of predefined colours palette = distinct_hsv_palette(num_part_label) else: palette = distinct_hsv_palette(num_part_label) assert part_label < len( palette ), f"Part label {part_label} is out of range for palette {palette_type} (len={len(palette)})" return palette[part_label] def centre_and_scale(scene, mesh_objs, scene_scale=1.0): bb_min, bb_max = scene_bbox(mesh_objs) centre = (bb_min + bb_max) / 2 size_vec = bb_max - bb_min scale = scene_scale / max(size_vec) # longest edge → 1 S = Matrix.Scale(scale, 4) # uniform scale matrix for ob in scene.objects: if ob.parent is None: # root nodes only mw = ob.matrix_world mw.translation = (mw.translation - centre) * scale ob.matrix_world = S @ mw # scale rotations too bpy.context.view_layer.update() return float(scale), np.array(centre) # ----------------------------------------------------------------------------- # SHINY VERTEX-COLOUR MATERIAL # ----------------------------------------------------------------------------- def make_glossy_vcol(name="ClipPCA_Glossy"): m = bpy.data.materials.new(name) m.use_nodes = True nt = m.node_tree nt.nodes.clear() vc = nt.nodes.new('ShaderNodeVertexColor') vc.layer_name = 'CLIP_PCA' vc.location = (-300, 0) bsdf = nt.nodes.new('ShaderNodeBsdfPrincipled') bsdf.location = (0, 0) out = nt.nodes.new('ShaderNodeOutputMaterial') out.location = (250, 0) nt.links.new(vc.outputs['Color'], bsdf.inputs['Base Color']) nt.links.new(bsdf.outputs['BSDF'], out.inputs['Surface']) bsdf.inputs["Roughness"].default_value = 0.0 bsdf.inputs["Specular IOR Level"].default_value = 1.0 ## make more metalic bsdf.inputs["Metallic"].default_value = 0.1 return m def render_semantic_glb(semantic_glb_path, output_dir, render_scene_scale=1.0, resolution=512, transparent=False, obj_id=None, camera_id=None, rotate_video=False, focal_length=None, views=120, data_dir=None, blend_file_path=None): """Generate a single image render of the semantic GLB using render_blender.py.""" print(f"Rendering semantic GLB: {semantic_glb_path}") os.makedirs(f"{output_dir}/{semantic_glb_path.stem}", exist_ok=True) # Run render_blender.py with appropriate arguments render_cmd = f'blender -b -P pixie/blender/render_glb.py -- ' render_cmd += f'--blend_file_path "{blend_file_path}" ' render_cmd += f'--obj "{semantic_glb_path}" ' render_cmd += f'--output_folder "{output_dir}/{semantic_glb_path.stem}" ' num_views = views if rotate_video else 1 render_cmd += f'--views {num_views} ' render_cmd += f'--resolution {resolution} ' render_cmd += f'--input_model glb ' render_cmd += f'--scene_scale {render_scene_scale} ' if transparent: render_cmd += f'--transparent ' if rotate_video: render_cmd += '--rotate_video ' if obj_id is not None: render_cmd += f'--obj_id {obj_id} ' if camera_id is not None: render_cmd += f'--camera_id {camera_id} ' if focal_length is not None: render_cmd += f'--focal_length {focal_length} ' if data_dir is not None: render_cmd += f'--data_dir "{data_dir}" ' print(f"Running render command: {render_cmd}") subprocess.run(render_cmd, shell=True, check=True) # ----------------------------------------------------------------------------- # MAIN # ----------------------------------------------------------------------------- def process_single_object(glb_path: Path, pred_ply: Path, clip_pred_ply: Path, out_dir: Path, args, global_vmin: float = None, global_vmax: float = None, colormap_name: str = 'blue', is_dreamphysics: bool = False, render_scene_scale: float = 1.0, obj_id: str = None) -> tuple[float, float]: """Process a single object and return its min/max E values.""" print(f"\n[PROCESSING] Object: {glb_path}") # Check if output already exists colormap_suffix = f"_{args.colormap}" if args.colormap != "blue" else "" # out_glb = f"{glb_path.stem}_mat_{args.feature}_pred_voxelized{colormap_suffix}.glb" out_glb = f"{args.feature}.glb" if is_dreamphysics: out_glb = out_glb.replace(".glb", "_dreamphysics.glb") out_glb = out_dir / out_glb if out_glb.exists() and not args.overwrite: print(f"[SKIP] Output GLB already exists: {out_glb}") # Still do rendering render_semantic_glb(out_glb, out_dir, render_scene_scale=render_scene_scale, transparent=args.transparent, obj_id=obj_id, camera_id=args.camera_id, rotate_video=args.rotate_video, focal_length=args.focal_length, views=args.views, data_dir=args.data_dir, blend_file_path=args.blend_file_path) # Return dummy values since we didn't process the feature return 0.0, 1.0 # Clear scene for this object clear_scene() # Import print(f"[IMPORT] {glb_path}") ext = glb_path.suffix.lower() if ext == ".glb": bpy.ops.import_scene.gltf(filepath=str(glb_path), merge_vertices=True) elif ext == ".fbx": bpy.ops.import_scene.fbx(filepath=str(glb_path)) elif ext == ".obj": bpy.ops.import_scene.obj(filepath=str(glb_path)) else: raise ValueError("Unsupported format") mesh_objs = [o for o in bpy.context.scene.objects if o.type == "MESH"] if not mesh_objs: raise RuntimeError("No mesh!") # Stylise voxels if args.stylise == "voxels": if not args.keep_separate: mesh_objs = join_meshes(mesh_objs) else: for m in mesh_objs: bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) for m in mesh_objs: voxel_remesh(m, args.voxel_size, args.voxel_adaptivity) # Normalize mesh to unit cube if requested if args.normalize: bb_min_before, bb_max_before = scene_bbox(mesh_objs) print(f"\n[DEBUG] Mesh bounds BEFORE normalization: min={bb_min_before}, max={bb_max_before}, size={bb_max_before-bb_min_before}") print("[NORMALIZE] Normalizing mesh to unit cube...") scale_factor, centre = normalize_objects(mesh_objs, scene_scale=args.scene_scale) print(f"Normalized with scale_factor: {scale_factor}, centre: {centre}") # Update scene after normalization bpy.context.view_layer.update() bb_min_after, bb_max_after = scene_bbox(mesh_objs) print(f"[DEBUG] Mesh bounds AFTER normalization: min={bb_min_after}, max={bb_max_after}, size={bb_max_after-bb_min_after}\n") if args.feature != "rgb": # Load PLY + paint print(f"[PLY] {pred_ply}") if args.feature != "clip_pca": clip_pos, all_features = load_semantic_ply( pred_ply, normalize=args.log_normalize_feature, is_dreamphysics=is_dreamphysics) feature = all_features[args.feature] # If global min/max not provided, return local ones for global computation if global_vmin is None or global_vmax is None: print(f"Returning local min/max: {feature.min()}, {feature.max()}") return feature.min(), feature.max() palette = None if args.feature == "part_label": ## get all possible labels (not only the ones in the data) palette = { lbl: get_color_for_part_label(int(lbl), palette_type=args.label_palette) for lbl in range(8) } elif args.feature == "material_id": ## get all possible material IDs (not only the ones in the data) palette = { lbl: get_color_for_part_label(int(lbl), palette_type=args.label_palette) for lbl in range(8) } print(f"Palette: {palette}") # Paint with global values if args.feature == "clip_pca": clip_pos, clip_rgb = load_clip_ply(clip_pred_ply) kd = build_kdtree(clip_pos) paint_mesh_with_clip(mesh_objs, clip_pos, clip_rgb, radius=args.radius, kd_max=args.kd_max) else: paint_mesh_with_feature( mesh_objs, clip_pos, feature, radius=args.radius, kd_max=args.kd_max if args.feature not in ["part_label", "material_id"] else 1, colormap=colormap_name, vmin=global_vmin, vmax=global_vmax, palette=palette, layer_name="CLIP_PCA") # Handle blending -------------------------------------------------- if args.blend: if args.blend_feature.lower() == "rgb": # Legacy behaviour – blend with original material make_blended_material(mesh_objs, layer_main="CLIP_PCA", layer_blend=None, style_main=args.material_types[0], style_blend=args.material_types[1], noise_edge=args.noise_edge, noise_scale=args.noise_scale, noise_strength=args.noise_strength) else: # ------------------------------------------------------- # 1) Paint the SECOND feature onto a new vertex-colour layer # ------------------------------------------------------- blend_layer_name = f"BLEND_{args.blend_feature.upper()}" if args.blend_feature == "clip_pca": clip_pos2, clip_rgb2 = load_clip_ply(clip_pred_ply) paint_mesh_with_clip( mesh_objs, clip_pos2, clip_rgb2, radius=args.radius, kd_max=args.kd_max, layer_name=blend_layer_name, ) else: # Load semantic PLY if not already # Re-use previously loaded clip_pos if available. if args.feature != "clip_pca" and 'clip_pos' in locals(): clip_pos2 = clip_pos all_features2 = all_features # already loaded else: clip_pos2, all_features2 = load_semantic_ply( pred_ply, normalize=args.log_normalize_feature, is_dreamphysics=is_dreamphysics, ) if args.blend_feature not in all_features2: raise ValueError( f"blend_feature '{args.blend_feature}' not found in PLY {pred_ply}" ) feature2 = all_features2[args.blend_feature] palette2 = None if args.blend_feature == "part_label": palette2 = { lbl: get_color_for_part_label( int(lbl), palette_type=args.label_palette) for lbl in range(8) } elif args.blend_feature == "material_id": palette2 = { lbl: get_color_for_part_label( int(lbl), palette_type=args.label_palette) for lbl in range(8) } paint_mesh_with_feature( mesh_objs, clip_pos2, feature2, radius=args.radius, kd_max=args.kd_max if args.blend_feature not in ["part_label", "material_id"] else 1, colormap=colormap_name, vmin=feature2.min(), vmax=feature2.max(), palette=palette2, layer_name=blend_layer_name, ) # ------------------------------------------------------- # 2) Create blended material between the TWO feature layers # ------------------------------------------------------- make_blended_material(mesh_objs, layer_main="CLIP_PCA", layer_blend=blend_layer_name, style_main=args.material_types[0], style_blend=args.material_types[1], noise_edge=args.noise_edge, noise_scale=args.noise_scale, noise_strength=args.noise_strength) else: print("[MATERIAL] assigning glossy VCol…") # If no blending, we still respect material_types[0] if args.material_types[0] == "glossy": mat = make_glossy_vcol() else: mat = bpy.data.materials.new("PlainVCol") mat.use_nodes = True nt = mat.node_tree nt.nodes.clear() vc = nt.nodes.new('ShaderNodeVertexColor') vc.layer_name = 'CLIP_PCA' vc.location = (-200, 0) bsdf = nt.nodes.new('ShaderNodeBsdfPrincipled') bsdf.location = (50, 0) nt.links.new(vc.outputs['Color'], bsdf.inputs['Base Color']) out = nt.nodes.new('ShaderNodeOutputMaterial') out.location = (250, 0) nt.links.new(bsdf.outputs['BSDF'], out.inputs['Surface']) for ob in mesh_objs: ob.data.materials.clear() ob.data.materials.append(mat) if args.feature == "rgb" or args.feature == "clip_pca": feature = np.array([0.0]) ## dummy # Export colored print(f"[EXPORT] {out_glb}") # When exporting the plain RGB asset we *must not* request the exporter to write # vertex-colour data – the original GLB already contains its own materials # (textures, vertex colours, etc.). Forcing `export_vertex_color='MATERIAL'` # would make the exporter generate a new vertex-colour layer filled with the # default white colour, effectively wiping the original appearance. We only # need this flag when we have explicitly painted a new colour layer (i.e. # for non-RGB features). export_vcol_flag = "MATERIAL" if args.feature != "rgb" else "NONE" bpy.ops.export_scene.gltf( filepath=str(out_glb), export_format="GLB", export_materials="EXPORT", export_vertex_color=export_vcol_flag, export_normals=True, export_animations=False, ) if args.save_blend: blend_path = out_dir / f"{glb_path.stem}_mat_{args.feature}{'_vox' if args.stylise=='voxels' else ''}.blend" print(f"[BLEND] saving scene → {blend_path}") bpy.ops.wm.save_as_mainfile( filepath=str(blend_path), check_existing=False, # overwrite silently if --overwrite compress=False) # set True if you prefer smaller files # Render if needed render_semantic_glb(out_glb, out_dir, render_scene_scale=render_scene_scale, transparent=args.transparent, obj_id=obj_id, camera_id=args.camera_id, rotate_video=args.rotate_video, focal_length=args.focal_length, views=args.views, data_dir=args.data_dir, blend_file_path=args.blend_file_path) return feature.min(), feature.max() def main(): args = parse_argv() out_dir = ensure_dir(args.output_dir) # Handle multiple objects if args.glb_paths: glb_paths = [Path(p) for p in args.glb_paths] if len(glb_paths) != len(args.obj_ids): raise ValueError( "Number of GLB paths must match number of object IDs") else: print(f"Fetching {len(args.obj_ids)} Objaverse assets...") mapping = objaverse.load_objects(uids=args.obj_ids) glb_paths = [Path(mapping[obj_id]) for obj_id in args.obj_ids] # Handle missing clip_pred_ply - if not provided, use None for each object if not args.clip_pred_ply: args.clip_pred_ply = [None] * len(args.obj_ids) # First pass: compute global min/max E values print("\n[PASS 1] Computing global E value range...") global_vmin = args.vmin global_vmax = args.vmax if args.vmin is None and args.vmax is None: global_vmin, global_vmax = float('inf'), float('-inf') print(f"args.obj_ids: {args.obj_ids}") print(f"glb_paths: {glb_paths}") print(f"args.pred_ply: {args.pred_ply}") print(f"args.clip_pred_ply: {args.clip_pred_ply}") print(f"args.is_dreamphysics: {args.is_dreamphysics}") print(f"args.render_scene_scale: {args.render_scene_scale}") assert len(args.obj_ids) == len(glb_paths) == len(args.pred_ply) == len(args.clip_pred_ply) == len(args.is_dreamphysics) == len(args.render_scene_scale), f"Number of objects, GLB paths, pred PLYs, clip pred PLYs, is dreamphysics, and render scene scales must match" for obj_id, glb_path, pred_ply_path, clip_pred_ply_path, is_dp, r_scale in zip( args.obj_ids, glb_paths, args.pred_ply, args.clip_pred_ply, args.is_dreamphysics, args.render_scene_scale): pred_ply = Path(pred_ply_path) print(f">>>>> Processing object: {obj_id}") local_min, local_max = process_single_object( glb_path, pred_ply, clip_pred_ply_path, out_dir, args, is_dreamphysics=is_dp, render_scene_scale=r_scale, obj_id=obj_id) global_vmin = min(global_vmin, local_min) global_vmax = max(global_vmax, local_max) print( f"\n[INFO] Global E value range: {global_vmin:.3f} to {global_vmax:.3f}" ) # Second pass: apply consistent coloring print("\n[PASS 2] Applying consistent coloring across all objects...") assert len(args.obj_ids) == len(glb_paths) == len(args.pred_ply) == len(args.clip_pred_ply) == len(args.is_dreamphysics) == len(args.render_scene_scale), f"Number of objects, GLB paths, pred PLYs, clip pred PLYs, is dreamphysics, and render scene scales must match" for obj_id, glb_path, pred_ply_path, clip_pred_ply_path, is_dp, r_scale in zip( args.obj_ids, glb_paths, args.pred_ply, args.clip_pred_ply, args.is_dreamphysics, args.render_scene_scale): pred_ply = Path(pred_ply_path) print(f"Processing object: {obj_id}") process_single_object(glb_path, pred_ply, clip_pred_ply_path, out_dir, args, global_vmin=global_vmin, global_vmax=global_vmax, colormap_name=args.colormap, is_dreamphysics=is_dp, render_scene_scale=r_scale, obj_id=obj_id) print("\n[DONE] All objects processed successfully!") if __name__ == "__main__": main() ================================================ FILE: pixie/blender/generate_blendernerf_data.py ================================================ import argparse import math import os import random import sys import time import urllib.request from typing import Tuple import bpy from mathutils import Vector import shutil import json import objaverse import socket def enable_cuda_devices(): prefs = bpy.context.preferences cprefs = prefs.addons['cycles'].preferences cprefs.get_devices() # Attempt to set GPU device types if available for compute_device_type in ('CUDA', 'OPENCL', 'NONE'): try: cprefs.compute_device_type = compute_device_type print("Compute device selected: {0}".format(compute_device_type)) break except TypeError: pass # Any CUDA/OPENCL devices? acceleratedTypes = ['CUDA', 'OPENCL'] accelerated = any(device.type in acceleratedTypes for device in cprefs.devices) print('Accelerated render = {0}'.format(accelerated)) # If we have CUDA/OPENCL devices, enable only them, otherwise enable # all devices (assumed to be CPU) print(cprefs.devices) for device in cprefs.devices: device.use = not accelerated or device.type in acceleratedTypes print('Device enabled ({type}) = {enabled}'.format(type=device.type, enabled=device.use)) return accelerated enable_cuda_devices() def get_default_output_dir(format_type): """Determine the default output directory based on the format.""" home_dir = os.path.expanduser("~") if format_type == "NGP": return os.path.join(home_dir, "code", "instant-ngp", "data") else: # NERF format for gaussian splatting return os.path.join(home_dir, "code", "gaussian-splatting", "data") parser = argparse.ArgumentParser() parser.add_argument( "--obj_id", type=str, help="Objaverse object ID to process", ) parser.add_argument( "--obj_path", type=str, help="Path to the object file (alternative to obj_id)", ) parser.add_argument("--output_dir", type=str, default=None, help="Path to output directory. If not provided, will use format-specific default location.") parser.add_argument( "--engine", type=str, default="CYCLES", choices=["CYCLES", "BLENDER_EEVEE_NEXT", "BLENDER_WORKBENCH"] ) parser.add_argument("--num_images", type=int, default=12) parser.add_argument("--camera_dist_min", type=float, default=1.0, help="Minimum camera distance") parser.add_argument("--camera_dist_max", type=float, default=1.4, help="Maximum camera distance") # Keep camera_dist for backward compatibility parser.add_argument("--camera_dist", type=float, default=1.2, help="Camera distance (deprecated, use min/max instead)") parser.add_argument("--format", type=str, default="NERF", choices=["NERF", "NGP"]) parser.add_argument("--transparent_bg", action='store_true', help="Render with transparent background") parser.add_argument("--scene_scale", type=float, default=1.0, help="Scale factor to apply after normalization") parser.add_argument("--blender_nerf_addon_path", type=str, required=True, help="Path to the BlenderNeRF addon zip file") argv = sys.argv[sys.argv.index("--") + 1 :] args = parser.parse_args(argv) if args.obj_id is None and args.obj_path is None: raise ValueError("Either --obj_id or --obj_path must be provided") # If obj_id is provided, get the object path from Objaverse if args.obj_id is not None: print(f"Looking up object path for ID: {args.obj_id}") objects = objaverse.load_objects(uids=[args.obj_id]) if not objects or args.obj_id not in objects: raise ValueError(f"Could not find object with ID: {args.obj_id}") args.obj_path = objects[args.obj_id] print(f"Found object path: {args.obj_path}") # Set the output directory if not provided if args.output_dir is None: args.output_dir = get_default_output_dir(args.format) print(f"Using default output directory: {args.output_dir}") # Install the BlenderNeRF addon print(f"Installing BlenderNeRF addon from: {args.blender_nerf_addon_path}") bpy.ops.preferences.addon_install(filepath=args.blender_nerf_addon_path, overwrite=True) bpy.ops.preferences.addon_enable(module='BlenderNeRF-main-custom') context = bpy.context scene = context.scene render = scene.render ## configure rendering settings render.engine = args.engine render.image_settings.file_format = "PNG" render.image_settings.color_mode = "RGBA" # render.resolution_x = 800 # render.resolution_y = 800 render.resolution_x = 512 render.resolution_y = 512 render.resolution_percentage = 100 scene.cycles.device = "GPU" scene.cycles.samples = 32 scene.cycles.diffuse_bounces = 1 scene.cycles.glossy_bounces = 1 scene.cycles.transparent_max_bounces = 3 scene.cycles.transmission_bounces = 3 scene.cycles.filter_width = 0.01 scene.cycles.use_denoising = True ### extra settings to ensure pure white background for gaussian splatting... # scene.world.light_settings.use_ambient_occlusion = False scene.world.use_nodes = True scene.view_settings.view_transform = 'Standard' scene.view_settings.look = 'None' scene.render.film_transparent = args.transparent_bg def sample_point_on_sphere(radius: float) -> Tuple[float, float, float]: theta = random.random() * 2 * math.pi phi = math.acos(2 * random.random() - 1) return ( radius * math.sin(phi) * math.cos(theta), radius * math.sin(phi) * math.sin(theta), radius * math.cos(phi), ) def add_lighting() -> None: """Add a professional studio-like lighting setup with multiple area lights.""" # Delete the default light if "Light" in bpy.data.objects: bpy.data.objects["Light"].select_set(True) bpy.ops.object.delete() # Clear any existing lights for obj in bpy.data.objects: if obj.type == 'LIGHT': bpy.data.objects.remove(obj, do_unlink=True) # Create a three-point lighting setup # 1. Key light (main light) - brightest, from front-right bpy.ops.object.light_add(type="AREA", location=(2, -2, 2)) key_light = bpy.context.object key_light.name = "Key_Light" key_light.data.energy = 500 key_light.data.size = 5 key_light.rotation_euler = (0.6, 0.2, 0.8) # Angle toward the subject # 2. Fill light - softer light from opposite side to fill shadows bpy.ops.object.light_add(type="AREA", location=(-2, -1, 1)) fill_light = bpy.context.object fill_light.name = "Fill_Light" fill_light.data.energy = 200 # Less intense than key light fill_light.data.size = 7 # Larger for softer light fill_light.rotation_euler = (0.5, -0.2, -0.8) # 3. Rim/Back light - creates separation from background bpy.ops.object.light_add(type="AREA", location=(0, 3, 2)) rim_light = bpy.context.object rim_light.name = "Rim_Light" rim_light.data.energy = 300 rim_light.data.size = 4 rim_light.rotation_euler = (0.8, 0, 0) # Point down at the back of subject # 4. Top light for general fill bpy.ops.object.light_add(type="AREA", location=(0, 0, 4)) top_light = bpy.context.object top_light.name = "Top_Light" top_light.data.energy = 150 top_light.data.size = 10 top_light.rotation_euler = (0, 0, 0) # Point straight down if not args.transparent_bg: world = bpy.data.worlds['World'] world.use_nodes = True bg_node = world.node_tree.nodes['Background'] bg_node.inputs[0].default_value = (0.8, 0.8, 0.8, 1.0) ## gray bg_node.inputs[1].default_value = 1.0 # Full strength def reset_scene() -> None: """Resets the scene to a clean state.""" # delete everything that isn't part of a camera or a light for obj in bpy.data.objects: if obj.type not in {"CAMERA", "LIGHT"}: bpy.data.objects.remove(obj, do_unlink=True) # delete all the materials for material in bpy.data.materials: bpy.data.materials.remove(material, do_unlink=True) # delete all the textures for texture in bpy.data.textures: bpy.data.textures.remove(texture, do_unlink=True) # delete all the images for image in bpy.data.images: bpy.data.images.remove(image, do_unlink=True) # load the model def load_object(obj_path: str) -> None: """Loads a 3D model into the scene.""" if obj_path.endswith(".glb"): bpy.ops.import_scene.gltf(filepath=obj_path, merge_vertices=True) elif obj_path.endswith(".fbx"): bpy.ops.import_scene.fbx(filepath=obj_path) elif obj_path.endswith(".obj"): bpy.ops.import_scene.obj(filepath=obj_path) else: raise ValueError(f"Unsupported file type: {obj_path}") def scene_bbox(single_obj=None, ignore_matrix=False): bbox_min = (math.inf,) * 3 bbox_max = (-math.inf,) * 3 found = False for obj in scene_meshes() if single_obj is None else [single_obj]: found = True for coord in obj.bound_box: coord = Vector(coord) if not ignore_matrix: coord = obj.matrix_world @ coord bbox_min = tuple(min(x, y) for x, y in zip(bbox_min, coord)) bbox_max = tuple(max(x, y) for x, y in zip(bbox_max, coord)) if not found: raise RuntimeError("no objects in scene to compute bounding box for") return Vector(bbox_min), Vector(bbox_max) def scene_root_objects(): for obj in bpy.context.scene.objects.values(): if not obj.parent: yield obj def scene_meshes(): for obj in bpy.context.scene.objects.values(): if isinstance(obj.data, (bpy.types.Mesh)): yield obj def normalize_scene(): bbox_min, bbox_max = scene_bbox() scale = 1 / max(bbox_max - bbox_min) for obj in scene_root_objects(): obj.scale = obj.scale * scale * args.scene_scale # Apply scale to matrix_world. bpy.context.view_layer.update() bbox_min, bbox_max = scene_bbox() offset = -(bbox_min + bbox_max) / 2 for obj in scene_root_objects(): obj.matrix_world.translation += offset bpy.ops.object.select_all(action="DESELECT") def setup_manual_camera(): cam = scene.objects["Camera"] cam.location = (0, 1.2, 0) cam.data.lens = 35 cam.data.sensor_width = 32 cam_constraint = cam.constraints.new(type="TRACK_TO") cam_constraint.track_axis = "TRACK_NEGATIVE_Z" cam_constraint.up_axis = "UP_Y" return cam, cam_constraint def render_with_blendernerf(object_uid: str) -> None: """Use BlenderNerf add-on to render the normalized scene.""" # args.output_dir already contains the object_uid from the pipeline output_dir = args.output_dir # Clear the output directory if it exists to remove stale data if os.path.exists(output_dir): shutil.rmtree(output_dir) os.makedirs(output_dir, exist_ok=True) # Set up parameters for the BlenderNeRF add-on scene = bpy.context.scene # Global parameters scene.train_data = True scene.test_data = False # scene.aabb = 4 # Smaller bounding box to focus on the object # scene.aabb = 2 # Smaller bounding box to focus on the object scene.aabb = 32 scene.render_frames = True scene.nerf = args.format == "NERF" # True for NeRF format, False for NGP format scene.save_path = output_dir # COS specific parameters scene.cos_dataset_name = object_uid # Use object_uid as dataset name to avoid nested directories scene.sphere_location = (0.0, 0.0, 0.0) # Centered at origin after normalization scene.sphere_rotation = (0.0, 0.0, 0.0) scene.sphere_scale = (1.0, 1.0, 1.0) # Use the new radius min/max properties if available in the add-on # Otherwise fall back to the original sphere_radius property if hasattr(scene, 'sphere_radius_min') and hasattr(scene, 'sphere_radius_max'): scene.sphere_radius_min = args.camera_dist_min / 2 scene.sphere_radius_max = args.camera_dist_max / 2 # Set sphere_radius to the average for visualization scene.sphere_radius = (args.camera_dist_min + args.camera_dist_max) / 4 else: # Fallback to original behavior scene.sphere_radius = args.camera_dist / 2 scene.focal = 20.0 # lens focal length in mm scene.cos_nb_frames = args.num_images scene.seed = 0 scene.upper_views = True scene.outwards = False try: # Run the Camera on Sphere operator from BlenderNerf bpy.ops.object.camera_on_sphere() print(f"Successfully rendered {args.num_images} images using BlenderNerf add-on") except Exception as e: # Check if this is the harmless "BlenderNeRF Camera" not found error if "BlenderNeRF Camera" in str(e) and "not found" in str(e): print(f"Warning: Harmless BlenderNeRF camera error (continuing): {e}") # The rendering actually completed successfully despite this error else: print(f"Error during BlenderNerf rendering: {e}") raise # Unpack the archive - BlenderNeRF creates a zip with the dataset name zip_path = os.path.join(output_dir, f"{object_uid}.zip") if os.path.exists(zip_path): shutil.unpack_archive(zip_path, output_dir) os.remove(zip_path) if args.format == "NERF": # create a dummy transforms_test.json with open(os.path.join(output_dir, "transforms_test.json"), "w") as f: json.dump({"camera_angle_x": 0.0, "frames": []}, f) def download_object(object_url: str) -> str: """Download the object and return the path.""" uid = object_url.split("/")[-1].split(".")[0] tmp_local_path = os.path.join("tmp-objects", f"{uid}.glb" + ".tmp") local_path = os.path.join("tmp-objects", f"{uid}.glb") # wget the file and put it in local_path os.makedirs(os.path.dirname(tmp_local_path), exist_ok=True) urllib.request.urlretrieve(object_url, tmp_local_path) os.rename(tmp_local_path, local_path) # get the absolute path local_path = os.path.abspath(local_path) return local_path def process_object(obj_path: str) -> None: """Process a single object: load, normalize, and render.""" reset_scene() # Load the object load_object(obj_path) object_uid = os.path.basename(obj_path).split(".")[0] # Normalize the scene normalize_scene() print(f"Scene normalized for {object_uid}") # Add lighting add_lighting() # Render with BlenderNerf add-on (this will create the directory structure) render_with_blendernerf(object_uid) # Save the normalized scene as GLB in the output directory # args.output_dir already contains the object_uid from the pipeline glb_path = os.path.join(args.output_dir, f"{object_uid}_normalized_scene.glb") bpy.ops.export_scene.gltf( filepath=glb_path, export_format="GLB", # binary container export_apply=False, # keep object transforms export_texcoords=True, export_normals=True, export_attributes=True, # ← replaces export_colors export_materials='EXPORT', # keep Principled BSDF export_animations=False, check_existing=False, ) print(f"Normalized scene exported to {glb_path}") if __name__ == "__main__": try: start_i = time.time() if args.obj_path.startswith("http"): local_path = download_object(args.obj_path) else: local_path = args.obj_path process_object(local_path) end_i = time.time() print("Finished", local_path, "in", end_i - start_i, "seconds") # Delete the object if it was downloaded if args.obj_path.startswith("http"): os.remove(local_path) except Exception as e: print("Failed to process", args.obj_path) print(e) ================================================ FILE: pixie/blender/render_glb.py ================================================ import bpy import os import sys import argparse from mathutils import Vector, Matrix from pathlib import Path import json import socket import contextlib # needed by the helper below import math import shutil def enable_cuda_devices(): prefs = bpy.context.preferences cprefs = prefs.addons['cycles'].preferences cprefs.get_devices() # Attempt to set GPU device types if available for compute_device_type in ('CUDA', 'OPENCL', 'NONE'): try: cprefs.compute_device_type = compute_device_type print("Compute device selected: {0}".format(compute_device_type)) break except TypeError: pass # Any CUDA/OPENCL devices? acceleratedTypes = ['CUDA', 'OPENCL'] accelerated = any(device.type in acceleratedTypes for device in cprefs.devices) print('Accelerated render = {0}'.format(accelerated)) # If we have CUDA/OPENCL devices, enable only them, otherwise enable # all devices (assumed to be CPU) print(cprefs.devices) for device in cprefs.devices: device.use = not accelerated or device.type in acceleratedTypes print('Device enabled ({type}) = {enabled}'.format(type=device.type, enabled=device.use)) return accelerated def _srgb_to_linear(c: float) -> float: """Convert a single channel from sRGB (display) to linear space (Blender).""" if c <= 0.04045: return c / 12.92 return ((c + 0.055) / 1.055) ** 2.4 def parse_color(s: str | tuple): """Return an (R,G,B,A) tuple in *linear* space ready for Blender. Accepts either an existing 4-tuple (assumed already linear) or a hex string like "#f5f5f5" or "#fff" (sRGB). Hex input is converted to linear using the standard sRGB→linear transform so that the *saved PNG* matches the intended display colour exactly. """ if isinstance(s, tuple): # Already linear RGBA return s if len(s) == 4 else (*s, 1.0) s = s.lstrip('#') if len(s) == 3: # short form e.g. fff s = ''.join(c * 2 for c in s) if len(s) != 6: raise ValueError("Colour must be #rgb or #rrggbb") # Convert 0–255 integers → 0–1 floats (sRGB) sr, sg, sb = (int(s[i:i + 2], 16) / 255.0 for i in (0, 2, 4)) # sRGB → linear so Blender writes the same sRGB after colour-management lr, lg, lb = map(_srgb_to_linear, (sr, sg, sb)) return (lr, lg, lb, 1.0) enable_cuda_devices() parser = argparse.ArgumentParser() # parser.add_argument("--frame_blend_path", type=str) parser.add_argument("--frame", type=int) parser.add_argument("--blend_file_path", type=str, required=True,) parser.add_argument('--obj', required=True, type=str) parser.add_argument('--obj_id', required=True, type=str) parser.add_argument('--output_folder', required=True, type=str) parser.add_argument('--views', type=int) parser.add_argument('--resolution', type=int) parser.add_argument('--input_model', type=str) parser.add_argument('--scene_scale', type=float, default=1.0) parser.add_argument('--transparent', action='store_true') parser.add_argument('--rotate_video', action='store_true', help='If set, instead of a single still, render a full 360° rotation around the object.') parser.add_argument('--camera_id', type=int, default=None, help='Camera index in transforms.json (0-based, optional)') parser.add_argument('--focal_length', type=float, default=None, help='Set camera focal length in mm. Overrides intrinsics from transforms.json if provided.') parser.add_argument('--data_dir', type=str, default=None, help='Data directory containing the transforms.json file') argv = sys.argv[sys.argv.index("--") + 1 :] args = parser.parse_args(argv) def transforms_json(obj_id: str, data_dir: str = None) -> Path: return Path(data_dir) / "transforms.json" # ------------------------------------------------------------------ # Patch translucent materials so they *do* cast shadows in Cycles # ------------------------------------------------------------------ def _ensure_shadow_cast(mat: bpy.types.Material): """If the material uses alpha-blend/hashed, add a Light-Path mix that forces the surface to be opaque for shadow rays while leaving its usual appearance for camera rays.""" if not mat.use_nodes: return if mat.blend_method not in {'BLEND', 'HASHED', 'CLIP'}: return # already opaque → casts shadows nt = mat.node_tree out = next((n for n in nt.nodes if n.type == 'OUTPUT_MATERIAL'), None) if not out or not out.inputs['Surface'].is_linked: return # Avoid patching twice if nt.nodes.get('_AutoLP') and any(n.type == 'MIX_SHADER' and n.label == '_ShadowFix' for n in nt.nodes): return # Create Light Path node (or reuse if extant) lp = nt.nodes.get('_AutoLP') or nt.nodes.new('ShaderNodeLightPath') lp.name = '_AutoLP' lp.location = (-300, -300) # Original surface shader orig_link = out.inputs['Surface'].links[0] orig_socket = orig_link.from_socket # Build or retrieve an opaque BSDF. # Prefer an existing Principled node from the tree (most GLBs have one). opaque_shader = next((n for n in nt.nodes if n.type == 'BSDF_PRINCIPLED'), None) if opaque_shader is None: opaque_shader = nt.nodes.new('ShaderNodeBsdfPrincipled') opaque_shader.location = lp.location.x + 100, lp.location.y - 200 # Force full opacity if hasattr(opaque_shader.inputs, 'Alpha'): opaque_shader.inputs['Alpha'].default_value = 1.0 # Mix Shader that swaps based on shadow ray mix = nt.nodes.new('ShaderNodeMixShader') mix.label = '_ShadowFix' mix.location = (orig_link.from_node.location.x + 200, orig_link.from_node.location.y) nt.links.new(orig_socket, mix.inputs[1]) # regular shading nt.links.new(opaque_shader.outputs[0], mix.inputs[2]) # opaque branch nt.links.new(lp.outputs['Is Shadow Ray'], mix.inputs['Fac']) # Re-wire to material output nt.links.new(mix.outputs[0], out.inputs['Surface']) # ─────────────────── Camera configuration ───────────────────── def set_intrinsics(cam: bpy.types.Object, intr: dict): camd = cam.data camd.lens_unit = 'FOV' camd.angle_x = intr["camera_angle_x"] camd.angle_y = intr["camera_angle_y"] # cx,cy shift → Blender shift_x/y (±0.5 == half the image width/height) w, h = intr["w"], intr["h"] camd.shift_x = (intr["cx"] - 0.5 * w) / w camd.shift_y = -(intr["cy"] - 0.5 * h) / h # y-axis is flipped def set_extrinsics(cam: bpy.types.Object, mat4: list[list[float]]): cam.matrix_world = Matrix(mat4) def apply_camera(cam: bpy.types.Object, tf_path: Path, cam_id: int): data = json.loads(tf_path.read_text()) frames = data["frames"] if not (0 <= cam_id < len(frames)): raise IndexError(f"camera_id {cam_id} out of range 0..{len(frames)-1}") set_extrinsics(cam, frames[cam_id]["transform_matrix"]) set_intrinsics(cam, data) def scene_bbox(mesh_objects): """Calculate bounding box for all mesh objects.""" bbox_min = Vector((float('inf'), float('inf'), float('inf'))) bbox_max = Vector((float('-inf'), float('-inf'), float('-inf'))) for obj in mesh_objects: for corner in obj.bound_box: corner_world = obj.matrix_world @ Vector(corner) bbox_min.x = min(bbox_min.x, corner_world.x) bbox_min.y = min(bbox_min.y, corner_world.y) bbox_min.z = min(bbox_min.z, corner_world.z) bbox_max.x = max(bbox_max.x, corner_world.x) bbox_max.y = max(bbox_max.y, corner_world.y) bbox_max.z = max(bbox_max.z, corner_world.z) return bbox_min, bbox_max def normalize_scene(mesh_objs, scene_scale=1.0, raise_to_ground=True, zoffset=0.05): bbox_min, bbox_max = scene_bbox(mesh_objs) scale = 1 / max(bbox_max - bbox_min) for obj in mesh_objs: obj.scale = obj.scale * scale * scene_scale # Apply scale to matrix_world. bpy.context.view_layer.update() # Get updated bounding box after scaling bbox_min, bbox_max = scene_bbox(mesh_objs) if raise_to_ground: # Move object so its bottom is at z=0 offset = Vector((0, 0, -bbox_min.z+zoffset)) else: # Center the scene at the origin offset = -(bbox_min + bbox_max) / 2 print("Raise to ground?", raise_to_ground, "offset", offset) for obj in mesh_objs: obj.matrix_world.translation += offset bpy.ops.object.select_all(action="DESELECT") # Verify final bounding box final_min, final_max = scene_bbox(mesh_objs) final_size = final_max - final_min print(f" Final bounding box min: {final_min}") print(f" Final bounding box max: {final_max}") print(f" Final bounding box size: {final_size}") return mesh_objs bpy.ops.wm.open_mainfile(filepath=args.blend_file_path) scene = bpy.context.scene pre_import_meshes = {obj for obj in scene.objects if obj.type == 'MESH'} bpy.ops.import_scene.gltf(filepath=args.obj) imported_meshes = [ obj for obj in scene.objects if obj.type == 'MESH' and obj not in pre_import_meshes ] # ---------------------------- DEBUG LOGGING ----------------------------- normalize_scene(imported_meshes, scene_scale=args.scene_scale, raise_to_ground=True) # Apply the fix to imported materials -------------------------------- for obj in imported_meshes: for mat in obj.data.materials: if mat: _ensure_shadow_cast(mat) # ------------------------------------------------------------------ # 3 – floor: ultra-glossy plane # ------------------------------------------------------------------ plane = bpy.data.objects.get("Plane") if plane is None: raise RuntimeError("No object named 'Plane' found!") plane.cycles.is_shadow_catcher = True # Cycles only # plane.cycles.is_shadow_catcher = False ## delete the plane if args.transparent: bpy.data.objects.remove(plane, do_unlink=True) # BG_COLOR = (0.878, 0.498, 0.867, 1.0) # BG_COLOR = (1.0, 1.0, 1.0, 1.0) ## color that the camera actually seees # rgba(245,245,245,255) # BG_COLOR = parse_color("#f5f5f5") # # BG_COLOR = parse_color("#154c79") # ## color for environment lighting # # LIGHT_BG_COLOR = (1.0, 1.0, 1.0, 1.0) # GI colour (keep white) # LIGHT_BG_COLOR = parse_color("#f5f5f5") # LIGHT_BG_STR = 1.0 # world-light strength # world = bpy.context.scene.world # world.use_nodes = True # ntree = world.node_tree # ntree.nodes.clear() # # nodes # bg_visible = ntree.nodes.new("ShaderNodeBackground") # bg_visible.location = (-200, 50) # bg_visible.inputs["Color"].default_value = BG_COLOR # bg_visible.inputs["Strength"].default_value = 1.0 # bg_light = ntree.nodes.new("ShaderNodeBackground") # bg_light.location = (-200, -150) # bg_light.inputs["Color"].default_value = LIGHT_BG_COLOR # bg_light.inputs["Strength"].default_value = LIGHT_BG_STR # path = ntree.nodes.new("ShaderNodeLightPath") # path.location = (-400, -50) # mix = ntree.nodes.new("ShaderNodeMixShader") # mix.location = (50, -50) # out = ntree.nodes.new("ShaderNodeOutputWorld") # out.location = (250, -50) # # links # ntree.links.new(path.outputs["Is Camera Ray"], mix.inputs["Fac"]) # ntree.links.new(bg_visible.outputs["Background"], mix.inputs[2]) # ntree.links.new(bg_light.outputs["Background"], mix.inputs[1]) # ntree.links.new(mix.outputs["Shader"], out.inputs["Surface"]) ## NOTE: new for render_gs tf_json = transforms_json(args.obj_id, args.data_dir) zraise = 0.5 # Camera cam = bpy.context.scene.camera print("Active camera", cam) if args.camera_id is not None: apply_camera(cam, tf_json, args.camera_id) cam.matrix_world.translation.z += zraise if args.focal_length is not None: cam.data.lens_unit = 'MILLIMETERS' cam.data.lens = args.focal_length print(f"Set camera focal length to {args.focal_length}mm") path = os.path.abspath(args.output_folder) i_pos = 0 # Output settings scene = bpy.context.scene render = bpy.context.scene.render scene.render.image_settings.file_format = 'PNG' # scene.render.filepath = "//test_render_output" bpy.context.scene.render.filepath = f'{path}/{str(i_pos).zfill(3)}.png' scene.render.engine = 'CYCLES' scene.cycles.device = "GPU" # scene.cycles.samples = 16 scene.cycles.samples = 32 # render.resolution_x = args.resolution # render.resolution_y = args.resolution ## 16:9 aspect ratio for ours image # render.resolution_y = 512 # render.resolution_x = int(render.resolution_y * (16 / 9)) # scene.render.resolution_percentage = 100 ## NOTE: new for render_gs for rendering the baseline scene.render.resolution_x = scene.render.resolution_y = 512 ## COLOR MANAGEMENT scene.world.use_nodes = True # scene.view_settings.view_transform = 'Standard' # scene.view_settings.look = 'None' ## NOTE: new for render_gs scene.view_settings.view_transform = 'Filmic' scene.view_settings.look = 'Very High Contrast' scene.render.film_transparent = args.transparent # world.node_tree.nodes["Background"].inputs["Color"].default_value = (1,1,1,1) def deg_to_rad(deg): return deg * math.pi / 180 # shutil.rmtree(path, ignore_errors=True) # recursively delete if args.rotate_video: num_frames = args.views if args.views is not None else 120 # Create an empty at the origin to act as rotation pivot bpy.ops.object.empty_add(type='PLAIN_AXES', location=(0.0, 0.0, 0.0)) pivot = bpy.context.active_object # Parent the camera to this pivot so rotating the pivot rotates the camera cam.parent = pivot ## mirror the logic in `get_synthetic_viz_paper_rotate.py` rotate_around = 60 rotate_around = rotate_around / num_frames for i in range(num_frames): scene.render.filepath = f'{path}/{i:03d}.png' # if os.path.exists(scene.render.filepath): # print(f"File {scene.render.filepath} already exists, skipping") # continue angle_deg = rotate_around * i print("angle_deg", angle_deg) angle_rad = deg_to_rad(angle_deg) # angle_rad = (i / num_frames) * 2 * math.pi # full 360° pivot.rotation_euler[2] = angle_rad # rotate around Z-axis bpy.context.view_layer.update() bpy.ops.render.render(write_still=True) else: bpy.ops.render.render(write_still=True) ================================================ FILE: pixie/blender/render_gs.py ================================================ from __future__ import annotations import argparse, json, os, sys, math from pathlib import Path import bpy from mathutils import Matrix, Vector import subprocess import socket from statistics import mean def enable_cuda_devices(): prefs = bpy.context.preferences cprefs = prefs.addons['cycles'].preferences cprefs.get_devices() # Attempt to set GPU device types if available for compute_device_type in ('CUDA', 'OPENCL', 'NONE'): try: cprefs.compute_device_type = compute_device_type print("Compute device selected: {0}".format(compute_device_type)) break except TypeError: pass # Any CUDA/OPENCL devices? acceleratedTypes = ['CUDA', 'OPENCL'] accelerated = any(device.type in acceleratedTypes for device in cprefs.devices) print('Accelerated render = {0}'.format(accelerated)) # If we have CUDA/OPENCL devices, enable only them, otherwise enable # all devices (assumed to be CPU) print(cprefs.devices) for device in cprefs.devices: device.use = not accelerated or device.type in acceleratedTypes print('Device enabled ({type}) = {enabled}'.format(type=device.type, enabled=device.use)) return accelerated enable_cuda_devices() def load_json(path: Path): with open(path, "r") as f: return json.load(f) # ───────────────────────────── CLI ────────────────────────────── def parse_args() -> argparse.Namespace: p = argparse.ArgumentParser() p.add_argument("--obj_id", type=str, required=True) p.add_argument("--frame_id", type=int, required=False, default=None, help="If omitted, all frames in the ply_files folder will be rendered and combined into a video.") p.add_argument("--ply_dir", type=str, required=True, help="Directory containing the ply files") # Original flag (name & default kept intact) p.add_argument("--blend_file_path", "--blend", dest="blend", required=True, help="Path to the base .blend scene") p.add_argument("--transparent", action="store_true") p.add_argument("--camera_id", type=int, default=None, help="Index in transforms.json (0-based)") # ───────────── Object positioning & orientation ────────────── # Initial translation (XYZ). After import, the object is first rotated, then # shifted in the X and Y directions to this target location, and finally # dropped so that its lowest point sits exactly at the requested Z value. p.add_argument("--init_xyz", nargs=3, type=float, default=(0.0, 0.0, 0.0), metavar=("X", "Y", "Z"), help="Initial [x y z] translation of the object before grounding (default: 0 0 0)") # User-specified Euler rotation (XYZ, in DEGREES) applied to the object # right after import. Internally converted to radians. p.add_argument("--xyz_rotation", nargs=3, type=float, default=(0.0, 0.0, 0.0), metavar=("RX", "RY", "RZ"), help="Euler XYZ rotation IN DEGREES to apply to the object (default: 0 0 0)") p.add_argument("--output_dir", type=str, required=True, help="Output directory for rendered images") p.add_argument("--data_dir", type=str, required=True, help="Data directory containing transforms.json") p.add_argument("--place_on_ground", action="store_true", help="Whether to automatically place object on ground") p.add_argument("--blender_gs_addon_path", type=str, required=True, help="Path to the Gaussian Splatting Blender addon zip file") p.add_argument("--overwrite", action="store_true", help="Overwrite existing frames") # Optional solid background colour (0-1 floats). Provide 3 numbers (RGB) or # 4 numbers (RGBA). If omitted, the background from the .blend file is # left untouched. p.add_argument("--bg_color", nargs="*", type=float, default=None, help="Optional RGB(A) background colour (0-1 floats). " "Give 3 or 4 values; omit flag to keep the scene default.") # Camera orbit: degrees of rotation (around world Z) applied *per frame* # relative to the camera orientation defined by transforms.json (or the # default scene camera). The camera orbits around an empty named # "dolly_focus" that must exist in the .blend file. p.add_argument("--rotate_around", type=float, default=None, help="Degrees of orbit around 'dolly_focus' per frame. " "E.g. 10 rotates the camera 10 degrees each frame, for a 36-frame full 360°.") p.add_argument("--frame_offset", type=int, default=0, help="Offset the frame index by this amount. " "E.g. 1 shifts the frame index by 1, so the render will use frame 1 instead of 0.") # ───────────── Render quality settings ───────────── p.add_argument("--resolution_x", type=int, default=None, help="Render resolution X (width). If omitted, uses scene default.") p.add_argument("--resolution_y", type=int, default=None, help="Render resolution Y (height). If omitted, uses scene default.") p.add_argument("--cycles_samples", type=int, default=None, help="Number of Cycles render samples. If omitted, uses scene default.") p.add_argument("--num_renders", type=int, default=None, help="Number of renders to do. If omitted, uses scene default.") p.add_argument("--start_frame", type=int, default=0, help="Start frame to render. If omitted, uses scene default.") p.add_argument("--is_dropping", action="store_true", help="Whether to drop the object on the ground. If omitted, uses scene default.") # Debugging: optionally save a .blend snapshot per frame p.add_argument("--save_blend", action="store_true", help="Save a .blend file (same name as output PNG) for each rendered frame.") p.add_argument("--focal_length_ratio", type=float, default=None, help="Ratio of camera focal length to original focal length. " "E.g. 1.2 scales the focal length by 1.2x.") return p.parse_args(sys.argv[sys.argv.index("--") + 1:]) # ──────────────────────── Path helpers ───────────────────────── def transforms_json(obj_id: str, data_dir: str) -> Path: return Path(data_dir) / "transforms.json" def output_png(obj_id: str, frame_id: int, output_folder: str) -> Path: return Path(output_folder) / f"frame_{frame_id:05d}.png" # ─────────────────── Camera configuration ───────────────────── def set_intrinsics(cam: bpy.types.Object, intr: dict): camd = cam.data camd.lens_unit = 'FOV' camd.angle_x = intr["camera_angle_x"] camd.angle_y = intr["camera_angle_y"] # cx,cy shift → Blender shift_x/y (±0.5 == half the image width/height) w, h = intr["w"], intr["h"] camd.shift_x = (intr["cx"] - 0.5 * w) / w camd.shift_y = -(intr["cy"] - 0.5 * h) / h # y-axis is flipped def set_extrinsics(cam: bpy.types.Object, mat4: list[list[float]]): cam.matrix_world = Matrix(mat4) def apply_camera(cam: bpy.types.Object, tf_path: Path, cam_id: int): data = json.loads(tf_path.read_text()) frames = data["frames"] if not (0 <= cam_id < len(frames)): raise IndexError(f"camera_id {cam_id} out of range 0..{len(frames)-1}") set_extrinsics(cam, frames[cam_id]["transform_matrix"]) set_intrinsics(cam, data) # ───────────────────── Misc. small utilities ─────────────────── def shift_xyz(obj, xyz_target=(0.0, 0.0, 0.0)): obj.location = Vector((xyz_target[0], xyz_target[1], xyz_target[2])) return obj def place_on_ground(obj, xy_target=(0.0, 0.0), ground_z=0.0, clearance=0.0): """Drop object so its lowest point is at ground_z (plus clearance).""" bpy.context.view_layer.update() zmin = min((obj.matrix_world @ Vector(c)).z for c in obj.bound_box) # obj.location = Vector((xy_target[0], xy_target[1], # obj.location.z + (ground_z + clearance - zmin))) zraise = ground_z + clearance - zmin xyz = (xy_target[0], xy_target[1], zraise) obj = shift_xyz(obj, xyz) return zraise # ─────────────────── Batch & video utilities ────────────────── def compile_video(img_dir: Path, fps: int = 10, out_name: str = "render.mp4"): """Stitch PNG frames in `img_dir` into an MP4 using ffmpeg.""" video_path = img_dir / out_name pattern = img_dir / "frame_%05d.png" cmd = [ "ffmpeg", "-y", # overwrite without prompt # "/bin/ffmpeg", "-y", # overwrite without prompt "-framerate", str(fps), # input FPS "-i", str(pattern), # input pattern "-c:v", "libx264", # video codec "-pix_fmt", "yuv420p", # widely-compatible pixel format str(video_path) ] print("🎞️ Creating video:", " ".join(cmd)) try: subprocess.run(cmd, check=True) print(f"✅ Video saved to {video_path}") except FileNotFoundError: print("⚠️ ffmpeg not found; skipping video compilation.") def _ensure_gaussian_splat_addon(zip_path: str): """Ensure the Gaussian-Splatting Blender add-on is enabled. Tries to enable an already installed add-on first to avoid race conditions when many batch jobs start concurrently. If enabling fails, attempts to (re)install from *zip_path* and enable again. Should be safe to call repeatedly. """ import addon_utils try: # Try to enable if installed but not enabled bpy.ops.preferences.addon_enable(module="blender-addon") return # success except Exception as enable_exc: print(f"⚠️ Could not enable existing 'blender-addon': {enable_exc}\n→ Attempting reinstall…") # Remove any broken install to start clean try: bpy.ops.preferences.addon_remove(module="blender-addon") except Exception: pass # OK if it wasn't there # (Re)install from ZIP and enable try: bpy.ops.preferences.addon_install(filepath=zip_path, overwrite=True) bpy.ops.preferences.addon_enable(module="blender-addon") print("✅ 'blender-addon' installed & enabled successfully.") except Exception as install_exc: print(f"❌ Failed to install/enable 'blender-addon': {install_exc}") raise def _orbit_camera(cam: bpy.types.Object, angle_deg_per_frame: float, frame_id: int): """Orbit *cam* around Z-axis by *angle_deg_per_frame* × *frame_id*. If an object named 'dolly_focus' exists, orbit around its location using explicit vector math (keeps camera looking at the focus). Otherwise, fall back to the pivot-parent method: create/reuse an empty named '_orbit_pivot' at the world origin, parent the camera to it (keeping transforms), and rotate the pivot. """ angle_rad = math.radians(angle_deg_per_frame * frame_id) focus = bpy.data.objects.get("dolly_focus") if focus is not None: # ---------------- Focus-based orbit (existing behaviour) ------------- cam_vec = cam.matrix_world.translation - focus.location new_vec = Matrix.Rotation(angle_rad, 4, 'Z') @ cam_vec cam.matrix_world.translation = focus.location + new_vec # Make camera look at the focus point dir_vec = (focus.location - cam.matrix_world.translation).normalized() cam.rotation_mode = 'XYZ' cam.rotation_euler = dir_vec.to_track_quat('-Z', 'Y').to_euler() print(f"⭐ Orbit via 'dolly_focus' angle={angle_deg_per_frame*frame_id:.2f}° cam={cam.location}") else: # ---------------- Pivot-parent orbit (render_blender_qual_paper style) print("⭐ Initial camera location", cam.location) pivot = bpy.data.objects.get("_orbit_pivot") if pivot is None: # cam_height = cam.location.z # bpy.ops.object.empty_add(type='PLAIN_AXES', location=(0.0, 0.0, cam_height)) bpy.ops.object.empty_add(type='PLAIN_AXES', location=(0.0, 0.0, 0.0)) pivot = bpy.context.active_object pivot.name = "_orbit_pivot" print("⭐ Created _orbit_pivot empty at origin for camera orbit") # Parent camera once (keeping its current world transform) # world_mtx = cam.matrix_world.copy() # cam.parent = pivot # cam.matrix_parent_inverse = pivot.matrix_world.inverted() # cam.matrix_world = world_mtx print("created pivot at location", pivot.location) cam.parent = pivot pivot.rotation_mode = 'XYZ' pivot.rotation_euler[2] = angle_rad # rotate around Z-axis print(f"⭐ Orbit via pivot angle={angle_deg_per_frame*frame_id:.2f}° cam={cam.location}") def _srgb_to_linear(c: float) -> float: """Convert a single channel from sRGB (display) to linear space (Blender).""" if c <= 0.04045: return c / 12.92 return ((c + 0.055) / 1.055) ** 2.4 def parse_color(s: str | tuple): """Return an (R,G,B,A) tuple in *linear* space ready for Blender. Accepts either an existing 4-tuple (assumed already linear) or a hex string like "#f5f5f5" or "#fff" (sRGB). Hex input is converted to linear using the standard sRGB→linear transform so that the *saved PNG* matches the intended display colour exactly. """ if isinstance(s, tuple): # Already linear RGBA return s if len(s) == 4 else (*s, 1.0) s = s.lstrip('#') if len(s) == 3: # short form e.g. fff s = ''.join(c * 2 for c in s) if len(s) != 6: raise ValueError("Colour must be #rgb or #rrggbb") # Convert 0–255 integers → 0–1 floats (sRGB) sr, sg, sb = (int(s[i:i + 2], 16) / 255.0 for i in (0, 2, 4)) # sRGB → linear so Blender writes the same sRGB after colour-management lr, lg, lb = map(_srgb_to_linear, (sr, sg, sb)) return (lr, lg, lb, 1.0) def _debug_print_obj_bounds(obj): """Print world-space bounding box and centre of *obj* for debugging.""" import mathutils world_corners = [obj.matrix_world @ mathutils.Vector(c) for c in obj.bound_box] xs, ys, zs = zip(*[(v.x, v.y, v.z) for v in world_corners]) centre = mathutils.Vector((mean(xs), mean(ys), mean(zs))) mins = (min(xs), min(ys), min(zs)) maxs = (max(xs), max(ys), max(zs)) print(f"🔍 OBJ BBOX min={mins} max={maxs}") print(f"🔍 OBJ CENTRE {centre}") def render_single_frame(args: argparse.Namespace, *, load_blend: bool = True): """Render a single frame based on the already-parsed `args`. Parameters ---------- load_blend : bool, optional If True, reload the base .blend file before rendering. For batch rendering of many frames this can be set to False after the first frame to avoid the expensive scene reload, drastically speeding up subsequent renders. """ # BG_COLOR = parse_color("#f5f5f5") # LIGHT_BG_COLOR = parse_color("#f5f5f5") # LIGHT_BG_STR = 1.0 # world-light strength # world = bpy.context.scene.world # world.use_nodes = True # ntree = world.node_tree # ntree.nodes.clear() # # nodes # bg_visible = ntree.nodes.new("ShaderNodeBackground") # bg_visible.location = (-200, 50) # bg_visible.inputs["Color"].default_value = BG_COLOR # bg_visible.inputs["Strength"].default_value = 1.0 # bg_light = ntree.nodes.new("ShaderNodeBackground") # bg_light.location = (-200, -150) # bg_light.inputs["Color"].default_value = LIGHT_BG_COLOR # bg_light.inputs["Strength"].default_value = LIGHT_BG_STR # path = ntree.nodes.new("ShaderNodeLightPath") # path.location = (-400, -50) # mix = ntree.nodes.new("ShaderNodeMixShader") # mix.location = (50, -50) # out = ntree.nodes.new("ShaderNodeOutputWorld") # out.location = (250, -50) # # links # ntree.links.new(path.outputs["Is Camera Ray"], mix.inputs["Fac"]) # ntree.links.new(bg_visible.outputs["Background"], mix.inputs[2]) # ntree.links.new(bg_light.outputs["Background"], mix.inputs[1]) # ntree.links.new(mix.outputs["Shader"], out.inputs["Surface"]) # Resolve all paths ply_dir = Path(args.ply_dir) assert ply_dir.exists(), f"PLY directory does not exist: {ply_dir}" ply = ply_dir / f"frame_{args.frame_id:05d}.ply" assert ply.exists(), f"PLY file does not exist: {ply}" tf_json = transforms_json(args.obj_id, args.data_dir) out_png = output_png(args.obj_id, args.frame_id, args.output_dir) out_png.parent.mkdir(parents=True, exist_ok=True) # Skip if frame already rendered if out_png.exists() and not args.overwrite: print(f"⏭️ Skipping frame {args.frame_id}: {out_png.name} already exists.") return # Load clean .blend (only if requested) ----------------------------------- if load_blend: bpy.ops.wm.open_mainfile(filepath=args.blend) # Ensure any key-framed motion is evaluated for this frame. bpy.context.scene.frame_set(args.frame_id + args.frame_offset) # Ensure the add-on providing the import operator is active _ensure_gaussian_splat_addon(args.blender_gs_addon_path) else: # Scene was opened previously; just jump to the correct frame. bpy.context.scene.frame_set(args.frame_id + args.frame_offset) # ------------------------------------------------------------------------ # Import Gaussian-Splat for this frame bpy.ops.object.import_gaussian_splatting(filepath=str(ply.resolve())) gs_obj = bpy.context.selected_objects[-1] gs_obj.rotation_mode = 'XYZ' # make sure we're in XYZ Euler gs_obj.rotation_euler = tuple(math.radians(a) for a in args.xyz_rotation) print("args.init_xyz", args.init_xyz) print("args.xyz_rotation", args.xyz_rotation) print("args.place_on_ground", args.place_on_ground) if args.place_on_ground: # Drop the object so its lowest point is exactly at init_xyz[2] zraise = place_on_ground( gs_obj, xy_target=(args.init_xyz[0], args.init_xyz[1]), ground_z=args.init_xyz[2], clearance=0.0, ) print(f"frame {args.frame_id} zraise: {zraise}") else: # Manual positioning - use init_xyz directly zraise = args.init_xyz[2] if any(args.init_xyz) else 1.5 shift_xyz(gs_obj, (args.init_xyz[0], args.init_xyz[1], zraise)) print(f"frame {args.frame_id} zraise: {zraise}") # Full-splats rendering (disable point-cloud preview) gn_nodes = gs_obj.modifiers["Geometry Nodes"].node_group.nodes bool_node = gn_nodes.get("Boolean") if bool_node: bool_node.boolean = False # full-splat mode # Ensure 100 % of the splats are displayed (quality over speed) rv_node = gn_nodes.get("Random Value") def_val = rv_node.inputs["Probability"].default_value if rv_node and rv_node.inputs.get("Probability") is not None: rv_node.inputs["Probability"].default_value = 1.0 _debug_print_obj_bounds(gs_obj) # Camera cam = bpy.context.scene.camera if args.camera_id is not None: apply_camera(cam, tf_json, args.camera_id) cam.matrix_world.translation.z += zraise if args.focal_length_ratio is not None: cam.data.lens_unit = 'MILLIMETERS' print(f"current focal length: {cam.data.lens}mm. Setting by ratio {args.focal_length_ratio}") cam.data.lens = args.focal_length_ratio * cam.data.lens print(f"Set camera focal length to {args.focal_length_ratio * cam.data.lens}mm") # ───────────── Optional camera orbit around "dolly_focus" ───────────── if args.rotate_around is not None: _orbit_camera(cam, args.rotate_around, args.frame_id) # Render settings scn = bpy.context.scene ## use GPU for rendering bpy.context.scene.render.engine = 'CYCLES' bpy.context.scene.cycles.device = 'GPU' # bpy.context.scene.cycles.device = 'CPU' # Apply custom render settings if provided if args.cycles_samples is not None: scn.cycles.samples = args.cycles_samples else: scn.cycles.samples = 16 # scn.cycles.samples = 160 # scn.cycles.samples = 4096 if args.resolution_x is not None: scn.render.resolution_x = args.resolution_x else: scn.render.resolution_x = 1280 if args.resolution_y is not None: scn.render.resolution_y = args.resolution_y else: scn.render.resolution_y = 720 scn.render.film_transparent = args.transparent scn.render.resolution_x = scn.render.resolution_y = 512 scn.view_settings.view_transform = 'Filmic' scn.view_settings.look = 'Very High Contrast' # scn.view_settings.view_transform = 'Standard' # scn.view_settings.look = 'None' scn.render.filepath = str(out_png) # ───────────── Optional background colour via Spot light ───────────── if args.bg_color: bg_col = tuple(args.bg_color) if len(bg_col) == 4: rgb = bg_col[:3] elif len(bg_col) == 3: rgb = bg_col else: raise ValueError("--bg_color expects 3 or 4 floats (RGB[A]).") # world = bpy.context.scene.world # world.use_nodes = True # ntree = world.node_tree # ntree.nodes.clear() # # Camera-visible background # bg_visible = ntree.nodes.new("ShaderNodeBackground") # bg_visible.location = (-200, 50) # bg_visible.inputs["Color"].default_value = bg_col # bg_visible.inputs["Strength"].default_value = 1.0 # # Lighting-only background (white) # bg_light = ntree.nodes.new("ShaderNodeBackground") # bg_light.location = (-200, -150) # bg_light.inputs["Color"].default_value = (1.0, 1.0, 1.0, 1.0) # bg_light.inputs["Strength"].default_value = 1.0 # path = ntree.nodes.new("ShaderNodeLightPath") # path.location = (-400, -50) # mix = ntree.nodes.new("ShaderNodeMixShader") # mix.location = (50, -50) # out = ntree.nodes.new("ShaderNodeOutputWorld") # out.location = (250, -50) # # Link nodes to replicate animate_tree.py set-up # ntree.links.new(path.outputs["Is Camera Ray"], mix.inputs["Fac"]) # ntree.links.new(bg_visible.outputs["Background"], mix.inputs[2]) # ntree.links.new(bg_light.outputs["Background"], mix.inputs[1]) # ntree.links.new(mix.outputs["Shader"], out.inputs["Surface"]) spot = bpy.data.objects.get("Spot") if spot and hasattr(spot.data, "color"): spot.data.color = rgb else: print("⚠️ --bg_color given but no light named 'Spot' found with color attribute; skipping.") ## crank the power up by 10x spot.data.energy = 2500 # Go! bpy.ops.render.render(write_still=True) print(f"✅ Saved PNG to {scn.render.filepath}") # Optionally write a .blend snapshot for debugging before cleaning up. if args.save_blend: blend_path = out_png.with_suffix(".blend") bpy.ops.wm.save_as_mainfile(filepath=str(blend_path)) print(f"💾 Saved .blend snapshot to {blend_path}") # Clean up the imported GS object to free memory before next frame. bpy.data.objects.remove(gs_obj, do_unlink=True) # ───────────────────────── Main routine ─────────────────────── def main(): args = parse_args() # If a specific frame is requested, render just that one. if args.frame_id is not None: render_single_frame(args) return # ───── Batch mode: find all frame_*.ply files and render them ───── ply_dir = Path(args.ply_dir) assert ply_dir.exists(), f"Could not locate ply_files directory at {ply_dir}" frame_ids = sorted(int(p.stem.split("_")[1]) for p in ply_dir.glob("frame_*.ply")) if not frame_ids: print(f"Error: No frame_*.ply files found in {ply_dir}. Aborting. Did you run `pipeline.py` with `physics.save_ply=true`? Alternatively, comment out `blender_gs` in `output_rendering/default.yaml`") sys.exit(1) ## HACK: to ensure rotation is consistent over different videos of different frames ## assume that args.rotate_around is the TOTAL over all frames if args.rotate_around is not None: args.rotate_around = args.rotate_around / len(frame_ids) print(f"args.rotate_around: {args.rotate_around}") if args.num_renders is not None: frame_ids = frame_ids[args.start_frame:args.start_frame+args.num_renders] print(f"📄 Found {len(frame_ids)} frames to render: {frame_ids[0]} … {frame_ids[-1]}") for idx, fid in enumerate(frame_ids): args.frame_id = fid print(f"[...] Rendering frame {fid} / {frame_ids[-1]}") render_single_frame(args, load_blend=True) # ------------------------------------------------------------------------- # __main__ guard # ------------------------------------------------------------------------- if __name__ == "__main__": main() ================================================ FILE: pixie/metrics.py ================================================ import os import numpy as np from typing import List, Optional from omegaconf import DictConfig from .utils import load_json from typing import Dict from collections import defaultdict import math from .utils import save_json, get_obj_class_for_id import pandas as pd def get_obj_ids_for_class(obj_class: str, cfg: DictConfig, only_valid: bool = True) -> List[str]: """Get all object IDs for a given object class. Args: obj_class: The object class to search for cfg: Configuration containing metadata path only_valid: If True, only return objects where vlm_filtering.is_appropriate is True """ if cfg and cfg.paths.obj_metadata_path: # Handle relative paths by making them absolute relative to the project root metadata_path = cfg.paths.obj_metadata_path obj_metadata = load_json(metadata_path) obj_ids = [] # Iterate through all objects and find those matching the class for obj_id, metadata in obj_metadata.items(): if metadata.get("obj_class", "UNKNOWN") == obj_class: # If only_valid is True, check vlm_filtering.is_appropriate if only_valid: vlm_filtering = metadata.get("vlm_filtering", {}) if vlm_filtering.get("is_appropriate", False): obj_ids.append(obj_id) else: obj_ids.append(obj_id) return obj_ids return [] def aggregate_material_statistics(cfg: DictConfig, obj_ids: List[str]) -> dict: """Aggregate material statistics from VLM results across objects.""" stats = {'E': [], 'density': [], 'nu': [], 'parts': [], 'material_ids': [], 'obj_ids': []} for obj_id in obj_ids: base_dir = os.path.join(cfg.paths.vlm_seg_mat_sample_results_dir, obj_id) sample_id = f"sample_{cfg.physics.sample_id}" chosen_path = os.path.join(base_dir, sample_id, "chosen_vlm_results.json") if os.path.exists(chosen_path): vlm_results = load_json(chosen_path) material_dict = vlm_results['material_dict'] for part_name, props in material_dict.items(): for key in ['E', 'density', 'nu']: if key in props: stats[key].append(props[key]) if 'material_id' in props: stats['material_ids'].append(props['material_id']) stats['parts'].append(part_name) stats['obj_ids'].append(obj_id) return stats def remove_outliers_percentile(data: np.ndarray, lower: float = 5, upper: float = 95) -> np.ndarray: """Remove outliers using percentile bounds.""" p_low, p_high = np.percentile(data, [lower, upper]) return data[(data >= p_low) & (data <= p_high)] def clean_categorical(data: np.ndarray, min_freq: float = 0.1) -> np.ndarray: """Remove rare categorical values below min_freq percentage of total data. default is 1%""" unique, counts = np.unique(data, return_counts=True) min_count = int(len(data) * min_freq) valid_categories = unique[counts >= min_count] return data[np.isin(data, valid_categories)] def clean_continuous(data: np.ndarray, prop_type: str = 'E') -> np.ndarray: """Clean material property data with physical constraints + percentile filtering.""" # Apply physical constraints first if prop_type == 'E': # Young's modulus data = data[data > 0] # Must be positive elif prop_type == 'density': data = data[data > 0] # Must be positive elif prop_type == 'nu': # Poisson's ratio data = data[(data >= -1) & (data <= 0.5)] # Physical bounds # Then apply percentile filtering to remove extreme outliers return remove_outliers_percentile(data, lower=2.5, upper=97.5) # ============================================================================ # Inference Metrics Functions # ============================================================================ class InferenceMetrics: """Container for tracking inference metrics.""" def __init__(self): self.seg_accuracies = [] self.cont_mse_values = [] self.density_mse_values = [] self.youngs_mse_values = [] self.poisson_mse_values = [] self.obj_metrics = {} self.local_obj_ids = [] def add_batch_metrics(self, seg_acc, cont_mse, density_mse, youngs_mse, poisson_mse): """Add batch-level metrics.""" self.seg_accuracies.append(seg_acc) self.cont_mse_values.append(cont_mse) self.density_mse_values.append(density_mse) self.youngs_mse_values.append(youngs_mse) self.poisson_mse_values.append(poisson_mse) def add_sample_metrics(self, obj_id, metrics_dict): """Add sample-level metrics for an object.""" if obj_id not in self.obj_metrics: self.obj_metrics[obj_id] = defaultdict(list) for key, value in metrics_dict.items(): self.obj_metrics[obj_id][key].append(value) def gather_all_metrics(self, rank, world_size): """Gather metrics from all processes.""" if world_size == 1: return [self.seg_accuracies], [self.cont_mse_values], [self.density_mse_values], \ [self.youngs_mse_values], [self.poisson_mse_values], [self.local_obj_ids], \ [self.obj_metrics] import torch.distributed as dist all_metrics = [None for _ in range(world_size)] metrics_to_gather = [ self.seg_accuracies, self.cont_mse_values, self.density_mse_values, self.youngs_mse_values, self.poisson_mse_values, self.local_obj_ids, self.obj_metrics ] gathered = [] for metric in metrics_to_gather: all_values = [None for _ in range(world_size)] dist.gather_object(metric, all_values if rank == 0 else None, dst=0) gathered.append(all_values) return gathered def save_metrics_file(output_dir, seg_ckpt, cont_ckpt, global_avgs, obj_avgs, merged_metrics, ci_low, ci_high, se, z, disp_label): """Save detailed metrics to JSON file.""" # Calculate dispersions for all metrics dispersions = {} for metric in ["cont_mse", "density_mse", "youngs_mse", "poisson_mse"]: values = [avg[metric] for avg in obj_avgs.values()] if len(values) > 1: if disp_label == "SE": dispersions[metric] = float(np.std(values, ddof=1) / math.sqrt(len(values))) else: dispersions[metric] = float(np.std(values, ddof=0)) else: dispersions[metric] = 0.0 # Structure all metrics data metrics_data = { "checkpoints": { "segmentation": seg_ckpt, "continuous": cont_ckpt }, "summary": { "total_objects": len(obj_avgs), "dispersion_type": disp_label, "segmentation_accuracy": { "mean": float(global_avgs['seg_acc']), "confidence_interval_90": { "low": float(ci_low), "high": float(ci_high), "margin": float(z * se) } }, "continuous_metrics": { "overall": { "mean": float(global_avgs['cont_mse']), "dispersion": dispersions['cont_mse'] }, "density": { "mean": float(global_avgs['density_mse']), "dispersion": dispersions['density_mse'] }, "youngs_modulus": { "mean": float(global_avgs['youngs_mse']), "dispersion": dispersions['youngs_mse'] }, "poisson_ratio": { "mean": float(global_avgs['poisson_mse']), "dispersion": dispersions['poisson_mse'] } } }, "per_object_metrics": obj_avgs, "per_object_raw_data": { oid: { "segmentation_accuracy": { "values": metrics["seg_acc"], "mean": sum(metrics["seg_acc"]) / len(metrics["seg_acc"]) if metrics["seg_acc"] else 0.0 }, "continuous_mse": { "values": metrics["cont_mse"], "mean": sum(metrics["cont_mse"]) / len(metrics["cont_mse"]) if metrics["cont_mse"] else 0.0 } } for oid, metrics in merged_metrics.items() } } save_json(metrics_data, os.path.join(output_dir, "metrics.json")) def generate_class_table(cfg, obj_averages, use_sem, disp_label, output_dir): """Generate per-class metrics table and save as JSON.""" class_buckets = defaultdict(list) for oid, metrics in obj_averages.items(): cls_name = get_obj_class_for_id(oid, cfg) class_buckets[cls_name].append(metrics) # Structure the per-class data class_metrics = {} metric_keys = ["seg_acc", "cont_mse", "density_mse", "youngs_mse", "poisson_mse"] for cls, obj_list in class_buckets.items(): class_data = { "n_objects": len(obj_list), "metrics": {} } for key in metric_keys: values = [obj[key] for obj in obj_list if key in obj] if not values: class_data["metrics"][key] = { "mean": 0.0, "dispersion": 0.0, "dispersion_type": "CI_90" if key == "seg_acc" else disp_label } continue mean = float(np.mean(values)) if key == "seg_acc": # 90% CI for proportion n = len(values) ci = float(1.645 * np.sqrt(mean * (1 - mean) / n)) if n > 0 else 0.0 class_data["metrics"][key] = { "mean": mean, "dispersion": ci, "dispersion_type": "CI_90" } else: # Standard error or std if use_sem: disp = float(np.std(values, ddof=1) / np.sqrt(len(values))) if len(values) > 1 else 0.0 else: disp = float(np.std(values, ddof=0)) class_data["metrics"][key] = { "mean": mean, "dispersion": disp, "dispersion_type": disp_label } class_metrics[cls] = class_data # Add overall statistics overall_data = { "n_objects": len(obj_averages), "metrics": {} } for key in metric_keys: values = [obj[key] for obj in obj_averages.values() if key in obj] if values: mean = float(np.mean(values)) if key == "seg_acc": n = len(values) ci = float(1.645 * np.sqrt(mean * (1 - mean) / n)) if n > 0 else 0.0 overall_data["metrics"][key] = { "mean": mean, "dispersion": ci, "dispersion_type": "CI_90" } else: if use_sem: disp = float(np.std(values, ddof=1) / np.sqrt(len(values))) if len(values) > 1 else 0.0 else: disp = float(np.std(values, ddof=0)) overall_data["metrics"][key] = { "mean": mean, "dispersion": disp, "dispersion_type": disp_label } else: overall_data["metrics"][key] = { "mean": 0.0, "dispersion": 0.0, "dispersion_type": "CI_90" if key == "seg_acc" else disp_label } class_metrics["ALL"] = overall_data # Save as JSON save_json(class_metrics, os.path.join(output_dir, "per_class_metrics.json")) # Still print table for console output rows = [] for cls, data in class_metrics.items(): row = {"obj_class": cls, "n_objects": data["n_objects"]} for key in metric_keys: m = data["metrics"][key] row[key] = f"{m['mean']:.4f} ± {m['dispersion']:.4f}" rows.append(row) df = pd.DataFrame(rows).sort_values("obj_class") print(f"\nPer-class metric breakdown [Dispersion: {disp_label}]\n") with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(df.to_string(index=False)) def generate_metrics_report(cfg, all_metrics, output_dir, seg_checkpoint_path, cont_checkpoint_path, dispersion="sem", print_table=True): """Generate and save comprehensive metrics report.""" # Unpack metrics (all_seg_acc, all_cont_mse, all_density_mse, all_youngs_mse, all_poisson_mse, all_obj_ids, all_obj_metrics) = all_metrics # Flatten metrics flat_metrics = {} for name, metric_list in [ ("seg_acc", all_seg_acc), ("cont_mse", all_cont_mse), ("density_mse", all_density_mse), ("youngs_mse", all_youngs_mse), ("poisson_mse", all_poisson_mse) ]: flat_metrics[name] = [item for sublist in metric_list if sublist for item in sublist] # Merge per-object metrics merged_obj_metrics = {} for obj_dict in all_obj_metrics: if obj_dict is None: continue for oid, metrics in obj_dict.items(): if oid not in merged_obj_metrics: merged_obj_metrics[oid] = defaultdict(list) for key, values in metrics.items(): merged_obj_metrics[oid][key].extend(values) # Calculate object-level averages obj_averages = {} for oid, metrics in merged_obj_metrics.items(): obj_averages[oid] = {k: sum(v)/len(v) if v else 0.0 for k, v in metrics.items()} # Global averages global_avgs = {} for metric_name in ["seg_acc", "cont_mse", "density_mse", "youngs_mse", "poisson_mse"]: values = [obj_avg[metric_name] for obj_avg in obj_averages.values() if metric_name in obj_avg] global_avgs[metric_name] = np.mean(values) if values else 0.0 # Calculate dispersions use_sem = dispersion.lower() in {"sem", "stderr"} def calc_dispersion(values): if not values or len(values) <= 1: return 0.0 if use_sem: return np.std(values, ddof=1) / math.sqrt(len(values)) return np.std(values, ddof=0) # Print results seg_se = calc_dispersion([avg["seg_acc"] for avg in obj_averages.values()]) z_90 = 1.645 seg_ci_low = global_avgs["seg_acc"] - z_90 * seg_se seg_ci_high = global_avgs["seg_acc"] + z_90 * seg_se disp_label = "SE" if use_sem else "STD" print(f"\nInference complete!") print(f" Average Segmentation Accuracy: {global_avgs['seg_acc']:.4f}") print(f" 90% CI: [{seg_ci_low:.4f}, {seg_ci_high:.4f}] (± {z_90*seg_se:.4f})") print(f" Average Continuous MSE: {global_avgs['cont_mse']:.6f} " f"({disp_label} {calc_dispersion([avg['cont_mse'] for avg in obj_averages.values()]):.6f})") for metric, label in [("density_mse", "Density"), ("youngs_mse", "Young's"), ("poisson_mse", "Poisson")]: disp = calc_dispersion([avg[metric] for avg in obj_averages.values()]) print(f" • {label} MSE: {global_avgs[metric]:.6f} ({disp_label} {disp:.6f})") # Save metrics file save_metrics_file(output_dir, seg_checkpoint_path, cont_checkpoint_path, global_avgs, obj_averages, merged_obj_metrics, seg_ci_low, seg_ci_high, seg_se, z_90, disp_label) # Save object IDs flat_obj_ids = [item for sublist in all_obj_ids if sublist for item in sublist] unique_obj_ids = sorted(set(flat_obj_ids)) save_json(unique_obj_ids, os.path.join(output_dir, "evaluated_obj_ids.json")) # Generate per-class table if requested if print_table: generate_class_table(cfg, obj_averages, use_sem, disp_label, output_dir) ================================================ FILE: pixie/training_utils.py ================================================ """ Shared training utilities for Wavelet-Generation training scripts. This module contains common functions used across training_discrete.py, training_continuous_mse.py, and inference_combined.py to avoid code duplication. """ import os import torch import torch.distributed as dist import torch.multiprocessing as mp import numpy as np import random import yaml from pathlib import Path from omegaconf import DictConfig from dotenv import load_dotenv import wandb from pixie.utils import save_json, set_logger import logging def load_normalization_ranges(cfg: DictConfig) -> DictConfig: """Load normalization ranges from saved statistics and update config.""" normalization_ranges_file = Path(cfg.paths.normalization_stats_dir) / "normalization_ranges.yaml" assert normalization_ranges_file.exists(), ( f"Normalization ranges file not found at {normalization_ranges_file}. " f"You must run 'python third_party/Wavelet-Generation/data_utils/inspect_ranges.py' " f"first to compute the actual ranges from your dataset." ) with open(normalization_ranges_file, 'r') as f: ranges = yaml.safe_load(f) # Update the training config with loaded ranges cfg.training.density_min = ranges['density_p1'] cfg.training.density_max = ranges['density_p99'] cfg.training.E_min = ranges['E_p1'] cfg.training.E_max = ranges['E_p99'] cfg.training.nu_min = ranges['nu_p1'] cfg.training.nu_max = ranges['nu_p99'] logging.info(f"Loaded normalization ranges from {normalization_ranges_file}") logging.info(f" Density: {ranges['density_p1']:.3f} - {ranges['density_p99']:.3f}") logging.info(f" Young's E: {ranges['E_p1']:.3f} - {ranges['E_p99']:.3f}") logging.info(f" Poisson ν: {ranges['nu_p1']:.4f} - {ranges['nu_p99']:.4f}") return cfg def ddp_setup(rank: int, world_size: int): """Initialize process group for DDP.""" os.environ["MASTER_ADDR"] = "localhost" os.environ["MASTER_PORT"] = "12355" dist.init_process_group("nccl", rank=rank, world_size=world_size) torch.cuda.set_device(rank) def seed_everything(seed: int): """Set random seeds for reproducibility.""" torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.backends.cudnn.deterministic = True torch.backends.cudnn.benchmark = False np.random.seed(seed) random.seed(seed) def masked_mean(x, mask, dims, eps=1e-8): """Mean over the entries where mask==1, keeping the batch (and channel) dims.""" num = (x * mask).sum(dims) # total error over fg voxels den = mask.sum(dims).clamp(min=1) # #foreground voxels return num / (den + eps) # eps avoids NaN when den==0 def compute_accuracy(pred_logits, target, mask=None, ignore_index: int = None): """Voxel‑wise accuracy excluding *ignore_index* class.""" with torch.no_grad(): pred = pred_logits.argmax(1) # (N,D,H,W) if mask is None: mask = target != ignore_index else: mask = mask.bool() # Convert float mask to boolean correct = (pred == target) & mask total = mask.sum() if total == 0: return torch.tensor(0.0, device=pred.device) return correct.sum().float() / total.float() def setup_wandb(rank: int, cfg: DictConfig, project_suffix: str = ""): """Setup wandb logging (only on rank 0).""" if rank != 0: return None # Load environment variables from .env file load_dotenv() # Get API key from config or environment variable API_KEY = cfg.training.training.wandb_api_key or os.environ.get("WANDB_API_KEY") try: wandb.login(key=API_KEY) except wandb.Error: print("wandb login failed. Skipping wandb setup.") return None # Build wandb init kwargs with optional resume capability wandb_kwargs = dict( project=f"pixie-3d{project_suffix}_{cfg.training.feature_type}", config={ "learning_rate": cfg.training.training.lr, "batch_size": cfg.training.training.batch_size, "model_channels": cfg.training.training.unet_model_channels, "num_res_blocks": cfg.training.training.unet_num_res_blocks, "mix_precision": getattr(cfg.training.training, "mix_precision", False), "train_size_split": cfg.training.training.train_size, }, ) run_id = getattr(cfg.training.training, "wandb_run_id", None) if run_id: # Continue logging to the same dashboard wandb_kwargs.update({"id": run_id, "resume": "must"}) return wandb.init(**wandb_kwargs) def get_checkpoint_paths(cfg: DictConfig): """Get checkpoint paths based on feature type using config paths.""" # Use config paths for base directories seg_base_dir = cfg.paths.discrete_checkpoint_dir cont_base_dir = cfg.paths.continuous_checkpoint_dir return seg_base_dir, cont_base_dir def get_latest_checkpoint_dirs(seg_base_dir: str, cont_base_dir: str): """Get the latest timestamp directories for checkpoints.""" import glob # Find all timestamp directories seg_timestamps = [d for d in os.listdir(seg_base_dir) if os.path.isdir(os.path.join(seg_base_dir, d))] cont_timestamps = [d for d in os.listdir(cont_base_dir) if os.path.isdir(os.path.join(cont_base_dir, d))] if not seg_timestamps or not cont_timestamps: raise ValueError(f"No timestamp directories found in checkpoint folders {seg_base_dir} or/and {cont_base_dir}") # Get latest timestamp directories latest_seg_ts = sorted(seg_timestamps)[-1] # Most recent timestamp latest_cont_ts = sorted(cont_timestamps)[-1] # Get latest checkpoints within those timestamp directories seg_checkpoint_dir = os.path.join(seg_base_dir, latest_seg_ts) cont_checkpoint_dir = os.path.join(cont_base_dir, latest_cont_ts) return seg_checkpoint_dir, cont_checkpoint_dir, latest_seg_ts, latest_cont_ts def get_checkpoint(checkpoint_dir: str, epoch: int = -1): """Get a checkpoint from a directory based on epoch number. Args: checkpoint_dir: Directory containing checkpoints epoch: Specific epoch to get checkpoint for. If -1, returns latest checkpoint. Returns: Path to the requested checkpoint, or None if not found. """ import glob checkpoints = glob.glob(os.path.join(checkpoint_dir, "epoch_*.pth")) if not checkpoints: return None # Extract epoch numbers epochs = [int(ckpt.split("epoch_")[-1].split(".")[0]) for ckpt in checkpoints] if epoch == -1: # Get latest checkpoint max_epoch_idx = np.argmax(epochs) return checkpoints[max_epoch_idx] else: # Get specific epoch checkpoint try: epoch_idx = epochs.index(epoch) return checkpoints[epoch_idx] except ValueError: return None def load_checkpoint(checkpoint_path: str, model, optimizer=None, scheduler=None, rank: int = 0): """Load checkpoint with proper error handling.""" if not checkpoint_path or not os.path.isfile(checkpoint_path): return 0 # Return starting epoch map_location = {'cuda:0': f'cuda:{rank}'} checkpoint = torch.load(checkpoint_path, map_location=map_location, weights_only=True) def _extract_state_dict(ckpt): """Return bare state_dict regardless of checkpoint wrapping.""" if isinstance(ckpt, dict): for key in ("model_state_dict", "state_dict"): if key in ckpt: return ckpt[key] return ckpt # assume it's already a state-dict try: model.load_state_dict(_extract_state_dict(checkpoint), strict=False) except RuntimeError as e: print(f"[Warning] Strict load failed for checkpoint – {e}. Trying non-strict.") model.load_state_dict(_extract_state_dict(checkpoint), strict=False) start_epoch = 0 if isinstance(checkpoint, dict): if "optimizer_state_dict" in checkpoint and optimizer is not None: optimizer.load_state_dict(checkpoint["optimizer_state_dict"]) if scheduler is not None and checkpoint.get("scheduler_state_dict") is not None: scheduler.load_state_dict(checkpoint["scheduler_state_dict"]) start_epoch = checkpoint.get("epoch", 0) + 1 if rank == 0: print(f"[Rank 0] Loaded checkpoint from {checkpoint_path} (starting at epoch {start_epoch})") return start_epoch def save_train_test_splits(train_dataset, test_dataset, full_dataset, ckpt_dir: str, rank: int = 0): """Save train/test split object IDs for reproducibility.""" if rank != 0: return train_ids = [full_dataset.obj_ids[i] for i in train_dataset.indices] test_ids = [full_dataset.obj_ids[i] for i in test_dataset.indices] print(f"Sample training object IDs: {train_ids[:5]}{'...' if len(train_ids) > 5 else ''}") print(f"Sample test object IDs: {test_ids[:3]}{'...' if len(test_ids) > 3 else ''}") save_json(train_ids, os.path.join(ckpt_dir, "train_set.json")) save_json(test_ids, os.path.join(ckpt_dir, "test_set.json")) print(f"Saved train/test split object IDs to: {ckpt_dir}") def print_dataset_info(full_dataset, train_size: int, test_size: int, rank: int = 0): """Print dataset information.""" if rank != 0: return print(f"\n=== Dataset Information ===") print(f"Total objects in dataset: {len(full_dataset)}") print(f"Training objects: {train_size}") print(f"Test objects: {test_size}") print(f"Train/test split ratio: {train_size/len(full_dataset):.1%}") def extract_state_dict(checkpoint): """Extract state dict from various checkpoint formats.""" if isinstance(checkpoint, dict): for key in ("model_state_dict", "state_dict"): if key in checkpoint: return checkpoint[key] return checkpoint # assume it's already a state-dict ================================================ FILE: pixie/utils.py ================================================ import os import sys import argparse import logging import json import shutil import objaverse from PIL import Image from pathlib import Path from typing import Dict, Any, Optional from omegaconf import DictConfig, OmegaConf import subprocess from dotenv import load_dotenv from hydra import initialize, compose from hydra.core.global_hydra import GlobalHydra import pickle from typing import Tuple, Optional import colorlog import numpy as np def set_logger(name: str = None, level: int = logging.INFO) -> logging.Logger: """Set up a colored logger using colorlog. Args: name: Logger name (defaults to root logger if None) level: Logging level Returns: Configured logger instance """ # Create logger logger = logging.getLogger(name) logger.setLevel(level) # Clear existing handlers to avoid duplicates if logger.handlers: logger.handlers.clear() # Create colored handler handler = colorlog.StreamHandler() formatter = colorlog.ColoredFormatter( "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s", datefmt=None, reset=True, log_colors={ 'DEBUG': 'cyan', 'INFO': 'green', 'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'red,bg_white', }, secondary_log_colors={}, style='%' ) handler.setFormatter(formatter) logger.addHandler(handler) # If this is the root logger, also configure basicConfig if name is None: logging.basicConfig(level=level, handlers=[handler]) return logger def str2bool(v): if isinstance(v, bool): return v if v.lower() in ('yes', 'true', 'True','t', 'y', '1'): return True elif v.lower() in ('no', 'false', 'False','f', 'n', '0'): return False else: raise argparse.ArgumentTypeError('Boolean value expected.') def get_conda_env(env_name): conda_init = "source $(conda info --base)/etc/profile.d/conda.sh" acv = f"bash -c '{conda_init} && conda activate {env_name} &&" return acv def _capture_command_output(cmd): """Run a command and capture its output.""" process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, bufsize=1) output_lines = [] while True: output = process.stdout.readline() if output == '' and process.poll() is not None: break if output: print(output.rstrip()) output_lines.append(output) return process.poll(), ''.join(output_lines) def _is_blender_nerf_error_only(output_text): """Check if the output contains only the harmless BlenderNeRF camera error.""" if "BlenderNeRF Camera" not in output_text or "not found" not in output_text: return False # Check for successful completion indicators success_indicators = ["Blender quit", "Finished", "Normalized scene exported"] return any(indicator in output_text for indicator in success_indicators) def _is_gaussian_splatting_addon_error_only(output_text): """Check if the output contains only harmless Gaussian Splatting addon errors.""" # Look for the specific addon unregister error gs_error_patterns = [ "RuntimeError: unregister_class(...):, missing bl_rna attribute from '_RNAMeta' instance", "Exception in module unregister():", "gaussian_splatting_io" ] # Check if this is a GS addon error if not any(pattern in output_text for pattern in gs_error_patterns): return False # Check for successful completion indicators success_indicators = ["Blender quit", "Finished", "Video saved to", "✅"] return any(indicator in output_text for indicator in success_indicators) def _check_for_errors(output_text): """Check output text for error patterns.""" error_patterns = [ "could not be opened: No such file or directory", "Error:", "ERROR:", "Failed to", "Traceback (most recent call last):", ] # Special handling for BlenderNeRF errors if _is_blender_nerf_error_only(output_text): logging.info("[RUN] Ignoring harmless BlenderNeRF camera error - command completed successfully") return False # Special handling for Gaussian Splatting addon errors if _is_gaussian_splatting_addon_error_only(output_text): logging.info("[RUN] Ignoring harmless Gaussian Splatting addon unregister error - command completed successfully") return False # Check for any error patterns for pattern in error_patterns: if pattern in output_text: return True return False def run_cmd(cmd, step_name="", *, conda_env=None, allow_error=False, dry_run=False, check_output=False): """Execute a shell command with optional conda-environment wrapping. Parameters ---------- cmd : str | list The command to run. Lists are automatically joined by spaces for convenience, so you can write ``["python", "script.py", "--arg", "val"]`` instead of hand-crafting long f-strings. step_name : str, optional Human-readable label used in logs. conda_env : str, optional If given, the command is executed inside that conda environment using the same *conda activate* wrapper used elsewhere in the codebase. allow_error : bool, default False When *False*, a non-zero exit status will terminate the program. dry_run : bool, default False Log the command but do not execute it. Useful for debugging. check_output : bool, default False If True, captures output to check for errors (needed for Blender). This may break progress bars but is necessary for some commands. """ # Convert list-based commands to a single string. if isinstance(cmd, list): cmd = " ".join(map(str, cmd)) if conda_env: conda_cmd = get_conda_env(conda_env) cmd = f"{conda_cmd} {cmd}'" # close the single quote opened in get_conda_env logging.info(f"[RUN] {step_name} | {cmd}") if dry_run: logging.info("[RUN] Dry-run enabled; command not executed.") return True # Auto-detect if this is a Blender command if 'blender' in cmd.lower() and not check_output: check_output = True logging.info(f"[RUN] Detected Blender command, enabling output checking for command: {cmd}") has_error=False # Execute command if check_output: return_code, output_text = _capture_command_output(cmd) has_error = _check_for_errors(output_text) else: # Use os.system for better compatibility with progress bars status = os.system(cmd) # os.system() returns a 16-bit wait status. The actual exit code is in the high bits. return_code = status >> 8 if (return_code != 0 or has_error) and not allow_error: logging.error(f"[RUN] Stopping pipeline at step: {step_name}") if has_error: logging.error(f"[RUN] Error detected in output") sys.exit(return_code or 1) logging.info(f"[RUN] Successfully completed step: {step_name}") return return_code == 0 and not has_error def load_json(path): with open(path, "r") as f: return json.load(f) def save_json(data, path): with open(path, "w") as f: json.dump(data, f, indent=2) def get_obj_class_for_id(obj_id: str, cfg: DictConfig) -> str: """Get object class for a given object ID.""" assert os.path.exists(cfg.paths.obj_metadata_path), f"obj_metadata_path: {cfg.paths.obj_metadata_path} does not exist" # Handle relative paths by making them absolute relative to the project root metadata_path = cfg.paths.obj_metadata_path obj_metadata = load_json(metadata_path) return obj_metadata.get(obj_id, {}).get("obj_class", "UNKNOWN") def download_object(obj_id: str): """Download a single object from Objaverse to the current directory.""" logging.info(f"Downloading object with UID: {obj_id}") try: objects = objaverse.load_objects(uids=[obj_id]) logging.info(f"Successfully downloaded object: {obj_id}") return objects.get(obj_id) except Exception as e: print(f"Failed to download object {obj_id}: {e}") # Fallback print logging.error(f"Failed to download object {obj_id}: {e}") return None def prepare_nerf_dataset_from_blender_output(data_dir): """ Converts raw Blender output into a dataset format compatible with NeRF training. - Removes alpha channels from PNG images. - Creates `transforms.json` and empty `transforms_test.json`. """ # data_dir already contains the obj_id from the pipeline source_path = data_dir train_dir = os.path.join(source_path, "train") train_transforms = os.path.join(source_path, "transforms_train.json") base_transforms = os.path.join(source_path, "transforms.json") if os.path.exists(train_transforms): shutil.copy(train_transforms, base_transforms) elif os.path.exists(base_transforms): shutil.copy(base_transforms, train_transforms) empty_test_transforms = { "frames": [], "camera_angle_x": 0.0, "camera_angle_y": 0.0 } save_json(empty_test_transforms, os.path.join(source_path, "transforms_test.json")) if not os.path.isdir(train_dir): logging.warning(f"Training directory not found, skipping conversion: {train_dir}") return for filename in os.listdir(train_dir): if not filename.lower().endswith(".png"): continue img_path = os.path.join(train_dir, filename) try: with Image.open(img_path) as img: if img.mode == 'RGBA': img.convert('RGB').save(img_path) except Exception as e: logging.warning(f"Could not process image {img_path}: {e}") logging.info(f"Successfully prepared NeRF dataset for data directory: {data_dir}") def resolve_paths(cfg: DictConfig) -> DictConfig: """Resolve all path configurations.""" # Handle empty/null base_path to use current directory if not cfg.paths.base_path: cfg.paths.base_path = os.getcwd() if not cfg.paths.inference_results_dir: cfg.paths.inference_results_dir = f"inference_combined_mse_{cfg.training.feature_type}_results" # Resolve all path variables cfg = OmegaConf.create(OmegaConf.to_container(cfg, resolve=True)) return cfg def join_path(*components): """Safely join path components, returning None if any component is invalid.""" try: # If any component is None, return None if any(c is None for c in components): return None valid_components = [str(c) for c in components if c and str(c).strip()] return os.path.join(*valid_components) if valid_components else None except: return None def get_output_paths(cfg: DictConfig, obj_id: str) -> Dict[str, str]: """Get all output paths for a specific object.""" paths = {} # Blender output paths['data_dir'] = join_path(cfg.paths.data_dir, obj_id) # NeRF output paths['nerf_output'] = join_path(cfg.paths.outputs_dir, obj_id, cfg.training_3d.nerf.method) # Gaussian Splatting output paths['gs_output'] = join_path(cfg.paths.outputs_dir, obj_id, "gs") # Render output paths['render_output'] = join_path(cfg.paths.render_outputs_dir, obj_id) # Material segmentation outputs if cfg.material_mode == 'vlm': paths['vlm_base_dir'] = join_path(cfg.paths.vlm_seg_mat_sample_results_dir, obj_id) elif cfg.material_mode == 'neural': paths['neural_base_dir'] = join_path(cfg.paths.base_path, cfg.paths.inference_results_dir, cfg.segmentation.neural.result_id, obj_id) # PhysGaussian output paths['physgaussian_output'] = join_path(cfg.paths.physgaussian_output_dir, cfg.material_mode, obj_id) # Blender output paths['blender_output'] = join_path(cfg.paths.blender_output_dir, obj_id) # Blender scene file paths['blend_file_path'] = cfg.paths.blend_file_path # Blender addon paths paths['blender_gs_addon_path'] = cfg.paths.blender_gs_addon_path if not cfg.is_objaverse_object: logging.warning("Real data must use `disable_scene_contraction=True` and `USE_COLMAP_DATAPARSER`. Setting this automatically.") cfg.training_3d.nerf.disable_scene_contraction = True if should_use_colmap(cfg, paths): os.environ["USE_COLMAP_DATAPARSER"] = "1" assert cfg.material_mode == "neural", f"Real data must use neural material mode. You have: `{cfg.material_mode}` mode" return paths def should_use_colmap(cfg: DictConfig, paths: dict) -> bool: """Determine if Colmap should be used for data parsing.""" return "colmap" in os.listdir(paths['data_dir']) def get_physics_config_path(cfg: DictConfig, obj_id: str, material_mode: str, obj_class: str) -> str: """Get the appropriate physics configuration path.""" if cfg.is_objaverse_object: return f"{cfg.paths.physgaussian_config_dir}/objaverse/custom_{obj_class}_config.json" else: return f"{cfg.paths.physgaussian_config_dir}/real_scene/custom_{obj_id}_config.json" def should_use_white_bg(cfg: DictConfig, material_mode: str, obj_class: str) -> bool: """Determine if white background should be used for physics simulation.""" if material_mode != 'neural' or obj_class not in cfg.physics.no_white_bg_classes: return cfg.physics.white_bg return False def create_directories(paths: Dict[str, str]) -> None: """Create all necessary directories.""" for path in paths.values(): if path and not path.startswith('${'): path_obj = Path(path) # If it's a file path (has extension), create the parent directory if path_obj.suffix: path_obj.parent.mkdir(parents=True, exist_ok=True) else: # It's a directory path, create it directly path_obj.mkdir(parents=True, exist_ok=True) import json logging.info(f"Created directories:\n{json.dumps(paths, indent=2)}") def get_latest_nerf_run(output_dir: str) -> Optional[str]: """Get the path to the latest NeRF training run directory. Returns: Path to the latest run directory if found, None otherwise """ if not os.path.exists(output_dir): return None dirs = [os.path.join(output_dir, d) for d in os.listdir(output_dir) if os.path.isdir(os.path.join(output_dir, d))] return max(dirs, key=os.path.getmtime) if dirs else None def configure_real_scene_voxelization(cfg: DictConfig) -> None: """Auto-configure voxelization for real scene data.""" scene_config = load_json(os.path.join(cfg.paths.data_dir, "scene_bounds.json"))[cfg.obj_id] cfg.voxelization.scene_bounds = scene_config["scene_bounds"] cfg.voxelization.voxel_size = scene_config["voxel_size"] logging.info(f"Auto-configured voxelization for {cfg.obj_id}. Set scene bounds to {cfg.voxelization.scene_bounds} and voxel size to {cfg.voxelization.voxel_size}") def validate_config(cfg: DictConfig, single_obj: bool = True) -> None: """Validate the configuration.""" if cfg.obj_id is None and cfg.obj_path is None and single_obj: raise ValueError("Either obj_id or obj_path must be provided") if cfg.material_mode not in ['vlm', 'neural']: raise ValueError(f"Invalid material_mode: {cfg.material_mode}. Available modes are: vlm, neural") if cfg.material_mode == 'neural': # if not cfg.segmentation.neural.result_id: # raise ValueError("result_id is required for neural segmentation mode") if not cfg.segmentation.neural.feature_type: raise ValueError("feature_type is required for neural segmentation mode") # Validate and resolve voxelization settings if cfg.voxelization.voxel_size is None and cfg.voxelization.grid_size is None: raise ValueError("Either voxel_size or grid_size must be provided in voxelization config") if cfg.voxelization.voxel_size is None: cfg.voxelization.voxel_size = 1.0 / cfg.voxelization.grid_size def save_contextual_config(cfg: DictConfig, output_dir: str, context: str = "pipeline") -> None: """Save context-specific configuration for reproducibility. This function automatically determines which config sections are relevant based on the context and saves only those parts, making it maintainable and automatically adapting to config changes. Args: cfg: The full configuration output_dir: Directory where to save the config context: Context type ('blender', 'gaussian_splatting', 'voxelization', any 'vlm_*' context, 'pipeline') """ # Define which config sections are relevant for each context context_configs = { "blender": { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "rendering": OmegaConf.to_container(cfg.data_rendering, resolve=True), "paths": {"blender_path": str(cfg.paths.blender_path)}, }, "gaussian_splatting": { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "training": {"gaussian_splatting": OmegaConf.to_container(cfg.training_3d.gaussian_splatting, resolve=True)}, "paths": {"gaussian_splatting_dir": str(cfg.paths.gaussian_splatting_dir)}, }, "voxelization": { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "voxelization": OmegaConf.to_container(cfg.voxelization, resolve=True), }, "physics_simulation": { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "physics": OmegaConf.to_container(cfg.physics, resolve=True), "paths": {"physgaussian_dir": str(cfg.paths.physgaussian_dir)}, }, "blender_output_render": { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "rendering": OmegaConf.to_container(cfg.output_rendering, resolve=True), "paths": {"blender_output_dir": str(cfg.paths.blender_output_dir)}, }, "blender_gs_render": { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "rendering": OmegaConf.to_container(cfg.output_rendering, resolve=True), "paths": {"blender_output_dir": str(cfg.paths.blender_output_dir)}, }, } # Handle VLM contexts with a simple base config if context.startswith("vlm_"): context_configs[context] = { "obj_id": cfg.obj_id, "obj_path": cfg.obj_path, "segmentation": {"vlm": {"labeling": OmegaConf.to_container(cfg.segmentation.vlm.labeling, resolve=True)}}, } if context not in context_configs: raise ValueError(f"Unknown context: {context}. Available contexts: {list(context_configs.keys())}") # Get the relevant config for this context relevant_config = context_configs[context] # Convert to dict and save # If relevant_config is already a dict, use it directly; otherwise convert from OmegaConf if isinstance(relevant_config, dict): config_dict = relevant_config else: config_dict = OmegaConf.to_container(relevant_config, resolve=True) # Save as YAML config_name = f"{context}_config.yaml" config_path = Path(output_dir) / config_name config_path.parent.mkdir(parents=True, exist_ok=True) OmegaConf.save(config_dict, config_path) logging.info(f"Saved {context} configuration: {config_path}") def get_vlm_api_key(cfg: DictConfig, model_name: str) -> str: """Get API key from config or environment.""" load_dotenv() cfg_api = cfg.segmentation.vlm.labeling.api if "gemini" in model_name: return os.environ.get('GEM_API_KEY') or cfg_api.gemini_api_key or "" elif "claude" in model_name: return os.environ.get('CLAUDE_API_KEY') or cfg_api.claude_api_key or "" elif "gpt" in model_name: return os.environ.get('GPT_API_KEY') or cfg_api.gpt_api_key or "" return "" def get_vlm_results(cfg: DictConfig) -> Dict[str, Any]: """Get VLM task results as a dictionary keyed by task name.""" results = {} obj_id = cfg.obj_id # VLM segmentation results vlm_seg_path = f"{cfg.paths.vlm_seg_results_dir}/{obj_id}/vlm_results.json" results['segmentation'] = load_json(vlm_seg_path) if os.path.exists(vlm_seg_path) else None # VLM segmentation critic results critic_path = f"{cfg.paths.vlm_seg_critic_results_dir}/{obj_id}/critic_results.json" results['seg_critic'] = load_json(critic_path) if os.path.exists(critic_path) else None # VLM physics sampler results sampler_path = f"{cfg.paths.vlm_seg_mat_sample_results_dir}/{obj_id}/sampler_results.json" results['phys_sampler'] = load_json(sampler_path) if os.path.exists(sampler_path) else None # VLM parse segmentation critic results parse_path = f"{cfg.paths.vlm_seg_mat_sample_results_dir}/{obj_id}/parse_results.json" results['parse_seg_critic'] = load_json(parse_path) if os.path.exists(parse_path) else None # Final chosen VLM results (from material segmentation) base_dir = f"{cfg.paths.vlm_seg_mat_sample_results_dir}/{obj_id}" if os.path.exists(base_dir): sample_dirs = [d for d in os.listdir(base_dir) if d.startswith("sample_")] if sample_dirs: chosen_path = f"{base_dir}/{sample_dirs[0]}/chosen_vlm_results.json" results['chosen_results'] = load_json(chosen_path) if os.path.exists(chosen_path) else None return results def load_config(config_path="../config", config_name="config"): """ Load and merge Hydra configuration. :param config_path: Path to the config directory :param config_name: Name of the main config file (without .yaml extension) :return: Merged configuration object """ # Initialize Hydra GlobalHydra.instance().clear() initialize(version_base=None, config_path=config_path) # Compose the configuration cfg = compose(config_name=config_name) return cfg def save_pickle(data, path): with open(path, "wb") as f: pickle.dump(data, f) def load_pickle(path): with open(path, "rb") as f: return pickle.load(f) def get_material_vlm_segmentation_path(cfg: DictConfig, render_output_dir: str, paths: dict) -> Tuple[str, str]: """Get the path to the material segmentation.""" sample_id = f"sample_{cfg.physics.sample_id}" sample_render_output_dir = os.path.join(render_output_dir, sample_id) point_cloud_path = os.path.join(sample_render_output_dir, "segmented_semantics.ply") return point_cloud_path def get_material_neural_segmentation_path(cfg: DictConfig, render_output_dir: str, paths: dict) -> Tuple[str, str]: sample_output_dir = Path(paths['neural_base_dir']) if not cfg.is_objaverse_object: point_cloud_path = sample_output_dir / "world_mapped_preds.ply" else: point_cloud_path = sample_output_dir / "mapped_preds.ply" return point_cloud_path def generate_material_segmentation( cfg: DictConfig, render_output_dir: str, paths: dict) -> Tuple[Optional[str], Optional[str]]: """Generates material segmentation for a single material sample.""" base_sample_dir = Path(paths['vlm_base_dir']) material_dict_path = None if cfg.segmentation.material_dict_path: material_dict_path = Path(cfg.segmentation.material_dict_path) else: # Use configured sample_id instead of auto-detection sample_id = f"sample_{cfg.physics.sample_id}" sample_dir = base_sample_dir / sample_id if not os.path.exists(sample_dir): logging.error(f"Configured sample directory not found: {sample_dir}") return None, None material_dict_path = sample_dir / "chosen_vlm_results.json" logging.info(f"Using configured sample: {sample_dir}") if not os.path.exists(material_dict_path): logging.warning(f"Material dict not found, skipping: {material_dict_path}") return None, None sample_id = material_dict_path.parent.name logging.info(f"Processing material sample {sample_id}") sample_render_output_dir = os.path.join(render_output_dir, sample_id) os.makedirs(sample_render_output_dir, exist_ok=True) material_dict_copy_path = os.path.join(sample_render_output_dir, "material_dict.json") shutil.copy2(material_dict_path, material_dict_copy_path) logging.info(f"Copied material dictionary to {material_dict_copy_path}") segmentation_cmd = [ "python", "pixie/voxel/segmentation.py", "--grid_feature_path", f"{render_output_dir}/clip_features.npz", "--occupancy_path", f"{render_output_dir}/clip_features_pc.ply", "--output_dir", sample_render_output_dir, "--material_dict_path", material_dict_copy_path, "--use_spatial_smoothing", str(cfg.segmentation.vlm.use_spatial_smoothing), "--overwrite", str(cfg.segmentation.vlm.overwrite), "--background_id", str(cfg.training.background_id), ] run_cmd(segmentation_cmd, step_name=f"SEGMENTATION_{sample_id}") return sample_render_output_dir def _find_latest_inference_dir(cfg: DictConfig) -> Optional[Path]: """Find the latest inference results directory.""" base_dir = Path(cfg.paths.base_path) / cfg.paths.inference_results_dir if not os.path.exists(base_dir): return None timestamp_dirs = [d for d in base_dir.iterdir() if d.is_dir() and d.name.replace('_', '').replace('-', '').isdigit()] return max(timestamp_dirs, key=lambda x: x.stat().st_mtime) if timestamp_dirs else None def _get_pred_path(sample_output_dir: Path, sample_name: str) -> Path: """Get prediction file path.""" if not sample_output_dir: return None return os.path.join(sample_output_dir, f"{sample_name}_pred.npy") def _build_config_overrides(cfg: DictConfig) -> str: """Build config override arguments for inference script.""" overrides = [] # Essential configs that inference script needs if cfg.paths.base_path: overrides.append(f"paths.base_path={cfg.paths.base_path}") if cfg.training.feature_type: overrides.append(f"training.feature_type={cfg.training.feature_type}") if cfg.paths.render_outputs_dir: overrides.append(f"paths.render_outputs_dir={cfg.paths.render_outputs_dir}") overrides.append(f"training.enforce_mask_consistency={cfg.training.enforce_mask_consistency} ") overrides.append(f"training.inference.CONT_EPOCH={cfg.training.inference.CONT_EPOCH} ") overrides.append(f"training.inference.SEG_EPOCH={cfg.training.inference.SEG_EPOCH} ") return " ".join(overrides) def generate_neural_segmentation(cfg: DictConfig, render_output_dir: str, paths: dict) -> Tuple[str, str]: """Generates material segmentation using a pre-trained neural network.""" sample_name = f"sample_{cfg.physics.sample_id}" # Initialize paths sample_output_dir = paths['neural_base_dir'] pred_path = _get_pred_path(sample_output_dir, sample_name) # Run inference if needed if not pred_path or not os.path.exists(pred_path): # Pass config overrides to inference script override_args = _build_config_overrides(cfg) inference_cmd = f"python third_party/Wavelet-Generation/trainer/inference_combined.py obj_id={cfg.obj_id} {override_args}" if not cfg.segmentation.neural.cache_results: logging.info(f"[NEURAL] Prediction path does not exist: {pred_path}. Running inference...") run_cmd(inference_cmd, step_name="NEURAL_INFERENCE") # Update paths to latest inference results latest_dir = _find_latest_inference_dir(cfg) if latest_dir: sample_output_dir = join_path(latest_dir, cfg.obj_id) pred_path = _get_pred_path(sample_output_dir, sample_name) # Update result_id to match the actual inference results cfg.segmentation.neural.result_id = latest_dir.name logging.info(f"[NEURAL] Updated result_id to: {cfg.segmentation.neural.result_id}") logging.info(f"[NEURAL] Updated prediction path to: {pred_path}") paths["neural_base_dir"] = sample_output_dir else: logging.error("[NEURAL] No inference results found after running inference") # Generate point cloud mapping mask_path = join_path(sample_output_dir, f"{sample_name}_mask.npy") point_cloud_path = join_path(sample_output_dir, "mapped_preds.ply") world_point_cloud_path = join_path(sample_output_dir, "world_mapped_preds.ply") latest_run = get_latest_nerf_run(paths['nerf_output']) dataparser_path = os.path.join(latest_run, "dataparser_transforms.json") map_cmd = ( "python pixie/voxel/map_pred_to_coords.py " f"mapping.pred_path={str(pred_path)} " f"mapping.mask_path={str(mask_path)} " f"mapping.grid_feature_path={render_output_dir}/clip_features.npz " f"mapping.output_path={str(point_cloud_path)} " f"mapping.obj_id={cfg.obj_id} " ) override_args = _build_config_overrides(cfg) map_cmd += override_args if not os.path.exists(point_cloud_path): run_cmd(map_cmd, "MAP_PRED_TO_COORDS") if not cfg.is_objaverse_object and not os.path.exists(world_point_cloud_path): map_cmd += f" mapping.world_output_path={str(world_point_cloud_path)} " map_cmd += f" mapping.dataparser_path={str(dataparser_path)} " run_cmd(map_cmd, "MAP_PRED_TO_COORDS") # Create a proper sample directory path that includes the sample ID sample_id = f"sample_{cfg.physics.sample_id}" sample_render_output_dir = os.path.join(str(sample_output_dir), sample_id) os.makedirs(sample_render_output_dir, exist_ok=True) return sample_render_output_dir def format_real_scene_sample(cfg: DictConfig, paths: dict): """Format real scene sample.""" mat_grid = np.zeros((64, 64, 64, 4), dtype=np.float32) out_sample_dir = join_path(paths['render_output'], f"sample_{cfg.physics.sample_id}") os.makedirs(out_sample_dir, exist_ok=True) np.save(join_path(out_sample_dir, "material_grid.npy"), mat_grid) def get_material_segmentation_path(cfg: DictConfig, render_output_dir: str, paths: dict) -> Tuple[str, str]: if cfg.material_mode == "vlm": return get_material_vlm_segmentation_path(cfg, render_output_dir, paths) elif cfg.material_mode == "neural": return get_material_neural_segmentation_path(cfg, render_output_dir, paths) else: raise ValueError(f"Invalid material mode: {cfg.material_mode}") ================================================ FILE: pixie/viz_utils.py ================================================ import matplotlib.pyplot as plt from matplotlib.patches import Patch from matplotlib import cm from matplotlib import colors as mcolors import numpy as np from plyfile import PlyData import random from pathlib import Path from pixie.utils import run_cmd import plotly.graph_objects as go import numpy as np import plotly.express as px import json def viz_cuboid(ax, center, size, color='r', linewidth=1, linestyle='-', alpha=1.0): """ Plots a 3D wireframe cuboid given center and size. Parameters ---------- ax : matplotlib Axes3D center : list or array [x, y, z] Center coordinates of the cuboid size : list or array [dx, dy, dz] Half-sizes of the cuboid in each dimension color : color string or RGB tuple linewidth : float linestyle : string alpha : float """ x_c, y_c, z_c = center dx, dy, dz = size # Calculate the 8 vertices of the cuboid x_min, x_max = x_c - dx, x_c + dx y_min, y_max = y_c - dy, y_c + dy z_min, z_max = z_c - dz, z_c + dz # Define the 12 edges of the cuboid edges = [ # Bottom face ([x_min, x_max], [y_min, y_min], [z_min, z_min]), ([x_min, x_min], [y_min, y_max], [z_min, z_min]), ([x_max, x_max], [y_min, y_max], [z_min, z_min]), ([x_max, x_min], [y_max, y_max], [z_min, z_min]), # Top face ([x_min, x_max], [y_min, y_min], [z_max, z_max]), ([x_min, x_min], [y_min, y_max], [z_max, z_max]), ([x_max, x_max], [y_min, y_max], [z_max, z_max]), ([x_max, x_min], [y_max, y_max], [z_max, z_max]), # Vertical edges ([x_min, x_min], [y_min, y_min], [z_min, z_max]), ([x_max, x_max], [y_min, y_min], [z_min, z_max]), ([x_max, x_max], [y_max, y_max], [z_min, z_max]), ([x_min, x_min], [y_max, y_max], [z_min, z_max]) ] # Plot each edge for edge in edges: ax.plot(edge[0], edge[1], edge[2], color=color, linewidth=linewidth, linestyle=linestyle, alpha=alpha) def viz_cuboid_plotly(fig, center, size, color='red', linewidth=2, opacity=1.0, name=None, rotation=None): """ Adds a 3D wireframe cuboid to a Plotly figure. Parameters ---------- fig : plotly.graph_objects.Figure or None Existing figure to add cuboid to. If None, creates new figure. center : list or array [x, y, z] Center coordinates of the cuboid size : list or array [dx, dy, dz] Half-sizes of the cuboid in each dimension color : color string or RGB tuple Color of the cuboid edges linewidth : float Width of the cuboid edges opacity : float Opacity of the cuboid (0-1) name : str, optional Name for the cuboid (appears in legend if provided) rotation : None or length-3 list/tuple of floats Euler angles in degrees (rot_x, rot_y, rot_z). If provided, the cuboid is rotated by rot_x about the X-axis, then rot_y about Y, then rot_z about Z (all in degrees) before plotting. Returns ------- fig : plotly.graph_objects.Figure The figure with the cuboid added """ x_c, y_c, z_c = center dx, dy, dz = size # Calculate the 8 vertices of the cuboid x_min, x_max = x_c - dx, x_c + dx y_min, y_max = y_c - dy, y_c + dy z_min, z_max = z_c - dz, z_c + dz # Define vertices vertices = np.array([ [x_min, y_min, z_min], # 0 [x_max, y_min, z_min], # 1 [x_max, y_max, z_min], # 2 [x_min, y_max, z_min], # 3 [x_min, y_min, z_max], # 4 [x_max, y_min, z_max], # 5 [x_max, y_max, z_max], # 6 [x_min, y_max, z_max], # 7 ]) # --- Apply rotation if requested --------------------------------------- if rotation is not None: # Expect rotation = [rot_x, rot_y, rot_z], in degrees rot = np.asarray(rotation, dtype=float) if rot.shape != (3,): raise ValueError("`rotation` must be a length‐3 iterable: [rot_x, rot_y, rot_z] in degrees.") # Convert degrees → radians rx, ry, rz = np.deg2rad(rot) # Rotation matrix around X-axis Rx = np.array([ [1, 0, 0], [0, np.cos(rx), -np.sin(rx)], [0, np.sin(rx), np.cos(rx)] ]) # Rotation matrix around Y-axis Ry = np.array([ [ np.cos(ry), 0, np.sin(ry)], [ 0, 1, 0], [-np.sin(ry), 0, np.cos(ry)] ]) # Rotation matrix around Z-axis Rz = np.array([ [np.cos(rz), -np.sin(rz), 0], [np.sin(rz), np.cos(rz), 0], [ 0, 0, 1] ]) # Combined rotation: first X, then Y, then Z R = Rz @ Ry @ Rx # Translate to origin, rotate, then translate back center_array = np.array(center) vertices = vertices - center_array # Translate to origin vertices = vertices @ R.T # Apply rotation vertices = vertices + center_array # Translate back # ------------------------------------------------------------------------ # Define edges as pairs of vertex indices edges = [ # Bottom face [0, 1], [1, 2], [2, 3], [3, 0], # Top face [4, 5], [5, 6], [6, 7], [7, 4], # Vertical edges [0, 4], [1, 5], [2, 6], [3, 7] ] # Create edge traces edge_trace = [] for edge in edges: x = [vertices[edge[0]][0], vertices[edge[1]][0], None] y = [vertices[edge[0]][1], vertices[edge[1]][1], None] z = [vertices[edge[0]][2], vertices[edge[1]][2], None] edge_trace.extend([x, y, z]) # Flatten the coordinates x_edges = [] y_edges = [] z_edges = [] for i in range(0, len(edge_trace), 3): x_edges.extend(edge_trace[i]) y_edges.extend(edge_trace[i+1]) z_edges.extend(edge_trace[i+2]) # Create the 3D line trace for all edges cuboid_trace = go.Scatter3d( x=x_edges, y=y_edges, z=z_edges, mode='lines', line=dict(color=color, width=linewidth), opacity=opacity, name=name, showlegend=bool(name) # Only show in legend if name is provided ) # Handle figure creation or addition if fig is None: fig = go.Figure(data=[cuboid_trace]) fig.update_layout( scene=dict( camera=dict(eye=dict(x=1.5, y=0, z=0)), aspectmode="data", dragmode="orbit", ), margin=dict(l=0, r=0, b=0, t=30), ) else: fig.add_trace(cuboid_trace) return fig def viz_plotly( points, colors, *, discrete_feature=False, continuous_feature=False, cmap="turbo", # Plotly's built-in name; can also be a list/tuple vmin=None, vmax=None, marker_size=2, opacity=0.8, rotation=None, # <-- New: [rot_x, rot_y, rot_z] in degrees fig=None, # <-- New: existing figure to add trace to show=True, # <-- New: whether to show the figure name=None, # <-- New: trace name for legend ): """ 3-D scatter with Plotly, with an optional rotation of the point cloud. Parameters ---------- points : (N,3) array-like colors : array-like – 1-D values or RGB triplets discrete : bool – treat `colors` as class labels continuous : bool – treat `colors` as scalars cmap : str | list – Plotly colorscale (only used if `continuous`) vmin, vmax : float – explicit colour-range limits (continuous) or int limits (discrete). If None they are inferred. marker_size : int/float opacity : float rotation : None or length-3 list/tuple of floats Euler angles in degrees (rot_x, rot_y, rot_z). If provided, each point is rotated by rot_x about the X-axis, then rot_y about Y, then rot_z about Z (all in degrees) before plotting. fig : plotly.graph_objects.Figure, optional Existing figure to add trace to. If None, creates new figure. show : bool Whether to display the figure. Default True. name : str, optional Name for the trace (appears in legend if provided). """ points = np.asarray(points) colors = np.asarray(colors) # --- Apply rotation if requested --------------------------------------- if rotation is not None: # Expect rotation = [rot_x, rot_y, rot_z], in degrees rot = np.asarray(rotation, dtype=float) if rot.shape != (3,): raise ValueError("`rotation` must be a length‐3 iterable: [rot_x, rot_y, rot_z] in degrees.") # Convert degrees → radians rx, ry, rz = np.deg2rad(rot) # Rotation matrix around X-axis Rx = np.array([ [1, 0, 0], [0, np.cos(rx), -np.sin(rx)], [0, np.sin(rx), np.cos(rx)] ]) # Rotation matrix around Y-axis Ry = np.array([ [ np.cos(ry), 0, np.sin(ry)], [ 0, 1, 0], [-np.sin(ry), 0, np.cos(ry)] ]) # Rotation matrix around Z-axis Rz = np.array([ [np.cos(rz), -np.sin(rz), 0], [np.sin(rz), np.cos(rz), 0], [ 0, 0, 1] ]) # Combined rotation: first X, then Y, then Z R = Rz @ Ry @ Rx # Apply to all points points = points @ R.T # ------------------------------------------------------------------------ if discrete_feature: colors_int = colors.astype(int) if vmin is None: vmin = int(colors_int.min()) if vmax is None: vmax = int(colors_int.max()) color_discrete_map = px.colors.qualitative.Plotly # Build an evenly-spaced colourscale for integers colorscale = [ [(i / max(1, len(color_discrete_map) - 1)), col] for i, col in enumerate(color_discrete_map) ] marker_kw = dict( size=marker_size, color=colors_int, colorscale=colorscale, cmin=vmin, cmax=vmax, colorbar=dict(title="Class ID"), opacity=opacity, ) elif continuous_feature: if vmin is None: vmin = float(colors.min()) if vmax is None: vmax = float(colors.max()) marker_kw = dict( size=marker_size, color=colors, colorscale=cmap, cmin=vmin, cmax=vmax, colorbar=dict(title="Value"), opacity=opacity, ) else: # treat `colors` as literal RGB or named colours (no colourbar) marker_kw = dict(size=marker_size, color=colors, opacity=opacity) # Create scatter trace scatter = go.Scatter3d( x=points[:, 0], y=points[:, 1], z=points[:, 2], mode="markers", marker=marker_kw, name=name, ) # Handle figure creation or addition if fig is None: fig = go.Figure(data=[scatter]) fig.update_layout( scene=dict( camera=dict(eye=dict(x=1.5, y=0, z=0)), aspectmode="data", dragmode="orbit", ), margin=dict(l=0, r=0, b=0, t=30), ) else: fig.add_trace(scatter) if show: fig.show() return fig def distinct_hsv_palette(n: int, seed: int = 42): """Return *n* well-spaced RGB colours (0-1 floats).""" random.seed(seed) base = [ (0.00, 0.64, 0.73), # cyan-ish (0.686, 0.765, 0.149), # lime (0.80, 0.25, 0.25), # red (0.85, 0.40, 0.85), # magenta (0.212, 0.400, 0.221), # dark-green (0.15, 0.30, 0.85), # blue (0.37, 0.17, 0.85), # purple (0.80, 0.50, 0.00), # orange (0.85, 0.68, 0.00), # yellow (0.40, 0.75, 0.75), # teal (0.68, 0.50, 0.86), # lavender (0.78, 0.50, 0.30), # coral ] # recycle if n > len(base) return (base * ((n + len(base) - 1) // len(base)))[:n] PALETTE_MAP = {} # hook for future warm-/cool palettes etc. def get_color_for_part_label(part_label: int, num_part_label: int = 8, *, palette_type: str = 'default'): """Return an RGB colour (0-1) for *part_label* using a fixed palette.""" if palette_type != 'default' and palette_type in PALETTE_MAP: palette = PALETTE_MAP[palette_type] if part_label >= len(palette): # fall back if palette runs short palette = distinct_hsv_palette(num_part_label) else: palette = distinct_hsv_palette(num_part_label) # ------------------------------------------------------------------ # Handle "invalid" or sentinel labels (e.g. -1 from nearest-neighbour # mapping when no match is found). We show them in a neutral grey so # they are still visible but clearly distinguished from valid labels. # ------------------------------------------------------------------ if part_label < 0: return (0.6, 0.6, 0.6) # light grey (0-1 range) if part_label >= len(palette): raise ValueError( f"Part label {part_label} ≥ palette length {len(palette)}") return palette[part_label] def _prep_colors(c, *, cmap='viridis', vmin=None, vmax=None, discrete=False, palette_type='default'): """ Accepts • Nx3 RGB → returns unchanged RGB • N scalar floats/int → continuous colormap • N integer labels (discrete) → palette colours + legend helpers Returns rgb (N,3), is_scalar, norm, legend_info legend_info is None for continuous; otherwise (uniq_labels, colour_list) """ c = np.asarray(c) # ---------- discrete labels ---------- # if discrete: if c.ndim != 1: raise ValueError( "Discrete mode expects a 1-D array of integer labels.") labels = c.astype(int) uniq = np.unique(labels) # palette size = max label idx + 1 (robust if labels not 0…K−1) rgb = np.array([ get_color_for_part_label(lbl, num_part_label=int(labels.max()) + 1, palette_type=palette_type) for lbl in labels ], dtype=float) legend_info = (uniq, [ get_color_for_part_label(lbl, num_part_label=int(labels.max()) + 1, palette_type=palette_type) for lbl in uniq ]) return rgb, False, None, legend_info # ---------- continuous scalars ---------- # if c.ndim == 1: vmin = c.min() if vmin is None else vmin vmax = c.max() if vmax is None else vmax norm = mcolors.Normalize(vmin, vmax, clip=True) rgb = cm.get_cmap(cmap)(norm(c))[:, :3] return rgb, True, norm, None # ---------- already RGB ---------- # if c.max() > 1.0: # assume 0-255 ints c = c / 255.0 return c, False, None, None # ─────────────────────────────────────────────────────────── # 3-D scatter with scalar colour-bar OR label legend # ─────────────────────────────────────────────────────────── def viz( points, colors=None, ax=None, *, elev=0, azim=0, size=1, cmap="turbo", title=None, vmin=None, vmax=None, discrete=False, palette_type="default", show_colorbar=True, cbar_kwargs=None, label_names=None, scene_bounds=None, rotation=None, ): """ 3-D scatter that automatically adds: • a colour-bar (continuous scalar data), or • a legend (discrete labels). Parameters ---------- points : (N,3) float colors : (N,3) RGB | (N,) scalars | (N,) int labels discrete : True → treat *colors* as integer part labels palette_type : choose alternative palettes (future-proof) label_names : optional list/array mapping label-id → text in legend rotation : None or length-3 list/tuple of floats Euler angles in degrees (rot_x, rot_y, rot_z). If provided, each point is rotated by rot_x about the X-axis, then rot_y about Y, then rot_z about Z (all in degrees) before plotting. """ # --- figure / axis boilerplate ----------------------------------------- created_fig = False if ax is None: fig = plt.figure() ax = fig.add_subplot(projection="3d") created_fig = True else: fig = ax.get_figure() # ------------------------------------------------------------------ # Optional clipping to an axis-aligned bounding box (scene_bounds) # scene_bounds should be ((xmin, ymin, zmin), (xmax, ymax, zmax)). # Points outside are discarded from the plot. Axis limits are set so # the resulting view is nicely framed to that box. # ------------------------------------------------------------------ pts = np.asarray(points) if colors is None: cols = np.full((len(points), 3), 0.5) # Gray color for all points else: cols = colors # --- Apply rotation if requested --------------------------------------- if rotation is not None: # Expect rotation = [rot_x, rot_y, rot_z], in degrees rot = np.asarray(rotation, dtype=float) if rot.shape != (3,): raise ValueError("`rotation` must be a length‐3 iterable: [rot_x, rot_y, rot_z] in degrees.") # Convert degrees → radians rx, ry, rz = np.deg2rad(rot) # Rotation matrix around X-axis Rx = np.array([ [1, 0, 0], [0, np.cos(rx), -np.sin(rx)], [0, np.sin(rx), np.cos(rx)] ]) # Rotation matrix around Y-axis Ry = np.array([ [ np.cos(ry), 0, np.sin(ry)], [ 0, 1, 0], [-np.sin(ry), 0, np.cos(ry)] ]) # Rotation matrix around Z-axis Rz = np.array([ [np.cos(rz), -np.sin(rz), 0], [np.sin(rz), np.cos(rz), 0], [ 0, 0, 1] ]) # Combined rotation: first X, then Y, then Z R = Rz @ Ry @ Rx # Apply to all points pts = pts @ R.T # ------------------------------------------------------------------------ if scene_bounds is not None: bmin = np.asarray(scene_bounds[0]) bmax = np.asarray(scene_bounds[1]) msk = np.all((pts >= bmin) & (pts <= bmax), axis=1) if msk.any(): pts = pts[msk] cols = cols[msk] # --- colour handling ---------------------------------------------------- rgb, is_scalar, norm, legend_info = _prep_colors( cols, cmap=cmap, vmin=vmin, vmax=vmax, discrete=discrete, palette_type=palette_type, ) sc = ax.scatter(pts[:, 0], pts[:, 1], pts[:, 2], s=size, c=rgb) ax.view_init(elev=elev, azim=azim) if title: ax.set_title(title) # --- continuous colour-bar --------------------------------------------- if is_scalar and show_colorbar: sm = cm.ScalarMappable(cmap=cmap, norm=norm) sm.set_array([]) kw = dict(shrink=0.75, pad=0.02) if cbar_kwargs: kw.update(cbar_kwargs) fig.colorbar(sm, ax=ax, **kw) # --- discrete legend ---------------------------------------------------- if discrete and legend_info is not None: uniq_labels, uniq_cols = legend_info handles = [Patch(facecolor=col, edgecolor="k") for col in uniq_cols] if label_names is not None: texts = [label_names[int(i)] for i in uniq_labels] else: texts = [str(int(i)) for i in uniq_labels] # Keep legend tight to the plot; feel free to tweak loc/fontsize ax.legend( handles, texts, title="Part label", loc="upper center", ncols=3, bbox_to_anchor=(0.5, 1.0), borderaxespad=0.2, frameon=False, ) # Apply axis limits if scene_bounds provided if scene_bounds is not None: ax.set_xlim(bmin[0], bmax[0]) ax.set_ylim(bmin[1], bmax[1]) ax.set_zlim(bmin[2], bmax[2]) return ax def viz_pred(pred, mask, ax=None): """ pred is a numpy array of shape (11, D, D, D) """ seg = pred[3:, :] labels = seg.argmax(axis=0) # (64, 64, 64) # 2) Convert mask to boolean and keep only voxels the mask says are valid mask_bool = mask.astype(bool) # True = plot it, False = ignore it # 3) Coordinates of masked voxels xs, ys, zs = np.nonzero(mask_bool) # each is 1‑D and has the same length colors = labels[mask_bool] # colour = class‑id of each voxel pos = np.stack([xs, ys, zs], axis=-1) viz(pos, colors, ax=ax, discrete=True) def load_semantic_ply(ply_path, normalize=True, is_dreamphysics=False): """Load semantic colors and positions from the PLY file.""" ply_data = PlyData.read(ply_path) vertex_elem = ply_data["vertex"] # PlyElement vertex_data = vertex_elem.data # <-- structured NumPy array # positions positions = np.column_stack( (vertex_data["x"], vertex_data["y"], vertex_data["z"])) features = {} if "part_label" in vertex_data.dtype.names: features["part_label"] = vertex_data["part_label"] if "E" in vertex_data.dtype.names: features["E"] = vertex_data["E"] if "density" in vertex_data.dtype.names: features["density"] = vertex_data["density"] if "nu" in vertex_data.dtype.names: features["nu"] = vertex_data["nu"] if "material_id" in vertex_data.dtype.names: features["material_id"] = vertex_data["material_id"] nan_mask = np.isnan(positions).any(axis=1) if np.any(nan_mask): num_nan = np.sum(nan_mask) total = len(positions) print( f"⚠️ Warning: Found {num_nan}/{total} points with NaN coordinates in {ply_path}. Removing them." ) positions = positions[~nan_mask] for key in features: features[key] = features[key][~nan_mask] if is_dreamphysics: if "E" in features: features["E"] *= 1e7 if normalize: if "E" in features: features["E"] = np.log(features["E"]) if "density" in features: features["density"] = np.log(features["density"]) return positions, features def compile_video(frames_dir: Path, out_mp4: Path, fps: float ): """Stitches PNG frames into an MP4 video using ffmpeg.""" txt = frames_dir / "inputs.txt" # Ensure frames are sorted correctly, assuming 'frame_xxxxx.png' format frames = sorted(frames_dir.glob('*.png'), key=lambda p: int(p.stem.split('_')[-1])) txt.write_text("\n".join([f"file '{f.name}'" for f in frames])) ffmpeg_cmd = "ffmpeg" cmd = ( f"{ffmpeg_cmd} -y -r {fps} -f concat -safe 0 -i {txt} " f"-c:v libx264 -pix_fmt yuv420p -preset slow -crf 18 " f"'{out_mp4}'" # Use quotes for safety ) print(f"🎞️ Creating video: {cmd}") run_cmd(cmd, step_name=f"compile_video {out_mp4}") ================================================ FILE: pixie/vlm_labeler/__init__.py ================================================ ================================================ FILE: pixie/vlm_labeler/vlm_data_filtering.py ================================================ import os import glob import json from concurrent.futures import ProcessPoolExecutor from typing import Dict, Tuple, Optional import hydra from omegaconf import DictConfig from tqdm import tqdm import logging from pixie.utils import resolve_paths, load_json, save_json, get_vlm_api_key, set_logger from vlmx.agent import Agent, AgentConfig from PIL import Image class DataFilteringAgent(Agent): """Agent for filtering rendered images based on appropriateness.""" OUT_RESULT_PATH = "vlm_results.json" def __init__(self, cfg: AgentConfig, class_name: str, search_terms: str): super().__init__(cfg) self.class_name = class_name self.search_terms = search_terms def _make_system_instruction(self): return f""" We need to select some images of the classes: {self.class_name}. This class includes objects like {self.search_terms}. We will provide you some image rendered from the 3d model. You need to either return True or False. Return False to reject the image as inappropriate for the video game development. Some common reasons for rejection: - The image doesn't clearly depict the object class - The image is too dark or too bright or too blurry or has some low other qualities. Remember, we want high-quality training data. - The image contains other things in addition to the object. REMEMBER, we only want images that depict cleanly ONE SINGLE OBJECT belong to one of the classes. But you also need to use your common sense and best judgement. For example, for class like "flowers", the object might include a vase of flowers (you rarely see a single flower in the wild). So you should return True in this case. - We do want diversity in our dataset collection. So even if the texture of the object is a bit un-usual, as long as you can recognize it as belonging to the class / search terms, you should return True. Only remove low-quality assets. We'll be using the 3d models to learn physic parameters like material and young modulus to simulate the physics of the object. E.g., the tree swaying in the wind or thing being dropped from a height. Therefore, you need to decide if the image depicts an object that is likely to be used in a physics simulation. The return format is ```json {{ "is_appropriate": true (or false), "reason": "reason for the decision" }} ``` """ def _make_prompt_parts(self, image_path: str): return ["The image is :", Image.open(image_path)] def parse_response(self, response): json_str = response.text.strip().strip("```json").strip() parsed_response = json.loads(json_str, strict=False) save_json(parsed_response, os.path.join(self.cfg.out_dir, self.OUT_RESULT_PATH)) return parsed_response def get_rendered_images(render_base_dir: str, obj_class: Optional[str] = None) -> Dict[str, str]: """Get dictionary mapping object IDs to their rendered image paths.""" result_dict = {} # Get categories to process if obj_class: categories = [obj_class] base_path = os.path.join(render_base_dir, obj_class) else: categories = [os.path.basename(f.rstrip('/')) for f in sorted(glob.glob(f"{render_base_dir}/*/"))] # Iterate through categories for category in categories: category_path = os.path.join(render_base_dir, category) if not obj_class else base_path # Get all object folders (UIDs) for obj_folder in sorted(glob.glob(f"{category_path}/*/")): obj_id = os.path.basename(obj_folder.rstrip('/')) # Find PNG files png_files = sorted(glob.glob(f"{obj_folder}/*.png")) if png_files: unique_id = f"{category}/{obj_id}" result_dict[unique_id] = png_files[0] # Use first image return result_dict def process_single_image(args: Tuple) -> Tuple[str, dict]: """Process a single image with VLM.""" obj_id, image_path, output_dir, api_key, class_name, search_terms, overwrite, model_name = args try: agent = DataFilteringAgent( AgentConfig( model_name=model_name, out_dir=os.path.join(output_dir, obj_id), api_key=api_key ), class_name=class_name, search_terms=search_terms ) agent.generate_prediction(image_path, overwrite=overwrite) response = agent.load_prediction() return obj_id, response except Exception as e: logging.error(f"Error processing {obj_id}: {e}") return obj_id, { "is_appropriate": None, "error": str(e), "error_type": type(e).__name__, "status": "error" } def analyze_results(results: Dict[str, dict]) -> None: """Analyze and print VLM filtering results.""" total = len(results) successful = sum(1 for r in results.values() if r.get("is_appropriate") is not None) errors = sum(1 for r in results.values() if r.get("is_appropriate") is None) appropriate = sum(1 for r in results.values() if r.get("is_appropriate") is True) inappropriate = sum(1 for r in results.values() if r.get("is_appropriate") is False) # Print overall statistics logging.info("\nProcessing Statistics:") logging.info(f"Total images: {total}") logging.info(f"Successfully processed: {successful} ({successful/total*100:.1f}%)") logging.info(f"Processing errors: {errors} ({errors/total*100:.1f}%)") if successful > 0: logging.info(f"Appropriate: {appropriate} ({appropriate/successful*100:.1f}% of successful)") logging.info(f"Inappropriate: {inappropriate} ({inappropriate/successful*100:.1f}% of successful)") # Analyze by category stats_by_category = {} for obj_id, result in results.items(): category = obj_id.split('/')[0] if category not in stats_by_category: stats_by_category[category] = {"total": 0, "appropriate": 0, "inappropriate": 0, "errors": 0} stats_by_category[category]["total"] += 1 if result.get("is_appropriate") is True: stats_by_category[category]["appropriate"] += 1 elif result.get("is_appropriate") is False: stats_by_category[category]["inappropriate"] += 1 else: stats_by_category[category]["errors"] += 1 logging.info("\nResults by category:") for category, stats in stats_by_category.items(): logging.info(f" {category}:") logging.info(f" Total: {stats['total']}") if stats['total'] > 0: logging.info(f" Appropriate: {stats['appropriate']} ({stats['appropriate']/stats['total']*100:.1f}%)") logging.info(f" Inappropriate: {stats['inappropriate']} ({stats['inappropriate']/stats['total']*100:.1f}%)") logging.info(f" Errors: {stats['errors']} ({stats['errors']/stats['total']*100:.1f}%)") def process_category(category: str, rendered_images: Dict[str, str], cfg: DictConfig, filter_cfg: DictConfig, category_dict: dict, api_key: str) -> None: """Process a single category of images.""" # Set output directory for this category output_dir = os.path.join(cfg.paths.vlm_filtering_results_dir, category) # Check if already processed and not overwriting results_file = os.path.join(output_dir, "all_results.json") if os.path.exists(results_file) and not filter_cfg.overwrite: logging.info(f"Category {category} already processed, skipping...") return os.makedirs(output_dir, exist_ok=True) # Get search terms for this category search_terms = " ".join(category_dict.get(category, [])) # Build process arguments for this category process_args = [ (obj_id, image_path, output_dir, api_key, category, search_terms, filter_cfg.overwrite, filter_cfg.model_name) for obj_id, image_path in rendered_images.items() ] logging.info(f"Processing {len(process_args)} images for category: {category}") # Process in parallel num_workers = filter_cfg.num_workers or os.cpu_count() results = {} with ProcessPoolExecutor(max_workers=num_workers) as executor: for obj_id, response in tqdm( executor.map(process_single_image, process_args), total=len(process_args), desc=f"Processing {category}" ): results[obj_id] = response # Save results save_json(results, results_file) # Save error details if any error_details = { obj_id: result for obj_id, result in results.items() if result.get("is_appropriate") is None } if error_details: save_json(error_details, os.path.join(output_dir, "error_details.json")) # Log category statistics successful = sum(1 for r in results.values() if r.get("is_appropriate") is not None) appropriate = sum(1 for r in results.values() if r.get("is_appropriate") is True) logging.info(f"Category {category}: {appropriate}/{successful} appropriate") @hydra.main(version_base=None, config_path="../../config", config_name="config") def main(cfg: DictConfig) -> None: """Main function to filter rendered images using VLM.""" set_logger() cfg = resolve_paths(cfg) filter_cfg = cfg.data_curation.vlm_filtering # Load category dictionary category_dict = load_json(cfg.paths.category_dict_path) categories_to_process = list(category_dict.keys()) # Determine categories to process if filter_cfg.obj_class: assert filter_cfg.obj_class in category_dict, \ f"Category '{filter_cfg.obj_class}' not found in category dictionary" categories_to_process = [filter_cfg.obj_class] # Handle analyze_only mode if filter_cfg.analyze_only: all_results = {} for category in categories_to_process: results_file = os.path.join(cfg.paths.vlm_filtering_results_dir, category, "all_results.json") if os.path.exists(results_file): category_results = load_json(results_file) all_results.update(category_results) else: logging.warning(f"No results found for category: {category}") analyze_results(all_results) return # Get API key api_key = get_vlm_api_key(cfg, filter_cfg.model_name) assert api_key, "No API key found for VLM" # Process each category for category in categories_to_process: logging.info(f"\nProcessing category: {category}") # Get rendered images for this category rendered_images = get_rendered_images( cfg.paths.render_outputs_base_dir, category # Process one category at a time ) if not rendered_images: logging.warning(f"No rendered images found for category: '{category}' in '{cfg.paths.render_outputs_base_dir}'") continue process_category(category, rendered_images, cfg, filter_cfg, category_dict, api_key) # After processing all categories, show combined statistics logging.info("\n" + "="*50) logging.info("="*50) all_results = {} for category in categories_to_process: results_file = os.path.join(cfg.paths.vlm_filtering_results_dir, category, "all_results.json") if os.path.exists(results_file): category_results = load_json(results_file) all_results.update(category_results) analyze_results(all_results) if __name__ == "__main__": main() ================================================ FILE: pixie/vlm_labeler/vlm_parse_seg_critic.py ================================================ import os import argparse import glob import os.path as osp from vlmx.utils import save_json, load_json from vlmx.agent import Agent, AgentConfig from tqdm import tqdm import json from PIL import Image import logging from vlmx.utils import seed_everything import shutil from pixie.utils import set_logger import numpy as np def run_vlm_parse_seg_critic(obj_id: str, vlm_seg_results_dir: str, vlm_seg_critic_results_dir: str, vlm_seg_mat_sample_results_dir: str, model_name: str = "gemini-2.0-flash", api_key: str = ""): """Run VLM parse segmentation critic to finalize results.""" seed_everything(0) # Load critic results critic_chosen_path = os.path.join(vlm_seg_critic_results_dir, obj_id, "vlm_critic_results.json") if not os.path.exists(critic_chosen_path): logging.error(f"Critic results not found at {critic_chosen_path}") return critic_chosen_results = load_json(critic_chosen_path) # Determine best query try: best_query_id = int(critic_chosen_results["best_query"].split("_")[1]) except: best_score = -1 best_query_id = None for query_key, eval_data in critic_chosen_results["query_evaluations"].items(): score = eval_data["score"] if score > best_score: best_score = score best_query_id = int(query_key.split("_")[1]) if best_query_id is None: best_query_id = 0 # Load VLM results json_path = os.path.join(vlm_seg_results_dir, obj_id, "vlm_results.json") if not os.path.exists(json_path): logging.error(f"VLM results not found at {json_path}") return old_json = load_json(json_path) best_query = old_json["all_queries"][best_query_id] logging.info(f">> BEST_QUERY: {best_query}") # Process material samples sample_mat_dir = os.path.join(vlm_seg_mat_sample_results_dir, obj_id) if not os.path.exists(sample_mat_dir): logging.error(f"Sample material directory not found: {sample_mat_dir}") return num_sample_mat = len([d for d in os.listdir(sample_mat_dir) if d.startswith("sample_")]) logging.info(f">> NUM_SAMPLE_MAT: {num_sample_mat}") for i in range(num_sample_mat): # Make a copy of the json file new_json_path = os.path.join(sample_mat_dir, f"sample_{i}", "chosen_vlm_results.json") sample_json_path = os.path.join(sample_mat_dir, f"sample_{i}", "vlm_results.json") if not os.path.exists(sample_json_path): logging.warning(f"Sample JSON not found: {sample_json_path}") continue shutil.copy(sample_json_path, new_json_path) sample_json = load_json(sample_json_path) # Replace the keys in material_dict with the best query old_keys = list(sample_json["material_dict"].keys()) new_material_dict = {} for old_key, new_key in zip(old_keys, best_query): new_material_dict[new_key] = sample_json["material_dict"][old_key] sample_json["material_dict"] = new_material_dict sample_json["all_queries"] = [best_query] save_json(sample_json, new_json_path) logging.info(f"Updated material sample {i} with best query") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--obj_id", type=str, required=True) parser.add_argument("--vlm_seg_results_dir", type=str, required=True) parser.add_argument("--vlm_seg_critic_results_dir", type=str, required=True) parser.add_argument("--vlm_seg_mat_sample_results_dir", type=str, required=True) parser.add_argument("--model_name", type=str, default="gemini-2.0-flash") parser.add_argument("--api_key", type=str, default="") args = parser.parse_args() set_logger() run_vlm_parse_seg_critic( obj_id=args.obj_id, vlm_seg_results_dir=args.vlm_seg_results_dir, vlm_seg_critic_results_dir=args.vlm_seg_critic_results_dir, vlm_seg_mat_sample_results_dir=args.vlm_seg_mat_sample_results_dir, model_name=args.model_name, api_key=args.api_key ) ================================================ FILE: pixie/vlm_labeler/vlm_phys_judge.py ================================================ import os import argparse import logging from typing import List from vlmx.agent import Agent, AgentConfig from vlmx.utils import save_json, join_path, get_frames_from_video from PIL import Image # noqa: F401 # (import required for type checking in prompt utils) import json from pixie.utils import str2bool, set_logger PHYSICS_JUDGE_SYSTEM_INSTRUCTION = """ You are a physics-realism judge for animation videos. You will be shown several candidate animations of the SAME 3D object responding to the SAME textual prompt that describes its intended physical motion. Your tasks: 1. Carefully watch each candidate animation. 2. Describe what's going on in the animation. 3. Evaluate how physically realistic the motion looks (0-5 scale). 4. Identify concrete pros / cons affecting the score (e.g. energy conservation errors, temporal jitter, incorrect response to gravity, static etc.). 5. Suggest specific improvements. 6. Pick the overall best candidate. Please output ONLY valid JSON with the following schema: { "candidate_evaluations": { "candidate_0": {"description": str, "score": float, "pros": str, "cons": str, "suggested_improvements": str}, "candidate_1": { ... }, "candidate_2": { ... } }, "best_candidate": "candidate_i", // the key of the best candidate "general_comments": str // any overall remarks (optional) } Also, note that the first candidate is the "ground-truth", the gold standard, which should always be given a score of 5. The other candidates should be judged based on how close they are to the ground-truth. NOTE: ignore missing videos. Still return score for `candidate_{idx}` that are present. """ COTRACKER_INSTRUCTION = """ NOTE: to make your job easier, we have also annotated the ground-truth video with the Co-Tracker. Cotracker is a motion tracker algorithm to highlight the moving parts in the videos. Pay close attention to the motion traces annotated in the videos to gain information on how the object is moving. Note that for objects that barely move, there will still be dots in the Co-Tracker video, but the motion (lines) will be very short or non-existent, indicating that the points are not moving. """ class PhysicsJudgeAgent(Agent): OUT_RESULT_PATH = "vlm_phys_judge_results.json" def __init__(self, cfg: AgentConfig, num_frames: int = 8, use_cotracker=False): self.num_frames = num_frames self.use_cotracker = use_cotracker super().__init__(cfg) # -------------------------------------------------- # Agent interface implementation # -------------------------------------------------- def _make_system_instruction(self): sys_instruction = PHYSICS_JUDGE_SYSTEM_INSTRUCTION logging.info("USING COTRACKER", self.use_cotracker) if self.use_cotracker: sys_instruction += COTRACKER_INSTRUCTION return sys_instruction def _make_prompt_parts(self, prompt: str, candidate_video_paths: List[str], **kwargs): """Build the multimodal prompt parts. Args: prompt (str): The textual description of the intended motion. candidate_video_paths (List[str]): Returns: List: A list combining text strings and PIL Images as accepted by the underlying VLM. """ # Allow variable number of candidates (≥2). The first video must be the ground-truth. if len(candidate_video_paths) < 2: raise ValueError("At least two videos (ground-truth + one candidate) are required") prompt_parts: List = [] prompt_parts.append( "You are shown these candidate videos for the following prompt describing desired motion:\n'{}'\nEvaluate each candidate for physical realism.".format(prompt) ) for idx, video_path in enumerate(candidate_video_paths): prompt_parts.append(f"Candidate {idx}:") try: frames = get_frames_from_video( video_path, num_frames=self.num_frames, video_encoding_strategy="individual", to_crop_white=False, flip_horizontal=False, width=256, height=None, ) logging.info(f"Loaded {len(frames)} frames from {video_path}") prompt_parts.extend(frames) except Exception as e: logging.error(f"Failed to load frames from {video_path}: {e}") prompt_parts.append(f"(Could not load video {video_path})") prompt_parts.append( "Provide your JSON answer following the required schema." ) return prompt_parts def parse_response(self, response): """Parse and save the JSON returned by the model.""" response_text = response.text.strip() try: json_start = response_text.find("{") json_end = response_text.rfind("}") + 1 if json_start == -1 or json_end == 0: raise ValueError("No JSON object detected in the response") json_str = response_text[json_start:json_end] parsed = json.loads(json_str) except Exception as e: logging.error(f"Error parsing response: {e}") parsed = {"error": str(e), "raw_response": response_text} out_path = join_path(self.cfg.out_dir, self.OUT_RESULT_PATH) save_json(parsed, out_path) logging.info(f"Saved results to {out_path}") return parsed # -------------------------------------------------- # CLI entry-point # -------------------------------------------------- if __name__ == "__main__": parser = argparse.ArgumentParser(description="Judge physical realism of 3 candidate videos") parser.add_argument("--prompt", type=str, required=True, help="Textual prompt used to generate the motion") parser.add_argument( "--candidate_videos", type=str, nargs='+', required=True, help="Paths to the candidate videos (space-separated). First video must be ground-truth.", ) parser.add_argument("--out_dir", type=str, default="vlm_phys_judge_results") parser.add_argument("--num_frames", type=int, default=8, help="Number of frames extracted from each video for the prompt") parser.add_argument("--overwrite", type=str2bool, default=False, help="Overwrite existing results if present") parser.add_argument("--model_name", type=str, default="gemini-2.0-flash", help="Model name") parser.add_argument("--api_key", type=str, default="", help="API key (if not provided, will use environment variable)") parser.add_argument("--use_cotracker", type=str2bool, default=False, help="Use Co-Tracker to highlight the moving parts in the videos") # parser.add_argument("--model_name", type=str, default="o3", help="Model name") args = parser.parse_args() set_logger() agent = PhysicsJudgeAgent( AgentConfig( # model_name="gemini-2.0-flash", # quick & cheap # model_name="gemini-2.5-pro-preview-03-25", # higher quality for judging # model_name="o3", # quick & cheap model_name=args.model_name, out_dir=args.out_dir, api_key=args.api_key, ), num_frames=args.num_frames, use_cotracker=args.use_cotracker, ) config = { "temperature": 1.0 if args.model_name == "o3" else 0.5, } agent.generate_prediction( args.prompt, args.candidate_videos, overwrite=args.overwrite, gen_config=config, ) ================================================ FILE: pixie/vlm_labeler/vlm_phys_sampler.py ================================================ import os import argparse import glob import os.path as osp from vlmx.utils import save_json, load_json from vlmx.agent import Agent, AgentConfig from tqdm import tqdm import json from PIL import Image import logging from vlmx.utils import seed_everything from pixie.utils import str2bool, set_logger import numpy as np def sample_value(range_list): """Sample a random value from within a given range. Args: range_list (list): List containing [min_value, max_value] Returns: float: Randomly sampled value within the range """ min_val, max_val = range_list return min_val + (max_val - min_val) * np.random.random() def evaluate_constraint(constraint: str, material_dict: dict) -> bool: """Evaluate a single constraint using the material dictionary. Args: constraint (str): Python code string containing the constraint material_dict (dict): Dictionary containing material properties Returns: bool: True if constraint is satisfied, False otherwise """ # Strip markdown code block markers constraint = constraint.strip().replace('```python', '').replace('```', '').strip() try: exec(constraint) return True except AssertionError: return False except Exception as e: logging.warning(f"Error evaluating constraint: {e}") return False def sample_material_dict(material_ranges: dict) -> dict: """Sample values for all material properties within their ranges. Args: material_ranges (dict): Dictionary containing ranges for material properties Returns: dict: Dictionary with sampled values """ sampled_dict = {} for part_name, properties in material_ranges.items(): sampled_dict[part_name] = { "density": sample_value(properties["density"]), "E": sample_value(properties["E"]), "nu": sample_value(properties["nu"]), "material_id": properties["material_id"] # material_id is discrete, no sampling needed } return sampled_dict def check_all_constraints(material_dict: dict, constraints: list) -> bool: """Check if all constraints are satisfied for the given material dictionary. Args: material_dict (dict): Dictionary containing sampled material properties constraints (list): List of constraint strings Returns: bool: True if all constraints are satisfied, False otherwise """ # return all(evaluate_constraint(constraint, material_dict) for constraint in constraints) return evaluate_constraint(constraints, material_dict) class MathSamplerAgent(Agent): OUT_RESULT_PATH = "vlm_results.json" def _make_system_instruction(self): return "..." def generate_prediction(self, json_path: str, overwrite: bool = False, max_attempts: int = 1000): """Generate valid material properties through rejection sampling. Args: json_path (str): Path to JSON file containing ranges and constraints overwrite (bool): Whether to overwrite existing results max_attempts (int): Maximum number of sampling attempts before giving up Returns: dict: Dictionary containing valid sampled material properties """ # Load input data out_path = os.path.join(self.cfg.out_dir, self.OUT_RESULT_PATH) if ( os.path.exists(out_path) and not overwrite ): logging.info( f"{self.__class__.__name__}: Prediction already exists at {out_path}. Skipping generation." ) return self.load_prediction() input_data = load_json(json_path) logging.info(f">> Input data: {input_data}") material_ranges = input_data["material_dict"] constraints = input_data["constraints"] # print("Constraints: ", constraints) # Rejection sampling for attempt in range(max_attempts): sampled_dict = sample_material_dict(material_ranges) if check_all_constraints(sampled_dict, constraints): result = { "material_dict": sampled_dict, "sampling_attempts": attempt + 1 } logging.info(f"succeed after {attempt + 1} attempts") return self.parse_response(type('Response', (), {'text': json.dumps(result)})) raise RuntimeError(f"Failed to find valid sample after {max_attempts} attempts") def parse_response(self, response): json_str = response.text.strip().strip("```json").strip() parsed_response = json.loads(json_str, strict=False) save_json(parsed_response, os.path.join( self.cfg.out_dir, self.OUT_RESULT_PATH)) return parsed_response def run_vlm_phys_sampler(obj_id: str, vlm_seg_results_dir: str, vlm_seg_mat_sample_results_dir: str, num_sample_mat: int = 5, model_name: str = "gemini-1.5-flash-latest", api_key: str = "", overwrite: bool = False): """Run VLM physics sampler to generate material samples.""" seed_everything(0) # Get VLM results path json_path = os.path.join(vlm_seg_results_dir, obj_id, "vlm_results.json") if not os.path.exists(json_path): logging.error(f"VLM results not found at {json_path}") return # Generate material samples for i in range(num_sample_mat): logging.info(f">> Sampling material for {obj_id} sample {i}") output_dir = os.path.join(vlm_seg_mat_sample_results_dir, obj_id, f"sample_{i}") os.makedirs(output_dir, exist_ok=True) agent = MathSamplerAgent(AgentConfig( model_name=model_name, out_dir=output_dir, api_key=api_key, )) res = agent.generate_prediction(json_path, overwrite=overwrite) logging.info(f"Generated material sample {i} for {obj_id}") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--obj_id", type=str, required=True) parser.add_argument("--vlm_seg_results_dir", type=str, required=True) parser.add_argument("--vlm_seg_mat_sample_results_dir", type=str, required=True) parser.add_argument("--overwrite", type=str2bool, default=False) parser.add_argument("--num_sample_mat", type=int, default=5) parser.add_argument("--model_name", type=str, default="gemini-1.5-flash-latest") parser.add_argument("--api_key", type=str, default="") args = parser.parse_args() set_logger() run_vlm_phys_sampler( obj_id=args.obj_id, vlm_seg_results_dir=args.vlm_seg_results_dir, vlm_seg_mat_sample_results_dir=args.vlm_seg_mat_sample_results_dir, num_sample_mat=args.num_sample_mat, model_name=args.model_name, api_key=args.api_key, overwrite=args.overwrite ) ================================================ FILE: pixie/vlm_labeler/vlm_seg.py ================================================ import os import argparse import glob import os.path as osp from vlmx.utils import save_json, load_json from vlmx.agent import Agent, AgentConfig from tqdm import tqdm import json from PIL import Image import logging from pixie.utils import str2bool, set_logger import numpy as np from vlm_seg_class_instruction import INSTRUCTION_FUNCTIONS def run_vlm_segmentation(obj_id: str, obj_class: str, output_dir: str, data_dir: str, model_name: str, api_key: str, overwrite: bool = False, num_alternative_queries: int = 2, input_num_views: int = 15): """Run VLM segmentation for a single object.""" # Define the segmentation agent class SegmentationAgent(Agent): OUT_RESULT_PATH = "vlm_results.json" def _make_system_instruction(self): return INSTRUCTION_FUNCTIONS[obj_class](num_alternative_queries) def _make_prompt_parts(self, image_paths): images = [Image.open(image_path) for image_path in image_paths] question = ["The image is :"] + images return question def parse_response(self, response): json_str = response.text.strip().strip("```json").strip() parsed_response = json.loads(json_str, strict=False) print(parsed_response) save_json(parsed_response, os.path.join( self.cfg.out_dir, self.OUT_RESULT_PATH)) return parsed_response # Create agent agent = SegmentationAgent(AgentConfig( model_name=model_name, out_dir=output_dir, api_key=api_key, )) # Get image paths all_image_paths = glob.glob(os.path.join(data_dir, obj_id, "train", "*.png")) if len(all_image_paths) < input_num_views: logging.warning(f"Not enough images found for {obj_id} (found {len(all_image_paths)}, need {input_num_views}). Skipping.") return # Randomly sample images random_image_paths = np.random.choice(all_image_paths, input_num_views, replace=False) # Generate prediction res = agent.generate_prediction(random_image_paths, overwrite=overwrite) return res if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--obj_id", type=str, required=True) parser.add_argument("--obj_class", type=str, required=True) parser.add_argument("--output_dir", type=str, required=True) parser.add_argument("--data_dir", type=str, required=True) parser.add_argument("--overwrite", type=str2bool, default=False) parser.add_argument("--num_alternative_queries", type=int, default=2) parser.add_argument("--input_num_views", type=int, default=15) parser.add_argument("--model_name", type=str, default="gemini-2.0-flash") parser.add_argument("--api_key", type=str, default="") args = parser.parse_args() set_logger() run_vlm_segmentation( obj_id=args.obj_id, obj_class=args.obj_class, output_dir=args.output_dir, data_dir=args.data_dir, model_name=args.model_name, api_key=args.api_key, overwrite=args.overwrite, num_alternative_queries=args.num_alternative_queries, input_num_views=args.input_num_views ) ================================================ FILE: pixie/vlm_labeler/vlm_seg_class_instruction.py ================================================ import json import textwrap import os import sys physgaussian_path = os.path.join(os.path.dirname(__file__), "..", "..", "third_party", "PhysGaussian", "mpm_solver_warp") sys.path.append(physgaussian_path) from mpm_solver_warp import ( get_material_name, MATERIAL_ID_TO_NAME, get_material_id, ) INSTRUCTION_CONFIGS = { "tree": { "class_name_for_example": "ficus tree", "special_notes": "", "example_material_dict": { "pot": {"density": 400, "E": 2e8, "nu": 0.4, "material_id": get_material_id("stationary")}, "trunk": {"density": 400, "E": 2e6, "nu": 0.4, "material_id": get_material_id("jelly")}, "leaves": {"density": 200, "E": 2e4, "nu": 0.4, "material_id": get_material_id("jelly")} }, "example_explanation": textwrap.dedent(""" For this, we assume that the pot is stationary, while the trunk and leaves are made of "jelly", which will make them sway in the wind. The stiffness (Young's Modulus) of the trunk is much higher than that of the leaves. """), "example_all_queries": [["leaves", "trunk", "pot"], ["green", "orange", "reddish-brown"]], "tips": [ "In a scene, typically there's a stationary part that will serve to fix the object to the ground. Usually, it's the pot, or some base of the tree. You must set the material_id of the stationary part to 6. If there's no stationary part, then never mind.", "For numerical stability, `E` should be between 1e4 and 1e6.", "The ranges between different parts need not be disjoint and can overlap when constraints define the ordering.", "The higher the `E` is, the stiffer the object is. E.g., so tree would sway less in the wind.", ], "example_constraints": textwrap.dedent(""" assert material_dict["leaves"]["density"] < material_dict["trunk"]["density"], "The density of the leaves should be less than the trunk" assert material_dict["leaves"]["E"] < material_dict["trunk"]["E"], "The stiffness of the leaves should be less than the trunk" assert material_dict["pot"]["material_id"] == 6, "The pot should be stationary" """), }, "flowers": { "class_name_for_example": "flowers in a vase", "special_notes": "", "example_material_dict": { "vase": {"density": 500, "E": 1e6, "nu": 0.3, "material_id": get_material_id("stationary")}, "flowers": {"density": 100, "E": 1e4, "nu": 0.4, "material_id": get_material_id("jelly")} }, "example_explanation": textwrap.dedent(""" Here, the vase is designated as stationary (material_id=6), indicating it should not move or sway. The flowers are set to a more pliable or flexible material (like "jelly" = 0), so that they can sway if there's wind or slight motion. The stiffness (Young's Modulus) of the vase is much higher than that of the flowers, making the vase rigid and the flowers more flexible. """), "example_all_queries": [["vase", "flowers"], ["ceramic base", "petals"], ["blue vase", "pink flower"]], "example_constraints": textwrap.dedent(""" assert material_dict["flowers"]["E"] < material_dict["vase"]["E"], "Flowers should have a lower stiffness than the vase" assert material_dict["vase"]["material_id"] == 6, "Vase must be stationary" """), "tips": [ "In a typical flower arrangement, the vase (or base) is stationary, so give that part material_id=6 if present.", "For numerical stability, `E` should roughly be between 1e4 and 1e6.", "The higher the `E`, the stiffer the part. So the vase should have a higher E range than the flowers.", "The ranges for different parts do not need to be disjoint and may overlap.", ] }, "shrub": { "class_name_for_example": "typical three-part shrub", "special_notes": textwrap.dedent(""" **Dataset note:** Shrubs in our dataset stand by themselves—there is **no planter or base**. You should therefore return only the shrub's structural parts and none of them are stationary. **IMPORTANT OUTPUT FORMAT:** Return exactly one JSON object with top-level keys: `material_dict`, `reasoning`, `constraints`, `all_queries`. Do not return part names at top level; part names must be nested under `material_dict`. """), "example_material_dict": { "stems": { "density": 300, "E": 1e5, "nu": 0.35, "material_id": get_material_id("jelly") }, "twigs": { "density": 250, "E": 6e4, "nu": 0.38, "material_id": get_material_id("jelly") }, "foliage": { "density": 150, "E": 2e4, "nu": 0.40, "material_id": get_material_id("jelly") } }, "example_explanation": textwrap.dedent(""" Return *ranges* instead of single values and accompany them with reasoning, Pythonic constraints, and alternative query lists. """), "example_all_queries": [ ["stems", "twigs", "foliage"], ["woody stems", "thin branches", "leaves"], ["brown sticks", "small branches", "green leaves"] ], "tips": [ "Provide exactly the parts visible (usually stems/twigs + foliage).", "1e4 <= E <= 1e6.", "Stems should be stiffest > twigs > foliage.", "No part uses material_id 6 because nothing is fixed to the ground.", ] }, "grass": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" **Dataset note:** Grass patches are usually isolated; occasionally a visible soil patch is underneath. Include a "soil" part only if it is visible. **IMPORTANT OUTPUT FORMAT:** Return exactly one JSON object with top-level keys: `material_dict`, `reasoning`, `constraints`, `all_queries`. Do not return part names at top level; part names must be nested under `material_dict`. """), "example_material_dict": { "blades": { "density": [60, 140], "E": [1e4, 8e4], "nu": [0.35, 0.48], "material_id": get_material_id("jelly") } }, "example_explanation": textwrap.dedent(""" Example A (typical isolated grass—no stationary part): ```json { "blades": { "density": 80, "E": 1e4, "nu": 0.45, "material_id": get_material_id("jelly") } } ``` Example B (grass with visible soil): ```json { "soil": { "density": 1200, "E": 5e5, "nu": 0.30, "material_id": get_material_id("stationary") }, "blades": { "density": 80, "E": 1e4, "nu": 0.45, "material_id": get_material_id("jelly") } } ``` Return *ranges*, reasoning, constraints, and alternative query lists. """), "example_all_queries": [ ["blades"], ["grass"], ["green stalks"] ], "tips": [ "Segment only the visible parts (sometimes just \"blades\").", "If *no* soil visible:\nall_queries: [[\"blades\"],[\"grass\"],[\"green stalks\"]]", "If soil *is* visible:\nall_queries: [[\"soil\", \"blades\"],[\"dirt\", \"grass\"],[\"brown base\", \"green grass\"]]", "1e4 <= E <= 1e6.", "If soil present -> give it material_id 6 and ensure E_soil > E_blades.", "If soil absent -> no stationary part; material_id 6 should not appear.", ] }, "rubber_ducks_and_toys": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For rubber ducks and toys, we want to treat the entire object as a single part. Do not attempt to segment it into multiple parts. The object should be treated as a single, bouncy rubber-like object. """), "example_material_dict": { "toy": {"density": [100, 200], "E": [8e3, 8e4], "nu": [0.3, 0.4], "material_id": get_material_id("jelly")} }, "example_explanation": "", "example_all_queries": [["toy"], ["rubber toy"], ["yellow duck"], ["plastic toy"]], "tips": [ "Always use material_id=0 (jelly) for bouncy rubber-like behavior", "Density should be in the range of typical rubber/plastic toys", "Poisson's ratio should be around 0.35 for rubber-like behavior", "Make sure all queries in all_queries list are single-part queries" ] }, "sport_balls": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For sport balls, we want to treat the entire ball as a single part. Do not attempt to segment it into multiple parts (like surface patterns or seams). The ball should be treated as a single, bouncy object. """), "example_material_dict": { "ball": {"density": [100, 200], "E": [8e3, 8e4], "nu": [0.3, 0.4], "material_id": get_material_id("jelly")} }, "example_explanation": "", "example_all_queries": [["ball"], ["sport ball"], ["basketball"], ["round ball"]], "tips": [ "Always use material_id=0 (jelly) for bouncy behavior", "Density should be in the range of typical sport balls", "Poisson's ratio should be around 0.35 for rubber-like behavior", "Make sure all queries in all_queries list are single-part queries" ] }, "soda_cans": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For soda cans, we want to treat the entire can as a single part. Do not attempt to segment it into multiple parts (like the top, body, or label). The can should be treated as a single, rigid metal object. """), "example_material_dict": { "can": {"density": [2500, 2900], "E": [8e7, 1.2e8], "nu": [0.25, 0.35], "material_id": get_material_id("metal")} }, "example_explanation": "", "example_all_queries": [["can"], ["soda can"], ["aluminum can"], ["metal can"]], "tips": [ "Always use material_id=1 (metal) for rigid metal behavior", "Keep E relatively high (around 1e8) for metal stiffness", "Density should be in the range of typical aluminum (around 2700 kg/m³)", "Poisson's ratio should be around 0.3 for metal behavior", "Make sure all queries in all_queries list are single-part queries" ] }, "metal_crates": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For metal crates, we want to treat the entire crate as a single part. Do not attempt to segment it into multiple parts (like the sides, top, or bottom). The crate should be treated as a single, rigid metal object. """), "example_material_dict": { "crate": {"density": [2500, 2900], "E": [8e7, 1.2e8], "nu": [0.25, 0.35], "material_id": get_material_id("metal")} }, "example_explanation": "", "example_all_queries": [["crate"], ["metal crate"], ["metal box"], ["steel crate"]], "tips": [ "Always use material_id=1 (metal) for rigid metal behavior", "Keep E relatively high (around 1e8) for metal stiffness", "Density should be in the range of typical metal (around 2700 kg/m³)", "Poisson's ratio should be around 0.3 for metal behavior", "Make sure all queries in all_queries list are single-part queries" ] }, "sand": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For sand objects, we want to treat the entire object as a single part. Do not attempt to segment it into multiple parts. The sand should be treated as a single, granular material. """), "example_material_dict": { "sand": {"density": [1800, 2200], "E": [4e7, 6e7], "nu": [0.25, 0.35], "material_id": get_material_id("sand")} }, "example_explanation": "", "example_all_queries": [["sand"], ["sand pile"], ["sand mound"], ["granular material"]], "tips": [ "Always use material_id=2 (sand) for granular behavior", "Keep E relatively high (around 5e7) for sand stiffness", "Density should be in the range of typical sand (around 2000 kg/m³)", "Poisson's ratio should be around 0.3 for sand behavior", "Make sure all queries in all_queries list are single-part queries" ] }, "jello_block": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For jello blocks, we want to treat the entire object as a single part. Do not attempt to segment it into multiple parts. The jello block should be treated as a single, soft, bouncy object. """), "example_material_dict": { "jello": {"density": [40, 60], "E": [800, 1200], "nu": [0.25, 0.35], "material_id": get_material_id("jelly")} }, "example_explanation": "", "example_all_queries": [["jello"], ["jello block"], ["gelatin"], ["bouncy block"]], "tips": [ "Always use material_id=0 (jelly) for soft, bouncy behavior", "Keep E relatively low (around 1000) for good bounce and jiggle", "Density should be in the range of typical jello (around 50 kg/m³)", "Poisson's ratio should be around 0.3 for jello-like behavior", "Make sure all queries in all_queries list are single-part queries" ] }, "snow_and_mud": { "class_name_for_example": "", "special_notes": textwrap.dedent(""" IMPORTANT: For combined snow & mud objects, we treat the entire mixture as a single deformable part. Do **not** attempt to split it into separate snow and mud regions—the simulation will use one MPM material. """), "example_material_dict": { "snow_and_mud": {"density": [2000, 3000], "E": [8e4, 1.2e5], "nu": [0.15, 0.25], "material_id": get_material_id("snow")} }, "example_explanation": "", "example_all_queries": [["snow and mud"], ["slush"], ["muddy snow"], ["wet snow"]], "tips": [ "Always set material_id = 5 (snow) so the simulator uses the appropriate elasto-plastic snow model.", "Keep E around 1e5 (the config value) to match the intended softness.", "Density is markedly higher than fluffy snow because of the mud/water content—use roughly 2–3 g/cm³ (2000–3000 kg/m³).", "Make sure every list in `all_queries` contains **one** phrase because this is a single-part object." ] }, } SYSTEM_INSTRUCTION_TEMPLATE = textwrap.dedent("""\ We are trying to label a 3D object with physical properties. The physical properties are: - Density - Young's Modulus - Poisson's Ratio - Material model where the material model is one of the following: {material_list_str} We have an automatic semantic segmentation model that can segment the object into different parts. We'll assume that each part has the same material model. Your job is to come up with the part query to pass to the semantic segmentation model, and the associated material properties for each part. {special_notes} For example, for a {class_name_for_example}, the return is ```json {example_material_dict_str} ``` {example_explanation} Note that there are many different valid values for the material properties including E, nu, and density that would influence how the object behaves. Thus, instead of actual values, you should return a range of values like "E": [2e4, 2e6]. Also, provide reasoning and constraints on the values when appropriate. The ranges for different parts need not be disjoint and may overlap. So the output should be a json with the following format: ```json {{ "material_dict": {{ ... similar to example_dict with ranges ... }}, "reasoning": "...", "constraints": "...", "all_queries": "..." }} ``` Remember to write constraints in the form of python code. For example, ```python {example_constraints_str} ``` Note that you've been asked to generate a material range so `material_dict["leaves"]["density"]` is a range of values. But for the purpose of the constraints writing, you can assume that the material_dict["leaves"]["density"] is a single value, and generate the python code similar to the example above. This is important because we will first sample a value from the range, then invoke your constraints code. So instead of writing something like ```python assert material_dict["leaves"]["density"][0] ... ``` you must write something like ```python assert material_dict["leaves"]["density"] ... ``` Note that the correct code doesn't have the bracket because `material_dict["leaves"]["density"]` will be already reduced to a single value by our sampler. """) PART_QUERY_INSTRUCTION_TEMPLATE = textwrap.dedent("""\ You will be provided with images of the object from different views or a single view. Please try your best to come up with appropriate part queries as well. For example, if the object doesn't have visible trunk or pot, then you should NOT include them in the material_dict. Only segment parts that are visible in the image. Also, because our CLIP segmentation model is not perfect, you should come up with alternative queries as well including the original queries in the all_queries list. For example, ```json {example_all_queries_str} ``` In total, you need to provide {num_alternative_queries} alternative queries. Tips: {tips_str} - Make sure that each element in the `all_queries` list is in the exact same order as the material_dict keys. """) def generate_instruction(class_name: str, num_alternative_queries: int) -> str: """ Generates a complete instruction prompt for a given object class using a template and a configuration dictionary. """ config = INSTRUCTION_CONFIGS[class_name] material_list_str = "\n".join([f" {i}: \"{name}\"," for i, name in MATERIAL_ID_TO_NAME.items()]) example_material_dict_str = json.dumps(config["example_material_dict"], indent=4) tips_str = "\n".join([f" - {tip}" for tip in config["tips"]]) example_all_queries_str = json.dumps(config["example_all_queries"], indent=4) system_instruction = SYSTEM_INSTRUCTION_TEMPLATE.format( material_list_str=material_list_str, special_notes=config["special_notes"], class_name_for_example=config["class_name_for_example"] or class_name, example_material_dict_str=example_material_dict_str, example_explanation=config["example_explanation"], example_constraints_str=config.get("example_constraints", "..."), ) part_query_instruction = PART_QUERY_INSTRUCTION_TEMPLATE.format( num_alternative_queries=num_alternative_queries, example_all_queries_str=example_all_queries_str, tips_str=tips_str ) return system_instruction + part_query_instruction INSTRUCTION_FUNCTIONS = { class_name: (lambda c: lambda n: generate_instruction(c, n))(class_name) for class_name in INSTRUCTION_CONFIGS } ================================================ FILE: pixie/vlm_labeler/vlm_seg_critic.py ================================================ import os import argparse import glob import os.path as osp from vlmx.utils import save_json, load_json from vlmx.agent import Agent, AgentConfig from tqdm import tqdm import json from PIL import Image import logging from pixie.utils import str2bool, set_logger import numpy as np CRITIC_SYSTEM_INSTRUCTION = """ You are a segmentation quality critic. Your task is to evaluate the quality of segmentation results produced by a CLIP-based segmentation model. You will be shown: 1. A set of original RGB images of a 3D object from different views 2. Segmentation results for different part queries Your job is to: 1. Evaluate each segmentation query based on how well it separates the object into meaningful parts 2. Score each query on a scale of 1-10 (10 being perfect) 3. Provide reasoning for your scores 4. Suggest improvements to the queries if needed Consider the following factors in your evaluation: - Does the segmentation properly separate the object into distinct, semantically meaningful parts? - Are the boundaries of the segments accurate and clean? - Is any important part of the object missed or incorrectly segmented? - IMPORTANT: note that our imperfect CLIP segmentation model is heavily dependent on the choice of part queries. Thus, even if a query might not be semantically correct, as long as it is useful for separating the object into distinct parts, you should score it high. - Bad queries would result in bad segmentation that are noisy or different parts are not correctly and/or clearly separated. Your output should be a JSON in the following format: ```json { "query_evaluations": { "query_0": { "score": 8, "reasoning": "This query effectively separates the object into functionally distinct parts. The boundaries are clean and consistent across different views." }, "query_1": { "score": 3, "reasoning": "This query fails to distinguish important parts of the object, making it unsuitable for physical property assignment." }, ... }, "best_query": "query_1", "suggested_improvements": "Consider using more specific terms like 'ceramic pot' instead of just 'pot' to improve segmentation boundaries." } ``` where `query_{i}` is the i-th query in the "all_queries" list. Be detailed in your reasoning and make concrete suggestions for improvements. """ from typing import List, Dict class SegmentationCriticAgent(Agent): OUT_RESULT_PATH = "vlm_critic_results.json" def _make_system_instruction(self): return CRITIC_SYSTEM_INSTRUCTION def _make_prompt_parts(self, rgb_image_paths: List[str], query_segmentation_paths: Dict[str, List[str]]): prompt_parts = ["I'll show you original RGB images of an object and then segmentation results for different queries."] # Add original RGB images prompt_parts.append("Original RGB images of the object:") rgb_images = [Image.open(img_path) for img_path in rgb_image_paths] prompt_parts.extend(rgb_images) # Add segmentation results for each query prompt_parts.append("Now I'll show you segmentation results for different queries:") for query, seg_paths in query_segmentation_paths.items(): prompt_parts.append(f"Segmentation results for query: {query}") seg_images = [Image.open(img_path) for img_path in seg_paths] prompt_parts.extend(seg_images) return prompt_parts def parse_response(self, response): try: # Extract JSON from the response response_text = response.text json_start = response_text.find("{") json_end = response_text.rfind("}") + 1 if json_start == -1 or json_end == 0: raise ValueError("No JSON found in response") json_str = response_text[json_start:json_end] parsed_response = json.loads(json_str) # Save the results save_json(parsed_response, os.path.join(self.cfg.out_dir, self.OUT_RESULT_PATH)) return parsed_response except Exception as e: logging.error(f"Error parsing response: {e}") logging.error(f"Response: {response.text}") return {"error": str(e), "raw_response": response.text} def run_vlm_seg_critic(obj_id: str, data_dir: str, vlm_seg_results_dir: str, vlm_seg_critic_results_dir: str, input_num_views: int = 15, model_name: str = 'gemini-2.5-pro-preview-03-25', api_key: str = '', overwrite: bool = False): """Run VLM segmentation critic to evaluate segmentation quality.""" # Setup paths rgb_image_path = os.path.join(data_dir, obj_id, "train") segmentation_base_path = os.path.join(vlm_seg_results_dir, obj_id) output_dir = os.path.join(vlm_seg_critic_results_dir, obj_id) # Ensure necessary paths exist if not os.path.exists(rgb_image_path): logging.error(f"RGB image path does not exist: {rgb_image_path}") return if not os.path.exists(segmentation_base_path): logging.error(f"Segmentation base path does not exist: {segmentation_base_path}") return # Create output directory os.makedirs(output_dir, exist_ok=True) # Get RGB image paths all_rgb_paths = glob.glob(os.path.join(rgb_image_path, "*.png")) if len(all_rgb_paths) < input_num_views: logging.warning(f"Not enough RGB images found. Found {len(all_rgb_paths)}, needed {input_num_views}") if len(all_rgb_paths) == 0: return input_num_views = len(all_rgb_paths) selected_rgb_paths = np.random.choice(all_rgb_paths, input_num_views, replace=False) # Get query segmentation paths query_pattern = "query_*" query_folders = glob.glob(os.path.join(segmentation_base_path, query_pattern)) query_folders = [os.path.basename(folder) for folder in query_folders if os.path.isdir(folder)] logging.info(f"Found query folders: {query_folders}") if not query_folders: logging.error(f"No query folders found in {segmentation_base_path}") return # Build dictionary of query to segmentation image paths query_to_segmentation_paths = {} for query in query_folders: seg_path = os.path.join(segmentation_base_path, query) seg_images = glob.glob(os.path.join(seg_path, "*.png")) if seg_images: query_to_segmentation_paths[query] = seg_images if not query_to_segmentation_paths: logging.error("No segmentation images found for any query") return # Initialize agent and evaluate agent = SegmentationCriticAgent(AgentConfig( model_name=model_name, out_dir=output_dir, api_key=api_key, )) agent.generate_prediction( selected_rgb_paths, query_to_segmentation_paths, overwrite=overwrite ) results = agent.load_prediction() # Print results summary if "best_query" in results: logging.info(f"Best query: {results['best_query']}") if results['best_query'] in results.get('query_evaluations', {}): score = results['query_evaluations'][results['best_query']]['score'] logging.info(f"Score: {score}/10") logging.info(f"Full evaluation results saved to {os.path.join(output_dir, agent.OUT_RESULT_PATH)}") return results if __name__ == "__main__": # Get command line arguments parser = argparse.ArgumentParser(description='Evaluate segmentation results') parser.add_argument('--obj_id', type=str, required=True, help='Object ID to evaluate') parser.add_argument('--data_dir', type=str, required=True, help='Data directory') parser.add_argument('--vlm_seg_results_dir', type=str, required=True, help='VLM segmentation results directory') parser.add_argument('--vlm_seg_critic_results_dir', type=str, required=True, help='VLM segmentation critic results directory') parser.add_argument('--input_num_views', type=int, default=15, help='Number of RGB samples to use') parser.add_argument('--overwrite', type=str2bool, default=False, help='Overwrite existing results') parser.add_argument('--model_name', type=str, default='gemini-2.5-pro-preview-03-25') parser.add_argument('--api_key', type=str, default='') args = parser.parse_args() set_logger() run_vlm_seg_critic( obj_id=args.obj_id, data_dir=args.data_dir, vlm_seg_results_dir=args.vlm_seg_results_dir, vlm_seg_critic_results_dir=args.vlm_seg_critic_results_dir, input_num_views=args.input_num_views, model_name=args.model_name, api_key=args.api_key, overwrite=args.overwrite ) ================================================ FILE: pixie/vlm_labeler/vlm_viz_seg_candidates.py ================================================ import argparse import os import glob import json from pixie.utils import str2bool from vlmx.utils import load_json from pixie.utils import run_cmd import logging def run_vlm_viz_seg_candidates(obj_id: str, vlm_seg_results_dir: str, render_outputs_dir: str, outputs_dir: str, grid_size: int = 200, gray_threshold: float = 0.05, overwrite: bool = False): """Run VLM visualization of segmentation candidates.""" # Load VLM segmentation results vlm_results_path = os.path.join(vlm_seg_results_dir, obj_id, "vlm_results.json") if not os.path.exists(vlm_results_path): logging.info(f"VLM results not found at {vlm_results_path}") return result = load_json(vlm_results_path) # Check if visualization already exists output_dir = os.path.join(vlm_seg_results_dir, obj_id, "query_0") if not overwrite and os.path.exists(os.path.join(output_dir, "clip.png")): logging.info(f"Skipping {obj_id} because {output_dir}/clip.png exists") return # Generate voxel features if needed grid_size = grid_size voxel_size = 1.0 / grid_size method = "f3rm" render_output_dir = os.path.join(render_outputs_dir, obj_id) # Find the latest config file in the output directory output_dir = os.path.join(outputs_dir, obj_id, method) if not os.path.exists(output_dir): logging.info(f"Output directory not found: {output_dir}") return latest_run = max([os.path.join(output_dir, d) for d in os.listdir(output_dir) if os.path.isdir(os.path.join(output_dir, d))], key=os.path.getmtime) config_path = os.path.join(latest_run, "config.yml") should_run_voxel = ( overwrite or not (os.path.exists(f"{render_output_dir}/clip_features.npz") and os.path.exists(f"{render_output_dir}/clip_features_pc.ply"))) if should_run_voxel: # Generate voxel features voxel_cmd = [ "python", "pixie/voxel/voxelize.py", "--scene", config_path, "--output", f"{render_output_dir}/clip_features.npz", "--voxel_size", str(voxel_size), "--gray_threshold", str(gray_threshold) ] run_cmd(voxel_cmd, step_name="VOXEL_TO_PC") # Generate visualizations for each query for i, query in enumerate(result["all_queries"]): query_str = ", ".join(query) output_dir = os.path.join(vlm_seg_results_dir, obj_id, f"query_{i}") # Use string command with proper quoting viz_cmd = (f'python pixie/voxel/viz_segmentation.py ' f'--obj_id {obj_id} ' f'--output_dir "{output_dir}" ' f'--part_queries "{query_str}" ' f'--render_outputs_dir "{render_output_dir}" ' f'--overwrite {overwrite}') run_cmd(viz_cmd, step_name=f"VIZ_SEG_QUERY_{i}") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--obj_id", type=str, required=True) parser.add_argument("--vlm_seg_results_dir", type=str, required=True) parser.add_argument("--render_outputs_dir", type=str, required=True) parser.add_argument("--outputs_dir", type=str, required=True) parser.add_argument("--grid_size", type=int, default=200) parser.add_argument("--gray_threshold", type=float, default=0.05) parser.add_argument("--overwrite", type=str2bool, default=False) parser.add_argument("--model_name", type=str, default="gemini-2.0-flash") parser.add_argument("--api_key", type=str, default="") args = parser.parse_args() run_vlm_viz_seg_candidates( obj_id=args.obj_id, vlm_seg_results_dir=args.vlm_seg_results_dir, render_outputs_dir=args.render_outputs_dir, outputs_dir=args.outputs_dir, grid_size=args.grid_size, gray_threshold=args.gray_threshold, overwrite=args.overwrite ) ================================================ FILE: pixie/voxel/__init__.py ================================================ ================================================ FILE: pixie/voxel/map_pred_to_coords.py ================================================ import numpy as np import argparse import os from plyfile import PlyData, PlyElement import json from pathlib import Path import sys import logging # Add the parent directory to sys.path to import pixie utilities sys.path.append(str(Path(__file__).parent.parent.parent)) from pixie.utils import resolve_paths, validate_config, load_json, set_logger from pixie.training_utils import load_normalization_ranges import hydra from omegaconf import DictConfig from hydra.core.global_hydra import GlobalHydra from hydra import initialize, compose def load_config(config_path="../../../config", config_name="config"): """ Load and merge Hydra configuration. :param config_path: Path to the config directory :param config_name: Name of the main config file (without .yaml extension) :return: Merged configuration object """ # Initialize Hydra GlobalHydra.instance().clear() initialize(version_base=None, config_path=config_path) # Compose the configuration cfg = compose(config_name=config_name) # Load normalization ranges cfg = load_normalization_ranges(cfg) return cfg def unscale_prediction(pred_tensor: np.ndarray, cfg: DictConfig): """Convert normalized network output back to original physical ranges but keep the tensor layout identical to the network output: (C,D,H,W) with C = 3 continuous + 8 categorical (=11). The first three channels are converted to real-world values, while the remaining categorical channels are left untouched. """ # Number of continuous channels ------------------------------------------------ CONT_CH = 3 # density, E, nu # Split (view only) channels ---------------------------------------------------- cont = pred_tensor[:CONT_CH] # (3,D,H,W) cat = pred_tensor[CONT_CH:] # (8,D,H,W) – untouched # The network's output is not strictly bounded, so we clip it to the expected [-1, 1] range. cont = np.clip(cont, -1.0, 1.0) # Allocate output array with the same shape as the input ------------------------ out = pred_tensor.copy().astype(np.float32) # (11,D,H,W) # Unscale continuous channels using the loaded normalization ranges ------------ # Convert from [-1, 1] back to [min, max] range dens_log = (cont[0] + 1.0) * (cfg.training.density_max - cfg.training.density_min) / 2.0 + cfg.training.density_min out[0] = 10 ** dens_log logging.info(f"DENSITY: cont[0] {cont[0].mean()} mapped to {out[0].mean()}") E_log = (cont[1] + 1.0) * (cfg.training.E_max - cfg.training.E_min) / 2.0 + cfg.training.E_min out[1] = 10 ** E_log nu_scaled = cont[2] out[2] = (nu_scaled + 1.0) * (cfg.training.nu_max - cfg.training.nu_min) / 2.0 + cfg.training.nu_min # The categorical channels (indices 3:11) are already copied over via .copy() return out def transform_nerf_to_world(ply_path: str, dataparser_path: str, world_output_path: str): """ Transform coordinates from Nerf training space to world space using dataparser transforms. Args: ply_path: Path to input PLY file in Nerf training space dataparser_path: Path to dataparser_transforms.json file world_output_path: Path to save the transformed PLY file """ ply_data = PlyData.read(ply_path) vertex_data = ply_data['vertex'].data ## dataparser contains the WORLD to NERF transform. # Load dataparser transforms logging.info(f"Loading dataparser transform from {dataparser_path}…") with open(dataparser_path, 'r') as f: dp_json = json.load(f) scale = float(dp_json["scale"]) transform = np.asarray(dp_json["transform"], dtype=np.float32) # shape (3,4) # Create transformation matrix T = np.eye(4, dtype=np.float32) T[:3, :] = transform T_inv = np.linalg.inv(T) # Vectorised coordinate conversion coords_train = np.vstack((vertex_data['x'], vertex_data['y'], vertex_data['z'])).T.astype(np.float32) coords_scaled = coords_train / scale coords_h = np.concatenate([coords_scaled, np.ones((coords_scaled.shape[0], 1), dtype=np.float32)], axis=1) coords_world = (T_inv @ coords_h.T).T[:, :3] # Create new vertex array for world frame vertex_world = vertex_data.copy() vertex_world['x'] = coords_world[:, 0] vertex_world['y'] = coords_world[:, 1] vertex_world['z'] = coords_world[:, 2] # Save transformed PLY vertex_world_element = PlyElement.describe(vertex_world, 'vertex') PlyData([vertex_world_element], text=False).write(world_output_path) logging.info(f"Saved WORLD-frame PLY to {world_output_path}") conf = vertex_world['conf'] logging.info(f"conf {conf.shape} {conf.min()} {conf.max()} {conf.mean()}") def get_mat_id(arr): if arr.shape == (1, 64, 64, 64): return arr[0] else: ## one hot return np.argmax(arr, axis=0) def map_pred_to_ply(pred_path: str, mask_path: str, grid_feature_path: str, output_path: str, obj_id: str, world_output_path: str = None, dataparser_path: str = None, cfg: DictConfig = None): """ Map predictions from numpy arrays to a PLY file with material properties and part labels. Args: pred_path: Path to the prediction numpy array (shape: 11, 64, 64, 64) mask_path: Path to the mask numpy array (shape: 64, 64, 64) grid_feature_path: Path to the original voxel grid metadata (.npz file) output_path: Path to save the PLY file obj_id: Object ID world_output_path: Optional path to save the world frame PLY file dataparser_path: Optional path to dataparser_transforms.json """ # Load metadata from the original grid logging.info(f"Loading metadata from {grid_feature_path}...") logging.info(f"path exists: {os.path.exists(grid_feature_path)}") metadata = np.load(grid_feature_path) min_bounds = metadata['min_bounds'] max_bounds = metadata['max_bounds'] grid_shape = metadata['grid_shape'] logging.info(f"Grid shape: {grid_shape}") logging.info(f"Bounds: min={min_bounds}, max={max_bounds}") # Load predictions and mask logging.info(f"Loading predictions from {pred_path}...") scaled_pred = np.load(pred_path) # if scaled_pred.shape == (4, 64, 64, 64): # print(f"Input prediction shape is {scaled_pred.shape}, converting to one-hot (11, 64, 64, 64)") # cont_pred = scaled_pred[:3] # material_ids = scaled_pred[3].astype(int) # num_classes = 8 # From the expected shape (11 = 3 + 8) # # Create one-hot encoding # one_hot_seg = np.eye(num_classes, dtype=cont_pred.dtype)[material_ids] # Shape (64, 64, 64, 8) # one_hot_seg = np.transpose(one_hot_seg, (3, 0, 1, 2)) # Shape (8, 64, 64, 64) # # Concatenate continuous predictions with one-hot segmentation # scaled_pred = np.concatenate([cont_pred, one_hot_seg], axis=0) # assert scaled_pred.shape == (11, 64, 64, 64), f"scaled_pred.shape: {scaled_pred.shape}. Expected (11, 64, 64, 64)" logging.info(f"scaled Prediction shape: {scaled_pred.shape}") # Load config if not provided if cfg is None: cfg = load_config() pred = unscale_prediction(scaled_pred, cfg) logging.info(f"Unscaled Prediction shape: {pred.shape}") logging.info(f"Loading mask from {mask_path}...") mask = np.load(mask_path) logging.info(f"Mask shape: {mask.shape}") assert mask.shape == (64, 64, 64), f"mask.shape: {mask.shape}. Expected (64, 64, 64)" logging.info(f"Number of non-zero elements in mask: {np.sum(mask > 0)} out of {mask.size}") # Verify shapes pred_spatial_shape = pred.shape[1:4] # Get spatial dimensions (64,64,64) if not np.array_equal(pred_spatial_shape, grid_shape): raise ValueError(f"Prediction spatial dimensions {pred_spatial_shape} do not match grid shape {grid_shape}") if not np.array_equal(mask.shape, grid_shape): raise ValueError(f"Mask shape {mask.shape} does not match grid shape {grid_shape}") # Split predictions into continuous and discrete parts cont = pred[:3, :] # density, E, nu seg = pred[3:, :] # material type probabilities # Get material_id from discrete predictions using argmax # material_id = np.argmax(seg, axis=0) material_id = get_mat_id(seg) # Create coordinate grid x = np.linspace(min_bounds[0], max_bounds[0], grid_shape[0]) y = np.linspace(min_bounds[1], max_bounds[1], grid_shape[1]) z = np.linspace(min_bounds[2], max_bounds[2], grid_shape[2]) # Create meshgrid for coordinates grid_x, grid_y, grid_z = np.meshgrid(x, y, z, indexing='ij') # Stack coordinates coords = np.stack([grid_x, grid_y, grid_z], axis=-1) # Apply mask to get only valid points valid_mask = mask > 0 valid_coords = coords[valid_mask] valid_density = cont[0][valid_mask] valid_E = cont[1][valid_mask] valid_nu = cont[2][valid_mask] valid_material_id = material_id[valid_mask] logging.info(f"All material_id {np.unique(material_id, return_counts=True)}") logging.info(f">> Valid material_id {np.unique(valid_material_id, return_counts=True)}") # Create structured array for PLY file vertex_data = np.zeros( len(valid_coords), dtype=[ ('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'), ('blue', 'u1'), ('alpha', 'u1'), ('part_label', 'i4'), ('density', 'f4'), ('E', 'f4'), ('nu', 'f4'), ('material_id', 'i4'), ('conf', 'f4') ] ) # Fill in the data vertex_data['x'] = valid_coords[:, 0] vertex_data['y'] = valid_coords[:, 1] vertex_data['z'] = valid_coords[:, 2] vertex_data['red'] = 255 # Default white color vertex_data['green'] = 255 vertex_data['blue'] = 255 vertex_data['alpha'] = 255 vertex_data['part_label'] = valid_material_id vertex_data['density'] = valid_density vertex_data['E'] = valid_E vertex_data['nu'] = valid_nu vertex_data['material_id'] = valid_material_id # Confidence value: probability associated with the chosen material (max across categories) if seg.shape[0] > 1: # One-hot encoded probabilities max_prob = np.max(seg, axis=0) valid_conf = max_prob[valid_mask] else: # Class indices, so confidence is not available, default to 1.0 valid_conf = np.ones_like(valid_material_id, dtype=np.float32) vertex_data['conf'] = valid_conf logging.info(f"valid_conf {valid_conf.shape}") logging.info(f"seg.shape {seg.shape}") logging.info(f"seg {seg.min()} {seg.max()} {seg.mean()}") logging.info("STATISTICS:") logging.info(f"Part_label {np.unique(vertex_data['part_label'], return_counts=True)}") logging.info(f"DENSITY: {vertex_data['density'].mean()} {vertex_data['density'].min()} {vertex_data['density'].max()}") logging.info(f"E: {vertex_data['E'].mean()} {vertex_data['E'].min()} {vertex_data['E'].max()}") logging.info(f"NU: {vertex_data['nu'].mean()} {vertex_data['nu'].min()} {vertex_data['nu'].max()}") # Create PLY element and save file vertex_element = PlyElement.describe(vertex_data, 'vertex') PlyData([vertex_element], text=False).write(output_path) logging.info(f"Saved PLY file to {output_path} from {pred_path}") # ############################## # # NEW: Export to world frame # # ############################## logging.info(f"world_output_path {world_output_path}") if world_output_path is not None: if dataparser_path is None: # Heuristic: look for dataparser_transforms.json next to grid_feature_path dataparser_path = Path(grid_feature_path).parent / "dataparser_transforms.json" if not dataparser_path.exists(): raise FileNotFoundError( f"Could not find dataparser_transforms.json at {dataparser_path}. " "Please provide the path using --dataparser_path argument." ) transform_nerf_to_world(output_path, dataparser_path, world_output_path) @hydra.main(version_base=None, config_path="../../config", config_name="config") def main(cfg: DictConfig): set_logger() """Main function to map predictions to PLY file.""" # Validate required mapping parameters if not cfg.mapping.pred_path: raise ValueError("mapping.pred_path is required") if not cfg.mapping.mask_path: raise ValueError("mapping.mask_path is required") if not cfg.mapping.grid_feature_path: raise ValueError("mapping.grid_feature_path is required") if not cfg.mapping.output_path: raise ValueError("mapping.output_path is required") if not cfg.mapping.obj_id: raise ValueError("mapping.obj_id is required") # Load normalization ranges cfg = load_normalization_ranges(cfg) map_pred_to_ply( cfg.mapping.pred_path, cfg.mapping.mask_path, cfg.mapping.grid_feature_path, cfg.mapping.output_path, cfg.mapping.obj_id, world_output_path=cfg.mapping.world_output_path, dataparser_path=cfg.mapping.dataparser_path, cfg=cfg ) if __name__ == "__main__": main() ================================================ FILE: pixie/voxel/segmentation.py ================================================ import sys import torch import numpy as np from typing import Tuple, Dict, List import trimesh from f3rm.features.clip import clip from f3rm.features.clip_extract import CLIPArgs from pixie.utils import str2bool, load_json import logging import numpy as np from plyfile import PlyData, PlyElement import matplotlib.pyplot as plt import trimesh import json import os from pixie.utils import set_logger def get_initial_voxel_grid_from_saved( grid_feature_path: str, occupancy_path: str = None, # Deprecated: kept for RGB color mapping only device: str = "cuda", ) -> Tuple[torch.Tensor, torch.Tensor, Dict[str, int]]: """ Get the feature grid from a saved file masked by the occupancy grid provided by the occupancy_path. `occupancy_path` was precomputed using alpha thresholding + removing `black` background + connected component outlier removal using DBSCAN. See `voxelize.py` for more details. Args: grid_feature_path: Path to the saved feature grid metadata (.npz file) query: Text query to filter voxels clip_model: CLIP model for text encoding device: Device to use for computation alpha_threshold: Threshold for density values softmax_temperature: Temperature for softmax when computing language probabilities voxel_size: Size of each voxel point_cloud_path: Path to pre-filtered point cloud (if None, will use default path) Returns: Tuple containing: - voxel_grid: Tensor of shape (num_voxels, 3) containing filtered voxel coordinates - voxel_sims: Tensor of shape (num_voxels) containing similarities with language query - metrics: Dictionary with metrics about filtering process """ logging.info(f"Loading feature grid from {grid_feature_path}...") # Load metadata metadata = np.load(grid_feature_path) min_bounds = metadata['min_bounds'] max_bounds = metadata['max_bounds'] grid_shape = metadata['grid_shape'] logging.info(f"Bounds: min={min_bounds}, max={max_bounds}") # Load features features_path = grid_feature_path.replace('.npz', '_features.npy') logging.info(f"Loading features from {features_path}...") features = np.load(features_path) # Track metrics metrics = {"initial": np.prod(grid_shape)} # Load occupancy mask to drive voxel selection (authoritative mask) mask_path = grid_feature_path.replace('.npz', '_mask.npy') assert os.path.exists(mask_path), f"Mask not found at {mask_path}. Please run voxelization first." mask_np = np.load(mask_path).astype(bool) # Create coordinate grid and select masked voxels (ordering matches mask flatten in C-order) logging.info("Creating coordinate grid from metadata and applying occupancy mask...") x = torch.linspace(min_bounds[0], max_bounds[0], grid_shape[0], device=device) y = torch.linspace(min_bounds[1], max_bounds[1], grid_shape[1], device=device) z = torch.linspace(min_bounds[2], max_bounds[2], grid_shape[2], device=device) grid_x, grid_y, grid_z = torch.meshgrid(x, y, z, indexing='ij') coords = torch.stack([grid_x, grid_y, grid_z], dim=-1) # (D,H,W,3) # Flatten features in C-order and select exactly masked indices features_tensor = torch.from_numpy(features).to(device) features_flat = features_tensor.reshape(-1, features_tensor.shape[-1]) linear_mask = torch.from_numpy(mask_np.reshape(-1)).to(device) features_filtered = features_flat[linear_mask] # Keep coords for downstream RGB mapping and saving utilities coords_filtered = coords[torch.from_numpy(mask_np)].to(device) metrics["masked_voxels"] = int(linear_mask.sum().item()) logging.info(f"Selected {metrics['masked_voxels']} voxels from mask") return features_filtered, coords_filtered, metrics def load_occupancy_grid(occupancy_path: str, device: str = "cuda"): pc = trimesh.load(occupancy_path) points = np.asarray(pc.vertices) return torch.tensor(points, dtype=torch.float32, device=device) def run_clip(queries, features_filtered, softmax_temperature, device="cuda"): # Load CLIP model clip_model, _ = clip.load(CLIPArgs.model_name, device=device) # Normalize features features_filtered = features_filtered.to(torch.float32) features_filtered /= features_filtered.norm(dim=-1, keepdim=True) # Encode all part queries with torch.no_grad(): text_inputs = clip.tokenize(queries).to(device) query_embs = clip_model.encode_text(text_inputs).float() query_embs /= query_embs.norm(dim=-1, keepdim=True) # Compute similarities between each voxel and each part query # Shape: (num_voxels, num_parts) similarities = features_filtered @ query_embs.T scaled_similarities = similarities / softmax_temperature # Convert scaled similarities to probabilities via softmax. probabilities = torch.nn.functional.softmax(scaled_similarities, dim=1) return probabilities, similarities def clip_part_segmentation( grid_feature_path: str, part_queries: List[str], occupancy_path: str = None, device: str = "cuda", softmax_temperature: float = 0.1, # Added temperature parameter for sharpening ): """ Perform part-based segmentation of a voxel grid using CLIP. Assign each voxel to one of the part queries. Args: grid_feature_path: Path to the saved feature grid metadata (.npz file) part_queries: List of text queries representing different parts device: Device to use for computation occupancy_path: Path to pre-filtered point cloud Returns: Tuple containing: - coords_filtered: Tensor of shape (num_voxels, 3) containing voxel coordinates - part_labels: Tensor of shape (num_voxels) containing part indices (0 to len(part_queries)-1) - part_scores: Tensor of shape (num_voxels) containing similarity scores for the assigned parts - metrics: Dictionary with metrics about the segmentation process """ features_filtered, coords_filtered, metrics = get_initial_voxel_grid_from_saved( grid_feature_path, device=device, occupancy_path=occupancy_path, ) logging.info(f"features_filtered: {features_filtered.shape}") probabilities, _ = run_clip(part_queries, features_filtered, softmax_temperature, device=device) # Get the index of the part with highest similarity for each voxel # Shape: (num_voxels) part_labels = torch.argmax(probabilities, dim=1) # Get the similarity score for the assigned part # Shape: (num_voxels) part_scores = torch.gather(probabilities, 1, part_labels.unsqueeze(1)).squeeze(1) # Get the coordinates for each voxel (assuming they're available from the first function) # This needs to be fixed as coords_filtered isn't returned by get_initial_voxel_grid_from_saved # For now, we'll need to reconstruct the coordinates metrics["num_parts"] = len(part_queries) # Count voxels assigned to each part for i, query in enumerate(part_queries): part_count = (part_labels == i).sum().item() metrics[f"part_{i}_{query}"] = part_count logging.info(f"Part {i} ({query}): {part_count} voxels") return coords_filtered, part_labels, part_scores, metrics import numpy as np from sklearn.neighbors import KDTree from scipy.stats import mode from tqdm import tqdm def local_post_process_segmentation( coords: torch.Tensor, part_labels: torch.Tensor, k: int = 200, ) -> torch.Tensor: """ Perform local post-processing on segmentation results using k-nearest neighbors majority voting. Args: coords: Tensor of shape (num_points, 3) containing point coordinates. part_labels: Tensor of shape (num_points) containing segmentation labels. k: Number of nearest neighbors to consider for voting. Returns: new_labels: Tensor of shape (num_points) with updated labels after local post-processing. """ # Convert tensors to NumPy arrays coords_np = coords.cpu().numpy() labels_np = part_labels.cpu().numpy() # Build a KDTree for fast neighbor search tree = KDTree(coords_np) new_labels_np = labels_np.copy() logging.info(">>>> LOCAL POST-PROCESSING") # For each point, query the k nearest neighbors and take a majority vote. for i, point in tqdm(enumerate(coords_np), total=len(coords_np), desc="Local Post-Processing"): # Query the k nearest neighbors (including the point itself) _, indices = tree.query(point.reshape(1, -1), k=k) neighbor_labels = labels_np[indices[0]] # Compute the mode (most frequent label) among the neighbors m = mode(neighbor_labels, keepdims=False) new_labels_np[i] = m.mode # Return as a torch tensor on the original device return torch.tensor(new_labels_np, device=part_labels.device) def save_segmented_point_cloud( coords: torch.Tensor, part_labels: torch.Tensor, output_dir: str, cmap_name: str = 'tab10', original_pc_path: str = None, part_queries: List[str] = None, material_props: Dict[str, Dict[str, float]] = None, grid_feature_path: str = None, # Added parameter for the original grid path background_id: int = 7 # Added parameter for background material ID ): """ Save segmented point cloud to a PLY file with colors based on part labels. Args: coords: Tensor of shape (num_points, 3) containing point coordinates part_labels: Tensor of shape (num_points) containing part indices output_dir: Directory to save the output files cmap_name: Name of the colormap to use for part colors original_pc_path: Path to the original point cloud file (required if use_actual_rgb=True) part_queries: List of part query strings corresponding to part_labels material_dict_path: Path to JSON file mapping part queries to material properties grid_feature_path: Path to the original feature grid metadata (.npz file) """ # Create output directory if it doesn't exist os.makedirs(output_dir, exist_ok=True) # Define output paths within the directory rgb_output_path = os.path.join(output_dir, "segmented_rgb.ply") semantic_output_path = os.path.join(output_dir, "segmented_semantics.ply") material_grid_path = os.path.join(output_dir, "material_grid.npy") # Convert tensors to numpy arrays coords_np = coords.cpu().numpy() part_labels_np = part_labels.cpu().numpy() assert len(part_labels_np) == len(coords_np), f"part_labels_np and coords_np must have the same length. len(part_labels_np): {len(part_labels_np)}, len(coords_np): {len(coords_np)}. Mismatch is likely due to new voxelization and cached part_labels_np. Try re-running with overwrite=True to recompute part_labels" # Initialize colors array for RGB and semantic colors rgb_colors = np.zeros((coords_np.shape[0], 4), dtype=np.float32) semantic_colors = np.zeros((coords_np.shape[0], 4), dtype=np.float32) # Initialize material property arrays density = np.zeros(coords_np.shape[0], dtype=np.float32) E = np.zeros(coords_np.shape[0], dtype=np.float32) nu = np.zeros(coords_np.shape[0], dtype=np.float32) material_id = np.zeros(coords_np.shape[0], dtype=np.int32) # Get RGB colors from original point cloud if available if original_pc_path: logging.info(">>> LOADING ORIGINAL RGB") # Load original point cloud to get RGB values original_pc = trimesh.load(original_pc_path) original_vertices = np.asarray(original_pc.vertices) original_colors = np.asarray(original_pc.colors) # Normalize colors if needed if original_colors.max() > 1.0: original_colors = original_colors / 255.0 # We need to map the filtered coordinates back to the original point cloud # This is a simple implementation that finds the nearest neighbor from scipy.spatial import cKDTree tree = cKDTree(original_vertices) _, indices = tree.query(coords_np, k=1) # Get the corresponding colors rgb_colors[:, :3] = original_colors[indices, :3] rgb_colors[:, 3] = 1.0 # Full alpha else: # If no original point cloud, use white for RGB rgb_colors[:, :3] = 1.0 # White rgb_colors[:, 3] = 1.0 # Full alpha # Create semantic colors based on part labels logging.info(">>> CREATING SEMANTIC COLORS") # Create a colormap with distinct colors for each part num_parts = part_labels_np.max() + 1 cmap = plt.colormaps[cmap_name] # Generate colors for each point based on its part label for i in range(num_parts): mask = (part_labels_np == i) if not np.any(mask): continue base_color = cmap(i % cmap.N) # RGBA tuple semantic_colors[mask] = np.array(base_color) # Assign material properties based on part labels for i in range(part_labels_np.max() + 1): mask = (part_labels_np == i) if not np.any(mask): continue # Get part query string for this label part_name = part_queries[i] assert part_name in material_props, f"part_name `{part_name}` not found in material_props. Material props: {material_props}" props = material_props[part_name] density[mask] = props.get("density", 200) E[mask] = props.get("E", 2e6) nu[mask] = props.get("nu", 0.4) material_id[mask] = props.get("material_id", 0) logging.info(f"Applied material properties for {part_name}: {props}") # Save both RGB and semantic point clouds # 1. Save RGB point cloud # Convert floating point colors [0,1] to uint8 [0,255] rgb_colors_uint8 = (rgb_colors * 255).astype(np.uint8) # Create structured array for RGB PLY file vertex_data_rgb = np.zeros( coords_np.shape[0], dtype=[ ('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'), ('blue', 'u1'), ('alpha', 'u1'), ('part_label', 'i4'), ('density', 'f4'), ('E', 'f4'), ('nu', 'f4'), ('material_id', 'i4') ] ) # Fill in the data for RGB point cloud vertex_data_rgb['x'] = coords_np[:, 0] vertex_data_rgb['y'] = coords_np[:, 1] vertex_data_rgb['z'] = coords_np[:, 2] vertex_data_rgb['red'] = rgb_colors_uint8[:, 0] vertex_data_rgb['green'] = rgb_colors_uint8[:, 1] vertex_data_rgb['blue'] = rgb_colors_uint8[:, 2] vertex_data_rgb['alpha'] = rgb_colors_uint8[:, 3] vertex_data_rgb['part_label'] = part_labels_np vertex_data_rgb['density'] = density vertex_data_rgb['E'] = E vertex_data_rgb['nu'] = nu vertex_data_rgb['material_id'] = material_id # Create PLY element and save RGB file vertex_element_rgb = PlyElement.describe(vertex_data_rgb, 'vertex') PlyData([vertex_element_rgb], text=False).write(rgb_output_path) logging.info(f"RGB point cloud saved to {rgb_output_path}") # 2. Save semantic point cloud # Convert semantic colors to uint8 semantic_colors_uint8 = (semantic_colors * 255).astype(np.uint8) # Create structured array for semantic PLY file vertex_data_semantic = np.zeros( coords_np.shape[0], dtype=[ ('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'), ('blue', 'u1'), ('alpha', 'u1'), ('part_label', 'i4'), ('density', 'f4'), ('E', 'f4'), ('nu', 'f4'), ('material_id', 'i4') ] ) # Fill in the data for semantic point cloud vertex_data_semantic['x'] = coords_np[:, 0] vertex_data_semantic['y'] = coords_np[:, 1] vertex_data_semantic['z'] = coords_np[:, 2] vertex_data_semantic['red'] = semantic_colors_uint8[:, 0] vertex_data_semantic['green'] = semantic_colors_uint8[:, 1] vertex_data_semantic['blue'] = semantic_colors_uint8[:, 2] vertex_data_semantic['alpha'] = semantic_colors_uint8[:, 3] vertex_data_semantic['part_label'] = part_labels_np vertex_data_semantic['density'] = density vertex_data_semantic['E'] = E vertex_data_semantic['nu'] = nu vertex_data_semantic['material_id'] = material_id logging.info("[SEGMENTATION] Statistics:") logging.info(f"material_id: {np.unique(material_id, return_counts=True)}") logging.info(f"part_labels: {np.unique(part_labels_np, return_counts=True)}") logging.info(f"density: {np.mean(density)}") logging.info(f"E: {np.mean(E)}") logging.info(f"nu: {np.mean(nu)}") # Create PLY element and save semantic file vertex_element_semantic = PlyElement.describe(vertex_data_semantic, 'vertex') PlyData([vertex_element_semantic], text=False).write(semantic_output_path) logging.info(f"Semantic point cloud saved to {semantic_output_path}") # 3. Save material properties for the entire voxel grid if grid_feature_path is not None: logging.info(">>> CREATING MATERIAL GRID") # Load metadata from the original grid metadata = np.load(grid_feature_path) min_bounds = metadata['min_bounds'] max_bounds = metadata['max_bounds'] grid_shape = metadata['grid_shape'] logging.info(f"Grid shape: {grid_shape}") # Create material property grids with the same shape as the original grid # Each grid will have 4 channels: density, E, nu, material_id material_grid = np.zeros((*grid_shape, 4), dtype=np.float32) # Set default values for background (material_id=background_id) material_grid[..., 0] = 0 # density = 0 material_grid[..., 1] = 0 # E = 0 material_grid[..., 2] = 0 # nu = 0 material_grid[..., 3] = background_id # material_id = background_id # material_grid = np.ones((*grid_shape, 4), dtype=np.float32) * -1 ## default to -1 # Use the authoritative occupancy mask to place values exactly mask_path = grid_feature_path.replace('.npz', '_mask.npy') assert os.path.exists(mask_path), f"Mask not found: {mask_path}" mask = np.load(mask_path).astype(bool) flat_idx = np.flatnonzero(mask.ravel(order='C')) assert len(flat_idx) == len(coords_np), ( f"Mask/coords length mismatch: mask has {len(flat_idx)} true voxels, " f"coords has {len(coords_np)} points. Ensure coords come from mask.") material_grid_flat = material_grid.reshape(-1, 4) material_grid_flat[flat_idx, 0] = density material_grid_flat[flat_idx, 1] = E material_grid_flat[flat_idx, 2] = nu material_grid_flat[flat_idx, 3] = material_id # logging.info(f"Number of points in point cloud: {len(coords_np)}") # logging.info(f"Number of unique voxels assigned: {len(unique_voxels_assigned)}") # logging.info(f"Difference (duplicate mappings): {len(coords_np) - len(unique_voxels_assigned)}") # material_id_count = (material_grid[:, :, :, 3] == 7).sum() # logging.info(f"AFTER ASSIGNMENT: Number of material_id == 7 in material_grid: {material_id_count}") # logging.info(f"Number of voxels with material_id != BACKGROUND_ID: {1000000 - material_id_count}") # Save the material grid np.save(material_grid_path, material_grid) logging.info(f"Material grid saved to {material_grid_path}") # Also save each property as a separate file for easier visualization np.save(os.path.join(output_dir, "density_grid.npy"), material_grid[..., 0]) np.save(os.path.join(output_dir, "E_grid.npy"), material_grid[..., 1]) np.save(os.path.join(output_dir, "nu_grid.npy"), material_grid[..., 2]) np.save(os.path.join(output_dir, "material_id_grid.npy"), material_grid[..., 3]) logging.info(f"Individual material property grids saved to {output_dir}") import torch import numpy as np from scipy.spatial import KDTree from collections import deque def build_adjacency(coords, radius=0.05): """ Build an adjacency list for each point i, containing indices of neighbors within the specified 'radius'. Args: coords (np.ndarray): Array of shape (N, 3) with point coordinates. radius (float): Neighborhood radius for adjacency. Returns: adjacency (list[list[int]]): adjacency[i] is a list of neighbor indices for point i. """ n_points = coords.shape[0] tree = KDTree(coords) adjacency = [[] for _ in range(n_points)] # For each point, find all neighbors within 'radius' for i in tqdm(range(n_points), total=n_points): neighbor_indices = tree.query_ball_point(coords[i], r=radius) adjacency[i] = neighbor_indices return adjacency def get_connected_components(adjacency, labels): """ Identify connected components for each label using BFS. Args: adjacency (list[list[int]]): adjacency[i] is a list of neighbors for point i. labels (np.ndarray): shape (N,) of integer labels. Returns: label_to_components (dict): { label_value: [ list_of_components_for_this_label, ... ], ... } Each component is a list of point indices. """ visited = set() label_to_components = {} n_points = len(labels) for i in tqdm(range(n_points), total=n_points): if i not in visited: current_label = labels[i] # BFS to gather connected points with the same label queue = deque([i]) component = [] visited.add(i) while queue: node = queue.popleft() component.append(node) for nb in adjacency[node]: if nb not in visited and labels[nb] == current_label: visited.add(nb) queue.append(nb) label_to_components.setdefault(current_label, []).append(component) return label_to_components def reassign_small_components(adjacency, labels, label_to_components): """ For each label, keep only the largest connected component. All other small components get relabeled to a special debug label (-1). Args: adjacency (list[list[int]]): adjacency[i] is list of neighbor indices. These neighbors are points within the radius specified in build_adjacency(). labels (np.ndarray): current labels for each point. label_to_components (dict): { label_value: [components], ... } """ for lbl, components in label_to_components.items(): logging.info(f">>> LABEL: {lbl} NUM COMPONENTS: {len(components)}") if len(components) <= 1: # There's only one component or none for this label, nothing to fix continue # Sort components by size descending components.sort(key=len, reverse=True) largest_component = components[0] small_components = components[1:] # Keep the largest connected component with the current label # For each smaller component, relabel those points to -1 (debug label) for comp in small_components: for idx in comp: # Instead of using majority vote among neighbors, # simply assign a special debug label (-1) labels[idx] = -1 # The original code below used majority voting among neighbors: # neighbor_labels = [] # for nb in adjacency[idx]: # if nb not in comp: # only consider neighbors outside this small component # neighbor_labels.append(labels[nb]) # # if len(neighbor_labels) == 0: # # If isolated (rare), keep the original label or do a fallback # continue # # # Majority vote among neighbor labels # neighbor_labels = np.array(neighbor_labels) # new_label = _majority_vote(neighbor_labels) # labels[idx] = new_label def _majority_vote(label_array): """Return the most frequent label in label_array.""" vals, counts = np.unique(label_array, return_counts=True) return vals[np.argmax(counts)] def connected_component_cleanup( coords: torch.Tensor, part_labels: torch.Tensor, radius: float = 0.05 ) -> torch.Tensor: """ High-level function that: 1) Builds adjacency among points (within 'radius'). 2) Finds connected components for each label. 3) Keeps only the largest connected component for each label, re-labels smaller 'islands.' Args: coords (torch.Tensor): shape (N, 3) of point coordinates. part_labels (torch.Tensor): shape (N,) of integer labels. radius (float): neighborhood radius for adjacency graph. Returns: updated_labels (torch.Tensor): shape (N,) updated segmentation labels. """ device = part_labels.device # Convert to numpy coords_np = coords.cpu().numpy() labels_np = part_labels.cpu().numpy() # 1) Build adjacency graph adjacency = build_adjacency(coords_np, radius=radius) # 2) Get connected components for each label label_to_components = get_connected_components(adjacency, labels_np) # 3) Re-label smaller "islands" if a label must be unique reassign_small_components(adjacency, labels_np, label_to_components) # Convert back to torch updated_labels = torch.from_numpy(labels_np).to(device) return updated_labels import argparse if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--grid_feature_path", type=str, required=True) parser.add_argument("--occupancy_path", type=str, required=True) parser.add_argument("--output_dir", type=str, required=True) # parser.add_argument("--part_queries", type=str, required=True) parser.add_argument("--material_dict_path", type=str, required=True, help="Path to JSON file mapping part queries to material properties") parser.add_argument("--use_spatial_smoothing", type=str2bool, default=False) parser.add_argument("--overwrite", type=str2bool, default=False) parser.add_argument("--background_id", type=int, default=7, help="Material ID for background voxels") # parser.add_argument("--overwrite", type=str2bool, default=True) args = parser.parse_args() set_logger() assert os.path.exists(args.material_dict_path), f"material_dict_path {args.material_dict_path} does not exist" material_props = load_json(args.material_dict_path) logging.info(f"Loaded material properties from {args.material_dict_path}") if "material_dict" in material_props: material_props = material_props["material_dict"] part_queries = list(material_props.keys()) labels_output_path = os.path.join(args.output_dir, "part_labels.npy") if args.overwrite or not os.path.exists(labels_output_path): coords_filtered, part_labels, part_scores, metrics = clip_part_segmentation(args.grid_feature_path, part_queries, args.occupancy_path) if args.use_spatial_smoothing: logging.info(">>>> USING SPATIAL SMOOTHING") part_labels = local_post_process_segmentation(coords_filtered, part_labels) # Save part labels as a numpy array np.save(labels_output_path, part_labels.cpu().numpy()) logging.info(f"Part labels saved to {labels_output_path}") else: part_labels = torch.from_numpy(np.load(labels_output_path)) coords_filtered = load_occupancy_grid(args.occupancy_path) # Save all outputs to the specified directory save_segmented_point_cloud(coords_filtered, part_labels, args.output_dir, original_pc_path=args.occupancy_path, part_queries=part_queries, material_props=material_props, grid_feature_path=args.grid_feature_path, background_id=args.background_id) # Pass background_id from config ================================================ FILE: pixie/voxel/viz_segmentation.py ================================================ from pixie.voxel.segmentation import * from pixie.utils import * import matplotlib.pyplot as plt from vlmx.utils import load_json def visualize_part_segmentation( coords: torch.Tensor, part_labels: torch.Tensor, part_queries: List[str], part_scores: torch.Tensor = None, use_scores_for_alpha: bool = False, point_size: float = 5.0, figsize: Tuple[int, int] = (12, 10), view_angles: Tuple[float, float] = (30, 45), save_path: str = None, ): """ Visualize part segmentation results with different colors for each part. Args: coords: Tensor of shape (num_points, 3) containing point coordinates part_labels: Tensor of shape (num_points) containing part indices part_queries: List of part names corresponding to the indices part_scores: Optional tensor of shape (num_points) with similarity scores use_scores_for_alpha: If True, use scores to determine point transparency point_size: Size of points in the scatter plot figsize: Figure size (width, height) in inches view_angles: Tuple of (elevation, azimuth) for the 3D view save_path: If provided, save the figure to this path Returns: matplotlib figure object """ import matplotlib.pyplot as plt import matplotlib.cm as cm from mpl_toolkits.mplot3d import Axes3D import numpy as np # Convert tensors to numpy arrays coords_np = coords.cpu().numpy() part_labels_np = part_labels.cpu().numpy() if use_scores_for_alpha and part_scores is not None: part_scores_np = part_scores.cpu().numpy() # Check if there are any -1 labels present has_unassigned = -1 in part_labels_np # Create a colormap with distinct colors for each part # Only add an extra color for the unassigned label if it exists num_parts = len(part_queries) num_colors_needed = num_parts + (1 if has_unassigned else 0) cmap = plt.colormaps['tab10'] # Create figure and 3D axis fig = plt.figure(figsize=figsize) ax = fig.add_subplot(111, projection='3d') # First handle the unassigned (-1) labels if they exist if has_unassigned: mask_unassigned = (part_labels_np == -1) if np.any(mask_unassigned): unassigned_points = coords_np[mask_unassigned] # Use the last color in the colormap for unassigned points unassigned_color = cmap(num_colors_needed - 1) ax.scatter( unassigned_points[:, 0], unassigned_points[:, 1], unassigned_points[:, 2], color=unassigned_color, s=point_size, label="unassigned", alpha=0.5 # Lower alpha for unassigned points ) # Plot each part with a different color and variable alpha if requested for i, part_name in enumerate(part_queries): mask = (part_labels_np == i) if not np.any(mask): continue part_points = coords_np[mask] base_color = cmap(i) # RGBA tuple if use_scores_for_alpha and part_scores is not None: # Use the part scores to define alpha for each point. alphas = part_scores_np[mask] # Ensure alphas are in the valid range [0, 1]. If not, clip them. alphas = np.clip(alphas, 0, 1) # Create an array of colors: replicate the base RGB for each point and set the alpha channel. rgb = np.array(base_color[:3]) colors = np.tile(rgb, (part_points.shape[0], 1)) # Append the per-point alpha as the 4th channel. colors = np.concatenate([colors, alphas[:, None]], axis=1) ax.scatter( part_points[:, 0], part_points[:, 1], part_points[:, 2], c=colors, s=point_size, label=part_name, ) else: # Use a fixed alpha if not using scores ax.scatter( part_points[:, 0], part_points[:, 1], part_points[:, 2], color=base_color, s=point_size, label=part_name, alpha=0.8 ) # Set labels and title ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # ax.set_title('Part Segmentation') # ax.set_axis_off() # Set the viewing angle ax.view_init(elev=view_angles[0], azim=view_angles[1]) # Add a legend lgnd = ax.legend(fontsize=20) for handle in lgnd.legend_handles: handle.set_sizes([80]) # Make axes equal for better visualization x_limits = ax.get_xlim3d() y_limits = ax.get_ylim3d() z_limits = ax.get_zlim3d() x_range = abs(x_limits[1] - x_limits[0]) y_range = abs(y_limits[1] - y_limits[0]) z_range = abs(z_limits[1] - z_limits[0]) max_range = max(x_range, y_range, z_range) / 2.0 x_mid = (x_limits[1] + x_limits[0]) / 2 y_mid = (y_limits[1] + y_limits[0]) / 2 z_mid = (z_limits[1] + z_limits[0]) / 2 ax.set_xlim3d([x_mid - max_range, x_mid + max_range]) ax.set_ylim3d([y_mid - max_range, y_mid + max_range]) ax.set_zlim3d([z_mid - max_range, z_mid + max_range]) # Make sure all axes have equal scale ax.set_box_aspect([1, 1, 1]) plt.tight_layout() if save_path: plt.savefig(save_path, dpi=300, bbox_inches='tight', pad_inches=0) return fig if __name__ == "__main__": import argparse parser = argparse.ArgumentParser() parser.add_argument("--obj_id", type=str, required=True, default="ecb91f433f144a7798724890f0528b23") parser.add_argument("--output_dir", type=str, required=True) parser.add_argument("--part_queries", type=str, required=True, default="pot, trunk, leaves") parser.add_argument("--render_outputs_dir", type=str, required=True, help="Directory containing render outputs (clip_features.npz, clip_features_pc.ply)") parser.add_argument("--k", type=int, default=200) parser.add_argument("--material_dict_path", type=str, default=None, help="Path to JSON file mapping part queries to material properties") parser.add_argument("--overwrite", type=str2bool, default=False) args = parser.parse_args() os.makedirs(args.output_dir, exist_ok=True) if args.material_dict_path is not None: with open(args.material_dict_path, 'r') as f: material_props = json.load(f) if "material_dict" in material_props: material_props = material_props["material_dict"] out_fig_path = f"{args.output_dir}/clip.png" if not args.overwrite and os.path.exists(out_fig_path): exit(0) obj_id = args.obj_id part_queries = [q.strip() for q in args.part_queries.split(",")] result_dir = args.render_outputs_dir grid_feature_path = f"{result_dir}/clip_features.npz" occupancy_path = f"{result_dir}/clip_features_pc.ply" coords_filtered, part_labels, part_scores, metrics = clip_part_segmentation( grid_feature_path, part_queries, occupancy_path, ) fig = visualize_part_segmentation( coords_filtered, part_labels, part_queries, part_scores=part_scores, use_scores_for_alpha=False, point_size=2.0, figsize=(14, 12), view_angles=(0, 0) ) fig.savefig(out_fig_path, bbox_inches='tight', dpi=300, pad_inches=0, ) logging.info(f"SAVED image to {args.output_dir}/clip.png") if args.material_dict_path is not None: save_segmented_point_cloud(coords_filtered, part_labels, args.output_dir, original_pc_path=occupancy_path, part_queries=part_queries, material_props=material_props, grid_feature_path=grid_feature_path) # Pass grid_feature_path ================================================ FILE: pixie/voxel/voxelize.py ================================================ import argparse import logging import os import numpy as np import open3d as o3d import torch from pathlib import Path from typing import Tuple, Optional, Dict, Any from tqdm import tqdm from pixie.utils import str2bool, set_logger from f3rm_robot.load import load_nerfstudio_objaverse_outputs from f3rm_robot.initial_proposals import dense_voxel_grid from f3rm_robot.optimize import filter_gray_background, remove_floating_clusters, get_qp_feats def extract_clip_voxel_grid( scene_path: str, output_path: str, bounds: Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]] = ((-0.5, 0.5), (-0.5, 0.5), (-0.5, 0.5)), voxel_size: float = 0.01, batch_size: int = 4096, alpha_weighted: bool = True, device: str = "cuda" if torch.cuda.is_available() else "cpu", alpha_threshold_for_mask: float = 0.01, gray_threshold_for_mask: float = 0.05, run_outlier_filter: bool = True, nb_neighbors: int = 50, std_ratio: float = 4.0, min_cluster_pts: int = 10, eps_multiplier: float = 5.0, ) -> str: """ Extract CLIP features in a voxel grid format from a trained F3RM model. Args: scene_path: Path to the trained F3RM model output_path: Path to save the extracted feature grid min_bounds: Minimum bounds of the voxel grid in world coordinates max_bounds: Maximum bounds of the voxel grid in world coordinates voxel_size: Size of each voxel batch_size: Number of voxels to process at once alpha_weighted: Whether to weight features by alpha (density) device: Device to use for computation alpha_threshold_for_mask: Threshold for occupancy mask generation gray_threshold_for_mask: Threshold for gray background filtering run_outlier_filter: Whether to run outlier filtering nb_neighbors: Number of neighbors for outlier removal std_ratio: Standard deviation ratio for outlier removal min_cluster_pts: Minimum points for cluster removal eps_multiplier: Epsilon multiplier for DBSCAN clustering Returns: Path to the saved feature grid metadata """ logging.info(f"Loading feature field from {scene_path}") load_state = load_nerfstudio_objaverse_outputs(scene_path) feature_field = load_state.feature_field_adapter() # Extract min/max bounds from the bounds tuple min_bounds = (bounds[0][0], bounds[1][0], bounds[2][0]) max_bounds = (bounds[0][1], bounds[1][1], bounds[2][1]) logging.info(f"Creating voxel grid with size {voxel_size}") voxel_grid = dense_voxel_grid( min_bounds=min_bounds, max_bounds=max_bounds, voxel_size=voxel_size ) original_shape = voxel_grid.shape[:-1] # Exclude the last dimension (3 for xyz) logging.info(f"Voxel grid shape: {voxel_grid.shape}") # Flatten and move to device voxel_grid_flat = voxel_grid.reshape(-1, 3) voxel_grid_flat = torch.tensor(voxel_grid_flat, dtype=torch.float32, device=device) # Determine feature dimension with torch.no_grad(): sample_output = feature_field(voxel_grid_flat[:1]) feature_dim = sample_output["feature"].shape[-1] logging.info(f"Feature dimension: {feature_dim}") # Initialize arrays total_voxels = voxel_grid_flat.shape[0] features_cpu = np.zeros((total_voxels, feature_dim), dtype=np.float16) alphas_cpu = np.zeros((total_voxels, 1), dtype=np.float16) rgb_cpu = np.zeros((total_voxels, 3), dtype=np.float16) # Extract features in batches logging.info("Extracting features from voxel grid") with torch.no_grad(): for i in tqdm(range(0, total_voxels, batch_size), desc="Extracting features"): end_idx = min(i + batch_size, total_voxels) batch = voxel_grid_flat[i:end_idx] # Get outputs from feature field outputs = feature_field(batch) alpha = feature_field.get_alpha(batch, voxel_size) # Get features - either raw or alpha-weighted if alpha_weighted: feature = get_qp_feats(outputs) else: feature = outputs["feature"] # Get RGB values rgb = feature_field.get_rgb(batch) # Move to CPU and convert to float16 features_cpu[i:end_idx] = feature.cpu().to(torch.float16).numpy() alphas_cpu[i:end_idx] = alpha.cpu().to(torch.float16).numpy() rgb_cpu[i:end_idx] = rgb.cpu().to(torch.float16).numpy() # Free up GPU memory del outputs, alpha, feature, rgb torch.cuda.empty_cache() # Reshape to original grid shape logging.info("Reshaping arrays to grid format") features_reshaped = features_cpu.reshape(*original_shape, feature_dim) alphas_reshaped = alphas_cpu.reshape(*original_shape, 1) rgb_reshaped = rgb_cpu.reshape(*original_shape, 3) # Save data _save_voxel_data( output_path, features_reshaped, alphas_reshaped, rgb_reshaped, min_bounds, max_bounds, voxel_size, feature_dim, original_shape, alpha_weighted, alpha_threshold_for_mask ) # Create occupancy mask _create_occupancy_mask( output_path, voxel_grid, alphas_reshaped, rgb_reshaped, alpha_threshold_for_mask, gray_threshold_for_mask, run_outlier_filter, nb_neighbors, std_ratio, min_cluster_pts, eps_multiplier, voxel_size, device ) logging.info("Voxel grid extraction completed") return output_path def _save_voxel_data( output_path: str, features: np.ndarray, alphas: np.ndarray, rgb: np.ndarray, min_bounds: Tuple[float, float, float], max_bounds: Tuple[float, float, float], voxel_size: float, feature_dim: int, grid_shape: Tuple[int, int, int], alpha_weighted: bool, alpha_threshold_for_mask: float, ) -> None: """Save voxel data to files.""" # Create output directory os.makedirs(os.path.dirname(output_path), exist_ok=True) # Save metadata output_data = { "min_bounds": min_bounds, "max_bounds": max_bounds, "voxel_size": voxel_size, "feature_dim": feature_dim, "grid_shape": grid_shape, "alpha_weighted": alpha_weighted, "alpha_threshold_for_mask": alpha_threshold_for_mask, } np.savez_compressed(output_path, **output_data) # Save large arrays to separate files features_path = output_path.replace('.npz', '_features.npy') alphas_path = output_path.replace('.npz', '_alphas.npy') rgb_path = output_path.replace('.npz', '_rgb.npy') logging.info(f"Saving features to {features_path}") np.save(features_path, features) logging.info(f"Saving alphas to {alphas_path}") np.save(alphas_path, alphas) logging.info(f"Saving RGB to {rgb_path}") np.save(rgb_path, rgb) def _create_occupancy_mask( output_path: str, voxel_grid: np.ndarray, alphas_reshaped: np.ndarray, rgb_reshaped: np.ndarray, alpha_threshold_for_mask: float, gray_threshold_for_mask: float, run_outlier_filter: bool, nb_neighbors: int, std_ratio: float, min_cluster_pts: int, eps_multiplier: float, voxel_size: float, device: str, ) -> None: """Create and save occupancy mask.""" logging.info("Building occupancy mask (density + gray-BG + outlier/cluster filters)") # Apply density thresholding alphas_flat = torch.from_numpy(alphas_reshaped.reshape(-1)).to(device) density_mask = alphas_flat > alpha_threshold_for_mask idx_density = torch.where(density_mask)[0] coords_density = torch.tensor( voxel_grid.reshape(-1, 3)[idx_density.cpu().numpy()], dtype=torch.float32, device=device ) rgb_density = torch.tensor( rgb_reshaped.reshape(-1, 3)[idx_density.cpu().numpy()], dtype=torch.float32, device=device ) # Apply gray background filtering class _MockField: def get_rgb(self, _): return rgb_density non_bg_mask = filter_gray_background( coords_density, _MockField(), gray_threshold_for_mask, device, return_mask=True ) idx_after_bg = idx_density[non_bg_mask] # Apply outlier and cluster filtering if run_outlier_filter and idx_after_bg.numel(): pts_np = voxel_grid.reshape(-1, 3)[idx_after_bg.cpu().numpy()] pcd = o3d.geometry.PointCloud(o3d.utility.Vector3dVector(pts_np)) # Statistical outlier removal pcd, ind_stat = pcd.remove_statistical_outlier( nb_neighbors=nb_neighbors, std_ratio=std_ratio ) idx_after_stat = idx_after_bg[ind_stat] # Floating cluster removal via DBSCAN labels = np.array( pcd.cluster_dbscan( eps=voxel_size * eps_multiplier, min_points=min_cluster_pts, print_progress=False ) ) keep_mask = labels != -1 idx_final = idx_after_stat[keep_mask] else: idx_final = idx_after_bg # Create final mask final_mask_flat = torch.zeros_like(alphas_flat, dtype=torch.bool) final_mask_flat[idx_final] = True occupancy_mask = final_mask_flat.cpu().numpy().reshape(*alphas_reshaped.shape[:-1]) # Save mask mask_path = output_path.replace('.npz', '_mask.npy') np.save(mask_path, occupancy_mask) logging.info(f"Saved occupancy mask to {mask_path}") def compute_occupancy_point_cloud( feature_grid_path: str, alpha_threshold: float = 0.01, gray_threshold: float = 0.05, voxel_downsample_size: float = 0.01, device: str = "cuda" if torch.cuda.is_available() else "cpu", ) -> Tuple[o3d.geometry.PointCloud, Dict[str, Any]]: """ Compute an occupancy point cloud from saved voxel grid features and alphas. Args: feature_grid_path: Path to the saved feature grid metadata (.npz file) alpha_threshold: Threshold for density values to consider a voxel occupied gray_threshold: Threshold for detecting gray background voxel_downsample_size: Size for downsampling the resulting point cloud device: Device to use for computation Returns: Tuple of (point_cloud, metrics_dict) """ logging.info(f"Loading feature grid from {feature_grid_path}") metric = {} # Load metadata metadata = np.load(feature_grid_path) min_bounds = metadata['min_bounds'] max_bounds = metadata['max_bounds'] voxel_size = float(metadata['voxel_size']) grid_shape = metadata['grid_shape'] metric['grid_shape'] = grid_shape metric["init_num_voxels"] = grid_shape[0] * grid_shape[1] * grid_shape[2] logging.info(f"Grid shape: {grid_shape}, voxel size: {voxel_size}") logging.info(f"Bounds: min={min_bounds}, max={max_bounds}") assert grid_shape[0] == grid_shape[1] == grid_shape[2] == 64, "Grid must be cubic == 64 (what we trained on)" # Load data alphas_path = feature_grid_path.replace('.npz', '_alphas.npy') rgb_path = feature_grid_path.replace('.npz', '_rgb.npy') logging.info(f"Loading alphas from {alphas_path}") alphas = np.load(alphas_path) logging.info(f"Loading RGB from {rgb_path}") rgb = np.load(rgb_path) # Convert to torch tensors alphas_tensor = torch.from_numpy(alphas).to(device) rgb_tensor = torch.from_numpy(rgb).to(device) # Create coordinate grid logging.info("Creating coordinate grid") x = torch.linspace(min_bounds[0], max_bounds[0], grid_shape[0], device=device) y = torch.linspace(min_bounds[1], max_bounds[1], grid_shape[1], device=device) z = torch.linspace(min_bounds[2], max_bounds[2], grid_shape[2], device=device) grid_x, grid_y, grid_z = torch.meshgrid(x, y, z, indexing='ij') coords = torch.stack([grid_x, grid_y, grid_z], dim=-1) # Flatten for processing coords_flat = coords.reshape(-1, 3) alphas_flat = alphas_tensor.reshape(-1, 1) rgb_flat = rgb_tensor.reshape(-1, 3) # Apply density thresholding logging.info(f"Applying density threshold {alpha_threshold}") density_mask = alphas_flat.squeeze(-1) > alpha_threshold coords_filtered = coords_flat[density_mask] rgb_filtered = rgb_flat[density_mask] metric["num_voxels_after_density_threshold"] = coords_filtered.shape[0] logging.info(f"After density filtering: {coords_filtered.shape[0]} points") # Apply gray background filtering class MockFeatureFieldAdapter: def get_rgb(self, points): return rgb_filtered mock_feature_field = MockFeatureFieldAdapter() logging.info(f"Applying gray background filtering with threshold {gray_threshold}") non_bg_mask = filter_gray_background( coords_filtered, mock_feature_field, gray_threshold, device, return_mask=True ) # Handle different return types from filter_gray_background if isinstance(non_bg_mask, torch.Tensor) and non_bg_mask.shape == coords_filtered.shape: coords_filtered = non_bg_mask with torch.no_grad(): rgb_filtered = mock_feature_field.get_rgb(coords_filtered) else: coords_filtered = coords_filtered[non_bg_mask] rgb_filtered = rgb_filtered[non_bg_mask] metric["num_voxels_after_gray_background_filtering"] = coords_filtered.shape[0] # Check if we have any points left if coords_filtered.shape[0] == 0: logging.warning("All voxels were filtered out. Creating empty point cloud.") logging.warning(f"This may indicate that your gray_threshold ({gray_threshold}) is too high.") logging.warning("Try lowering the gray_threshold (e.g., --gray_threshold 0.01) or adjusting alpha_threshold.") pcd = o3d.geometry.PointCloud() metric["num_voxels_after_downsampling"] = 0 metric["num_voxels_after_outlier_removal"] = 0 metric["num_voxels_after_floating_cluster_removal"] = 0 metric["final_num_voxels"] = 0 logging.info(f"Metrics: {metric}") return pcd, metric # Create point cloud logging.info("Creating point cloud") pcd = o3d.geometry.PointCloud() pcd.points = o3d.utility.Vector3dVector(coords_filtered.cpu().numpy()) # Add colors (normalize if needed) if rgb_filtered.numel() > 0 and rgb_filtered.max() > 1.0: rgb_filtered = rgb_filtered / 255.0 pcd.colors = o3d.utility.Vector3dVector(rgb_filtered.cpu().numpy()) # Downsample point cloud logging.info(f"Downsampling with voxel size {voxel_downsample_size}") pcd = pcd.voxel_down_sample(voxel_size=voxel_downsample_size) metric["num_voxels_after_downsampling"] = len(pcd.points) # Remove statistical outliers logging.info("Removing outliers") pcd, _ = pcd.remove_statistical_outlier(nb_neighbors=50, std_ratio=4.0) metric["num_voxels_after_outlier_removal"] = len(pcd.points) # Remove floating clusters logging.info("Removing floating clusters") pcd = remove_floating_clusters(pcd, min_points=10, eps=voxel_downsample_size*5) metric["num_voxels_after_floating_cluster_removal"] = len(pcd.points) logging.info(f"Final point cloud has {len(pcd.points)} points") metric["final_num_voxels"] = len(pcd.points) logging.info(f"Metrics: {metric}") return pcd, metric def save_point_cloud(pcd: o3d.geometry.PointCloud, output_path: str) -> None: """ Save a point cloud to a file. Args: pcd: Open3D point cloud output_path: Path to save the point cloud """ os.makedirs(os.path.dirname(output_path), exist_ok=True) o3d.io.write_point_cloud(output_path, pcd) logging.info(f"Saved point cloud to {output_path}") def main() -> None: """Main function to run voxel extraction and point cloud generation.""" parser = argparse.ArgumentParser( description="Extract CLIP features in voxel grid format from a trained F3RM model" ) # Required arguments parser.add_argument("--scene", type=str, required=True, help="Path to the trained F3RM model") parser.add_argument("--output", type=str, required=True, help="Path to save the extracted feature grid") # Bounds arguments parser.add_argument("--min_x", type=float, default=-0.5, help="Minimum x bound") parser.add_argument("--min_y", type=float, default=-0.5, help="Minimum y bound") parser.add_argument("--min_z", type=float, default=-0.5, help="Minimum z bound") parser.add_argument("--max_x", type=float, default=0.5, help="Maximum x bound") parser.add_argument("--max_y", type=float, default=0.5, help="Maximum y bound") parser.add_argument("--max_z", type=float, default=0.5, help="Maximum z bound") # Processing arguments parser.add_argument("--voxel_size", type=float, default=0.01, help="Size of each voxel") parser.add_argument("--batch_size", type=int, default=4096, help="Number of voxels to process at once") parser.add_argument("--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu", help="Device to use") parser.add_argument("--alpha_weighted", type=str2bool, default=True, help="Weight features by alpha (density)") # Filtering arguments parser.add_argument("--alpha_threshold", type=float, default=0.01, help="Threshold for density values") parser.add_argument("--gray_threshold", type=float, default=0.05, help="Threshold for gray background filtering. Lower if all voxels are filtered out (e.g., 0.01).") # Output arguments parser.add_argument("--pc_output", type=str, help="Path to save the extracted point cloud") args = parser.parse_args() # Set up logging set_logger() # Prepare bounds bounds = ((args.min_x, args.max_x), (args.min_y, args.max_y), (args.min_z, args.max_z)) # Extract voxel grid output_path = extract_clip_voxel_grid( args.scene, args.output, bounds, args.voxel_size, args.batch_size, args.alpha_weighted, args.device, args.alpha_threshold ) # Generate point cloud pcd, metric = compute_occupancy_point_cloud( output_path, args.alpha_threshold, args.gray_threshold, args.voxel_size, args.device ) # Save point cloud pc_output = args.pc_output or output_path.replace('.npz', '_pc.ply') save_point_cloud(pcd, pc_output) if __name__ == "__main__": main() ================================================ FILE: render.py ================================================ import time import os import logging import shutil import glob from pathlib import Path from typing import Optional import hydra from omegaconf import DictConfig from pixie.utils import (run_cmd, resolve_paths, get_output_paths, create_directories, validate_config, get_latest_nerf_run, save_contextual_config, generate_material_segmentation, generate_neural_segmentation, get_material_vlm_segmentation_path, get_material_neural_segmentation_path, set_logger) from pixie.viz_utils import compile_video import cv2 def get_video_fps(video_path: str) -> float: """Extracts frames-per-second (FPS) from a video file.""" if not os.path.exists(video_path): raise FileNotFoundError(f"Video file not found at {video_path}") video = cv2.VideoCapture(str(video_path)) fps = video.get(cv2.CAP_PROP_FPS) video.release() return fps def move_files_to_folder(src_dir: Path, dst_dir: Path) -> None: """Move all files from src_dir to dst_dir.""" dst_dir.mkdir(parents=True, exist_ok=True) for file_path in src_dir.iterdir(): if file_path.is_file(): shutil.move(str(file_path), str(dst_dir / file_path.name)) # Remove empty source directory if src_dir.exists() and not any(src_dir.iterdir()): src_dir.rmdir() def render_nerf_model(cfg: DictConfig, paths: dict) -> str: """Render RGB images from the trained NeRF model.""" # Get the latest NeRF training run nerf_output_dir = paths['nerf_output'] latest_run = get_latest_nerf_run(nerf_output_dir) if not latest_run: raise RuntimeError( f"No NeRF training run found in {nerf_output_dir}. Please run the pipeline first." ) config_path = os.path.join(latest_run, "config.yml") if not os.path.exists(config_path): raise RuntimeError(f"NeRF config file not found at {config_path}") # Create render output directory render_output_dir = f"{paths['render_output']}/rgb_renders" os.makedirs(render_output_dir, exist_ok=True) # Check if we need to render (check for existing rendered images in subdirectories) rendered_images_exist = any(glob.glob(f"{render_output_dir}/*/*/*.{ext}") for ext in ['png', 'jpg', 'jpeg']) # Render RGB images if needed if cfg.overwrite or not rendered_images_exist: render_cmd = [ "ns-render", "dataset", "--load-config", config_path, "--output-path", render_output_dir, "--rendered-output-names", cfg.output_rendering.nerf_render.rendered_output_names, "--split", cfg.output_rendering.nerf_render.split, ] run_cmd(render_cmd, step_name="RENDER_RGB") logging.info( f"RGB rendering completed. Output directory: {render_output_dir}") else: logging.info( f"RGB renders already exist at {render_output_dir}. Skipping rendering." ) return render_output_dir def render_blender_gs(cfg: DictConfig, paths: dict) -> str: """Render Gaussian Splatting outputs using Blender.""" blender_output_dir = paths['blender_output'] render_cfg = cfg.output_rendering.blender_render_gs # Get the ply_dir from physgaussian_output ply_dir = os.path.join(paths['physgaussian_output'], f"sample_{cfg.physics.sample_id}", "ply_files") assert os.path.exists(ply_dir), f"PLY directory does not exist: {ply_dir}" # Create output directory for GS renders gs_output_dir = os.path.join(blender_output_dir, "gs_renders") os.makedirs(gs_output_dir, exist_ok=True) # Check if video already exists video_output = os.path.join(gs_output_dir, f"output.mp4") if os.path.exists(video_output) and not cfg.overwrite: logging.info(f"GS render video already exists at {video_output}. Skipping rendering.") return gs_output_dir # Build command to run render_gs.py cmd = [ "blender", "-b", "-P", "pixie/blender/render_gs.py", "--", "--obj_id", cfg.obj_id, "--ply_dir", ply_dir, "--output_dir", gs_output_dir, "--data_dir", paths['data_dir'], "--blend_file_path", paths['blend_file_path'], "--blender_gs_addon_path", paths['blender_gs_addon_path'] ] # Add place_on_ground flag if enabled if render_cfg.get('place_on_ground', False): cmd.append("--place_on_ground") # Add optional arguments based on render config if render_cfg.get('rotate_around') is not None: cmd.extend(["--rotate_around", str(render_cfg.rotate_around)]) if render_cfg.get('camera_id') is not None: cmd.extend(["--camera_id", str(render_cfg.camera_id)]) if render_cfg.get('focal_length_ratio') is not None: cmd.extend(["--focal_length_ratio", str(render_cfg.focal_length_ratio)]) if render_cfg.get('transparent', False): cmd.append("--transparent") if render_cfg.get('resolution_x') is not None: cmd.extend(["--resolution_x", str(render_cfg.resolution_x)]) if render_cfg.get('resolution_y') is not None: cmd.extend(["--resolution_y", str(render_cfg.resolution_y)]) if render_cfg.get('cycles_samples') is not None: cmd.extend(["--cycles_samples", str(render_cfg.cycles_samples)]) if render_cfg.get('num_renders') is not None: cmd.extend(["--num_renders", str(render_cfg.num_renders)]) if render_cfg.get('start_frame', 0) != 0: cmd.extend(["--start_frame", str(render_cfg.start_frame)]) if render_cfg.get('is_dropping', False): cmd.append("--is_dropping") if render_cfg.get('save_blend', False): cmd.append("--save_blend") if render_cfg.get('bg_color') is not None: cmd.extend(["--bg_color"] + [str(c) for c in render_cfg.bg_color]) # Add init_xyz and xyz_rotation init_xyz = render_cfg.get('init_xyz', [0.0, 0.0, 0.0]) cmd.extend(["--init_xyz"] + [str(x) for x in init_xyz]) xyz_rotation = render_cfg.get('xyz_rotation', [0.0, 0.0, 0.0]) cmd.extend(["--xyz_rotation"] + [str(r) for r in xyz_rotation]) if cfg.overwrite: cmd.append("--overwrite") # Compile frames to video frames_dir = Path(gs_output_dir) # Run the rendering command run_cmd(cmd, step_name="RENDER_BLENDER_GS") save_contextual_config(cfg, blender_output_dir, context="blender_gs_render") assert frames_dir.exists(), f"Frames directory {frames_dir} does not exist" assert any(frames_dir.glob('*.png')), f"No frames found in {frames_dir}" logging.info(f"Compiling frames to video: {video_output}") # Get FPS from physics video or use default physics_video_path = os.path.join(paths["physgaussian_output"], f"sample_{cfg.physics.sample_id}", "frames", "output.mp4") fps = render_cfg.default_fps if os.path.exists(physics_video_path): fps = get_video_fps(physics_video_path) logging.info(f"FPS: {fps}") compile_video(frames_dir, video_output, fps) logging.info(f"Gaussian Splatting rendering completed. Output directory: {gs_output_dir}") return gs_output_dir def render_blender_glb(cfg: DictConfig, paths: dict) -> str: blender_output_dir = paths['blender_output'] render_cfg = cfg.output_rendering.blender_render_glb ## get the point_cloud_path which contains the material physics predictions if cfg.material_mode == 'vlm': point_cloud_path = get_material_vlm_segmentation_path( cfg, paths['render_output'], paths) elif cfg.material_mode == 'neural': point_cloud_path = get_material_neural_segmentation_path( cfg, paths['render_output'], paths) else: raise ValueError(f"Invalid material mode: {cfg.material_mode}") for feature, cmap in zip(render_cfg.features, render_cfg.cmaps): cmd = ( f"blender -b -P pixie/blender/apply_feature_colors.py -- " f"--obj_ids {cfg.obj_id} " f"--feature {feature} " f"--pred_ply {point_cloud_path} " f"--output_dir {blender_output_dir} " f"--colormap {cmap} " f"--data_dir {paths['data_dir']} " f"--blend_file_path {paths['blend_file_path']} " f"--overwrite " ) if render_cfg.rotate_video: cmd += f"--rotate_video " if render_cfg.views: cmd += f"--views {render_cfg.views} " if render_cfg.focal_length: cmd += f"--focal_length {render_cfg.focal_length} " if render_cfg.camera_id: cmd += f"--camera_id {render_cfg.camera_id} " frames_dir = Path(blender_output_dir) / feature video_output = frames_dir / f"{feature}.mp4" if os.path.exists(video_output): continue run_cmd(cmd, step_name="RENDER_BLENDER") save_contextual_config(cfg, blender_output_dir, context="blender_output_render") # # Compile frames to video if rotate_video is enabled if render_cfg.rotate_video: # Frames are saved in blender_output_dir/feature subdirectories assert frames_dir.exists(), f"Frames directory {frames_dir} does not exist" assert any(frames_dir.glob('*.png')), f"No frames found in {frames_dir}" logging.info(f"Compiling frames to video: {video_output}") video_path = os.path.join(paths["physgaussian_output"], f"sample_{cfg.physics.sample_id}", "frames", "output.mp4") fps = cfg.output_rendering.blender_render_glb.default_fps if os.path.exists(video_path): fps = get_video_fps(video_path) logging.info(f"FPS: {fps}") compile_video(frames_dir, video_output, fps) return blender_output_dir def render_gs_model(cfg: DictConfig, paths: dict) -> str: render_gs_cmd = [ "python", "third_party/PhysGaussian/gaussian-splatting/render.py", "--model_path", paths['gs_output'], ] output_dir = os.path.join(paths['gs_output'], "test") if not os.path.exists(output_dir): run_cmd(render_gs_cmd, step_name="RENDER_GS") return output_dir @hydra.main(version_base=None, config_path="config", config_name="config") def main(cfg: DictConfig) -> None: """Main function to render images from the trained NeRF model.""" # Set up logging first set_logger() # Validate configuration validate_config(cfg) # Resolve paths and system-specific settings cfg = resolve_paths(cfg) # Get all output paths paths = get_output_paths(cfg, cfg.obj_id) # Create necessary directories create_directories(paths) start_time = time.time() if 'nerf' in cfg.output_rendering.render: # Render RGB images from test set output_dir = render_nerf_model(cfg, paths) logging.info(f"[NERF] Output directory: {output_dir}") if 'gs' in cfg.output_rendering.render: output_dir = render_gs_model(cfg, paths) logging.info(f"[GS] Output directory: {output_dir}") if 'blender_glb' in cfg.output_rendering.render: output_dir = render_blender_glb(cfg, paths) logging.info(f"[BLENDER_GLB] Output directory: {output_dir}") if 'blender_gs' in cfg.output_rendering.render: output_dir = render_blender_gs(cfg, paths) logging.info(f"[BLENDER_GS] Output directory: {output_dir}") end_time = time.time() logging.info(f"Rendering completed in {end_time - start_time:.2f} seconds") if __name__ == "__main__": main() ================================================ FILE: scripts/download_data.py ================================================ #!/usr/bin/env python3 """ Download PixieVerse data from Hugging Face. """ import argparse import fnmatch from pathlib import Path from huggingface_hub import list_repo_files, snapshot_download def download_data( dataset_repo: str = "vlongle/pixieverse", download_dirs: list[str] | None = None, force_download: bool = False, local_dir: str | None = None, obj_class: str | None = None, ) -> None: project_root = Path(__file__).resolve().parent.parent download_path = Path(local_dir) if local_dir else project_root download_path.mkdir(parents=True, exist_ok=True) repo_files = list_repo_files(repo_id=dataset_repo, repo_type="dataset") data_files = [f for f in repo_files if f != "README.md" and not f.startswith(".")] available_dirs = sorted({f.split("/")[0] for f in data_files if "/" in f}) print(f"Available directories: {available_dirs}") if download_dirs: dirs_to_download = [d for d in download_dirs if d in available_dirs] missing = sorted(set(download_dirs) - set(dirs_to_download)) if missing: print(f"Requested directories not found: {missing}") else: dirs_to_download = available_dirs if obj_class and not download_dirs: dirs_to_download = [d for d in ["archives"] if d in available_dirs] print("Using class-filter mode: defaulting to --dirs archives") if not dirs_to_download: print("No directories selected for download.") return allow_patterns = [] if obj_class: assert "archives" in dirs_to_download, ( "--obj-class filtering currently supports archive layout only. " "Please include --dirs archives (or omit --dirs)." ) allow_patterns.extend( [ f"archives/*/{obj_class}.tar", f"archives/*/{obj_class}.tar.gz", ] ) available_class_files = [ f for f in data_files if any(fnmatch.fnmatch(f, pat) for pat in allow_patterns) ] if not available_class_files: print(f"No archive files found for obj_class='{obj_class}'.") return print(f"Downloading class '{obj_class}' from archives only.") else: for dir_name in dirs_to_download: allow_patterns.extend([f"{dir_name}/*", f"{dir_name}/**/*"]) snapshot_download( repo_id=dataset_repo, repo_type="dataset", local_dir=download_path, local_dir_use_symlinks=False, allow_patterns=allow_patterns, ignore_patterns=["README.md", ".gitattributes"], force_download=force_download, ) if obj_class: print(f"Downloaded archives for class '{obj_class}' to {download_path}") else: print(f"Downloaded {dirs_to_download} to {download_path}") def main() -> None: parser = argparse.ArgumentParser(description="Download PixieVerse data from Hugging Face.") parser.add_argument("--dataset-repo", default="vlongle/pixieverse", help="Hugging Face dataset repo id.") parser.add_argument("--dirs", nargs="*", help="Specific directories to download (default: all).") parser.add_argument("--local-dir", help="Local destination directory (default: project root).") parser.add_argument("--force", action="store_true", help="Force re-download even if files exist.") parser.add_argument( "--obj-class", default=None, help="Download only one class archive (e.g., tree). Works with --dirs archives.", ) args = parser.parse_args() download_data( dataset_repo=args.dataset_repo, download_dirs=args.dirs, force_download=args.force, local_dir=args.local_dir, obj_class=args.obj_class, ) if __name__ == "__main__": main() ================================================ FILE: scripts/download_models.py ================================================ #!/usr/bin/env python3 """ Download model-related directories from a Hugging Face dataset repo. """ import argparse from pathlib import Path from huggingface_hub import list_repo_files, snapshot_download def download_models( dataset_repo: str = "vlongle/pixie", download_dirs: list[str] | None = None, force_download: bool = False, local_dir: str | None = None, ) -> None: project_root = Path(__file__).resolve().parent.parent download_path = Path(local_dir) if local_dir else project_root download_path.mkdir(parents=True, exist_ok=True) repo_files = list_repo_files(repo_id=dataset_repo, repo_type="dataset") data_files = [f for f in repo_files if f != "README.md" and not f.startswith(".")] available_dirs = sorted({f.split("/")[0] for f in data_files if "/" in f}) if download_dirs: dirs_to_download = [d for d in download_dirs if d in available_dirs] missing = sorted(set(download_dirs) - set(dirs_to_download)) if missing: print(f"Requested directories not found: {missing}") else: dirs_to_download = available_dirs if not dirs_to_download: print("No directories selected for download.") return allow_patterns = [] for dir_name in dirs_to_download: allow_patterns.extend([f"{dir_name}/*", f"{dir_name}/**/*"]) snapshot_download( repo_id=dataset_repo, repo_type="dataset", local_dir=download_path, local_dir_use_symlinks=False, allow_patterns=allow_patterns, ignore_patterns=["README.md", ".gitattributes"], force_download=force_download, ) print(f"Download complete to: {download_path}") print(f"Downloaded directories: {dirs_to_download}") def main() -> None: parser = argparse.ArgumentParser(description="Download Pixie model artifacts from Hugging Face.") parser.add_argument("--dataset-repo", default="vlongle/pixie", help="Hugging Face dataset repo id.") parser.add_argument("--dirs", nargs="*", help="Specific directories to download (default: all).") parser.add_argument("--local-dir", help="Local directory to download into (default: project root).") parser.add_argument("--force", action="store_true", help="Force re-download even if files exist.") args = parser.parse_args() download_models( dataset_repo=args.dataset_repo, download_dirs=args.dirs, force_download=args.force, local_dir=args.local_dir, ) if __name__ == "__main__": main() ================================================ FILE: scripts/upload_data.py ================================================ #!/usr/bin/env python3 """ Upload PixieVerse data (survivor objects only) to Hugging Face datasets. Supports two modes: - raw: upload selected object folders directly (many API operations, slower) - archive: pack per-(dir,class) tar archives, then upload archives (faster, better visibility) """ import argparse import json import errno import os import sys import time import threading import tarfile from pathlib import Path from huggingface_hub import HfApi, login from huggingface_hub.errors import HfHubHTTPError, RepositoryNotFoundError DEFAULT_CLASSES = [ "tree", "flowers", "rubber_ducks_and_toys", "sport_balls", "sand", "snow_and_mud", "grass", "shrubs", "metal_crates", "soda_cans", ] DEFAULT_DATA_DIRS = [ "vlm_seg_results", "vlm_seg_critic_results", "vlm_seg_mat_sample_results", "data", "outputs", "render_outputs", ] ARCHIVE_EXTENSIONS = { "none": ".tar", "gz": ".tar.gz", } def has_feature_artifact(obj_dir: Path) -> bool: return ( (obj_dir / "clip_features_features.npy").exists() or (obj_dir / "clip_features.npz").exists() ) class Spinner: def __init__(self, message: str, interval_s: float = 0.2): self.message = message self.interval_s = interval_s self._running = False self._thread = None def _spin(self) -> None: frames = "|/-\\" i = 0 while self._running: sys.stdout.write(f"\r{self.message} {frames[i % len(frames)]}") sys.stdout.flush() i += 1 time.sleep(self.interval_s) sys.stdout.write("\r" + " " * (len(self.message) + 4) + "\r") sys.stdout.flush() def __enter__(self): self._running = True self._thread = threading.Thread(target=self._spin, daemon=True) self._thread.start() return self def __exit__(self, exc_type, exc, tb): self._running = False if self._thread is not None: self._thread.join() def summarize_obj_dirs(source_dir: Path, object_ids: list[str]) -> tuple[int, int, int]: """Return (object_dir_count, file_count, total_bytes) for selected object ids.""" obj_count = 0 file_count = 0 total_bytes = 0 for obj_id in object_ids: obj_dir = source_dir / obj_id if not obj_dir.is_dir(): continue obj_count += 1 for root, _, files in os.walk(obj_dir): file_count += len(files) for fname in files: fp = Path(root) / fname if fp.exists(): total_bytes += fp.stat().st_size return obj_count, file_count, total_bytes def iter_obj_files(source_dir: Path, object_ids: list[str]): """Yield tuples (absolute_file_path, archive_relative_path).""" for obj_id in object_ids: obj_dir = source_dir / obj_id if not obj_dir.is_dir(): continue for root, _, files in os.walk(obj_dir): root_path = Path(root) rel_root = root_path.relative_to(obj_dir) for fname in files: abs_fp = root_path / fname rel_fp = Path(obj_id) / rel_root / fname yield abs_fp, rel_fp def parse_classes(classes_arg: str | None) -> list[str]: if not classes_arg: return DEFAULT_CLASSES classes = [c.strip() for c in classes_arg.split(",") if c.strip()] assert classes, "classes must not be empty" return classes def collect_survivor_ids( classes: list[str], results_root: Path, render_outputs_dir: Path, sample_id: int, grid_size: int, ) -> tuple[set[str], dict[str, dict[str, int]], dict[str, set[str]]]: survivor_ids: set[str] = set() stats: dict[str, dict[str, int]] = {} survivor_ids_by_class: dict[str, set[str]] = {obj_class: set() for obj_class in classes} for obj_class in classes: validated_path = results_root / obj_class / "all_results_validated.json" corrected_path = results_root / obj_class / "all_results_corrected.json" if validated_path.exists(): json_path = validated_path assume_zero_filtered = False elif corrected_path.exists(): json_path = corrected_path assume_zero_filtered = True print( f"Warning: can't find {validated_path}. " f"Assuming 0 objects were manually filtered for class '{obj_class}'." ) else: print( f"Warning: can't find both validated and corrected files for class '{obj_class}'. " "Skipping this class." ) stats[obj_class] = { "appropriate": 0, "with_sim_output": 0, "survived": 0, } continue with open(json_path, "r") as f: results = json.load(f) appropriate = 0 with_sim_output = 0 survived = 0 for tag, meta in results.items(): if meta.get("is_appropriate") is not True: continue appropriate += 1 obj_id = tag.split("/")[-1] obj_dir = render_outputs_dir / obj_id has_feat = has_feature_artifact(obj_dir) mat_fp = render_outputs_dir / obj_id / f"sample_{sample_id}" / "material_grid.npy" sim_dir = render_outputs_dir / obj_id / f"sample_{sample_id}" / f"gs_sim_gridsize_{grid_size}_output" mp4_fp = sim_dir / "output.mp4" has_sim = has_feat and mat_fp.exists() and sim_dir.is_dir() and mp4_fp.exists() if has_sim: with_sim_output += 1 is_simulation_valid = meta.get("is_simulation_valid", True) if assume_zero_filtered else (meta.get("is_simulation_valid") is True) if has_sim and is_simulation_valid: survived += 1 survivor_ids.add(obj_id) survivor_ids_by_class[obj_class].add(obj_id) stats[obj_class] = { "appropriate": appropriate, "with_sim_output": with_sim_output, "survived": survived, } return survivor_ids, stats, survivor_ids_by_class def upload_selected_ids( api: HfApi, repo_id: str, dataset_root: Path, include_dirs: list[str], object_ids: set[str], ) -> None: ignore_patterns = [".gitattributes", "*.pyc", "__pycache__", ".DS_Store"] sorted_ids = sorted(object_ids) total_dirs = len(include_dirs) for idx, dir_name in enumerate(include_dirs, start=1): source_dir = dataset_root / dir_name if not source_dir.is_dir(): print(f"[{idx}/{total_dirs}] Skipping missing source directory: {source_dir}") continue allow_patterns = [f"{obj_id}/**" for obj_id in sorted_ids if (source_dir / obj_id).exists()] if not allow_patterns: print(f"[{idx}/{total_dirs}] Skipping {dir_name}/ (no matching object folders).") continue object_dirs_found, total_files, total_bytes = summarize_obj_dirs(source_dir, sorted_ids) size_gb = total_bytes / (1024 ** 3) print( f"[{idx}/{total_dirs}] {dir_name}/ -> {object_dirs_found} object folders, " f"{total_files} files, {size_gb:.2f} GB" ) start = time.time() with Spinner(f"[{idx}/{total_dirs}] Uploading {dir_name}/"): api.upload_folder( folder_path=str(source_dir), path_in_repo=dir_name, repo_id=repo_id, repo_type="dataset", allow_patterns=allow_patterns, ignore_patterns=ignore_patterns, ) elapsed = time.time() - start print(f"[{idx}/{total_dirs}] Done {dir_name}/ in {elapsed:.1f}s") def create_archive_for_class( source_dir: Path, object_ids: list[str], archive_path: Path, compression: str, ) -> tuple[int, int]: """ Build an archive for selected object ids under one top-level directory. Returns (files_written, bytes_written). """ assert compression in ARCHIVE_EXTENSIONS, f"Unsupported compression: {compression}" mode = "w" if compression == "none" else "w:gz" if archive_path.exists(): existing_size_gb = archive_path.stat().st_size / (1024 ** 3) print(f" Reusing existing archive {archive_path.name} ({existing_size_gb:.2f} GB)") return 0, 0 _, total_files, total_bytes = summarize_obj_dirs(source_dir, object_ids) print( f" Packing {source_dir.name}: {len(object_ids)} obj ids, " f"{total_files} files, {total_bytes / (1024 ** 3):.2f} GB" ) if total_files == 0: return 0, 0 archive_path.parent.mkdir(parents=True, exist_ok=True) files_written = 0 bytes_written = 0 start = time.time() last_log = start try: with tarfile.open(archive_path, mode=mode) as tar: for abs_fp, rel_fp in iter_obj_files(source_dir, object_ids): if not abs_fp.exists(): continue tar.add(abs_fp, arcname=str(rel_fp), recursive=False) files_written += 1 bytes_written += abs_fp.stat().st_size now = time.time() if files_written % 2000 == 0 or now - last_log > 10: pct = 100.0 * files_written / total_files print( f" [{source_dir.name}] packed {files_written}/{total_files} files " f"({pct:.1f}%), {bytes_written / (1024 ** 3):.2f} GB" ) last_log = now except OSError as e: if archive_path.exists(): archive_path.unlink() print(f" Removed partial archive after failure: {archive_path}") if e.errno == errno.ENOSPC: raise RuntimeError( f"No space left while packing {archive_path}. " "Use a larger --archive-tmp-dir (e.g., your mounted dataset path)." ) from e raise elapsed = time.time() - start archive_size_gb = archive_path.stat().st_size / (1024 ** 3) print( f" Packed archive {archive_path.name} in {elapsed:.1f}s " f"(archive size: {archive_size_gb:.2f} GB)" ) return files_written, bytes_written def upload_archives_by_class( api: HfApi, repo_id: str, dataset_root: Path, include_dirs: list[str], classes: list[str], survivor_ids_by_class: dict[str, set[str]], archive_tmp_dir: Path, compression: str, keep_archives: bool, force_repack: bool, ) -> None: ext = ARCHIVE_EXTENSIONS[compression] jobs = [] for dir_name in include_dirs: source_dir = dataset_root / dir_name if not source_dir.is_dir(): continue for obj_class in classes: obj_ids = sorted(survivor_ids_by_class.get(obj_class, set())) if obj_ids: jobs.append((dir_name, source_dir, obj_class, obj_ids)) total_jobs = len(jobs) if total_jobs == 0: print("No archive upload jobs to run.") return print(f"Archive mode: {total_jobs} upload jobs") archive_relpaths: list[str] = [] archive_abspaths: list[Path] = [] for idx, (dir_name, source_dir, obj_class, obj_ids) in enumerate(jobs, start=1): print(f"[{idx}/{total_jobs}] {dir_name}/{obj_class}: start") archive_name = f"{obj_class}{ext}" archive_path = archive_tmp_dir / dir_name / archive_name if force_repack and archive_path.exists(): archive_path.unlink() print(f" Removed existing archive due to --force-repack: {archive_path}") create_archive_for_class( source_dir=source_dir, object_ids=obj_ids, archive_path=archive_path, compression=compression, ) if not archive_path.exists(): print(f"[{idx}/{total_jobs}] {dir_name}/{obj_class}: nothing to upload") continue rel = str(archive_path.relative_to(archive_tmp_dir)) archive_relpaths.append(rel) archive_abspaths.append(archive_path) print(f"[{idx}/{total_jobs}] Queued for upload: archives/{rel}") if not archive_relpaths: print("No archives to upload after packing/reuse.") return print( "Packing/reuse phase done. " f"Uploading {len(archive_relpaths)} queued archives with per-archive commits " "(compatible with current huggingface_hub version)." ) total_upload = len(archive_abspaths) for i, archive_path in enumerate(archive_abspaths, start=1): rel = str(archive_path.relative_to(archive_tmp_dir)) remote_path = f"archives/{rel}" size_gb = archive_path.stat().st_size / (1024 ** 3) print(f"[upload {i}/{total_upload}] {remote_path} ({size_gb:.2f} GB)") start = time.time() with Spinner(f"[upload {i}/{total_upload}] Uploading {remote_path}"): api.upload_file( path_or_fileobj=str(archive_path), path_in_repo=remote_path, repo_id=repo_id, repo_type="dataset", ) elapsed = time.time() - start print(f"[upload {i}/{total_upload}] Done {remote_path} in {elapsed:.1f}s") print("Archive upload complete.") if not keep_archives: for archive_path in archive_abspaths: if archive_path.exists(): archive_path.unlink() print(f"Removed {len(archive_abspaths)} local archives from {archive_tmp_dir}") def upload_data( dataset_repo: str, dataset_root: Path, results_root: Path, classes: list[str], include_dirs: list[str], sample_id: int, grid_size: int, token: str | None, mode: str, archive_tmp_dir: Path, archive_compression: str, keep_archives: bool, force_repack: bool, auto_create_repo: bool, private_repo: bool, ) -> None: assert mode in {"raw", "archive"}, f"Unsupported mode: {mode}" assert archive_compression in ARCHIVE_EXTENSIONS, f"Unsupported archive compression: {archive_compression}" if token: login(token=token, add_to_git_credential=False) else: login(add_to_git_credential=False) # Faster transfer path when available. os.environ.setdefault("HF_HUB_ENABLE_HF_TRANSFER", "1") print(f"HF_HUB_ENABLE_HF_TRANSFER={os.environ.get('HF_HUB_ENABLE_HF_TRANSFER')}") api = HfApi(token=token) try: user_info = api.whoami() username = user_info.get("name", "unknown") print(f"Authenticated as: {username}") except HfHubHTTPError as e: raise RuntimeError( "Failed to authenticate with Hugging Face Hub. " "Please verify your token has write permission." ) from e try: api.repo_info(repo_id=dataset_repo, repo_type="dataset") print(f"Dataset repo found: {dataset_repo}") except RepositoryNotFoundError: if not auto_create_repo: raise RuntimeError( f"Dataset repo not found: {dataset_repo}. " "Create it on Hugging Face first, or run without --no-auto-create-repo." ) print(f"Dataset repo not found. Creating: {dataset_repo}") api.create_repo(repo_id=dataset_repo, repo_type="dataset", private=private_repo, exist_ok=True) print(f"Dataset repo ready: {dataset_repo}") except HfHubHTTPError as e: raise RuntimeError( f"Unable to access dataset repo '{dataset_repo}'. " "This is usually a permission/token-scope issue." ) from e render_outputs_dir = dataset_root / "render_outputs" assert render_outputs_dir.is_dir(), f"Missing render_outputs directory: {render_outputs_dir}" survivor_ids, stats, survivor_ids_by_class = collect_survivor_ids( classes=classes, results_root=results_root, render_outputs_dir=render_outputs_dir, sample_id=sample_id, grid_size=grid_size, ) total_appropriate = sum(v["appropriate"] for v in stats.values()) total_sim = sum(v["with_sim_output"] for v in stats.values()) total_survived = sum(v["survived"] for v in stats.values()) print(f"Classes: {classes}") print(f"Appropriate: {total_appropriate}") print(f"With sim output: {total_sim}") print(f"Survived: {total_survived}") print(f"Unique survivor object ids: {len(survivor_ids)}") for obj_class in classes: class_stats = stats.get(obj_class, {"appropriate": 0, "with_sim_output": 0, "survived": 0}) print( f" - {obj_class}: app={class_stats['appropriate']}, " f"sim={class_stats['with_sim_output']}, survived={class_stats['survived']}" ) if mode == "raw": upload_selected_ids( api=api, repo_id=dataset_repo, dataset_root=dataset_root, include_dirs=include_dirs, object_ids=survivor_ids, ) else: upload_archives_by_class( api=api, repo_id=dataset_repo, dataset_root=dataset_root, include_dirs=include_dirs, classes=classes, survivor_ids_by_class=survivor_ids_by_class, archive_tmp_dir=archive_tmp_dir, compression=archive_compression, keep_archives=keep_archives, force_repack=force_repack, ) # Make dataset card consistent with local data README. project_root = Path(__file__).resolve().parent.parent readme_path = project_root / "data_readme.md" assert readme_path.exists(), f"Missing {readme_path}" api.upload_file( path_or_fileobj=str(readme_path), path_in_repo="README.md", repo_id=dataset_repo, repo_type="dataset", ) print(f"Uploaded README.md from {readme_path}") print(f"https://huggingface.co/datasets/{dataset_repo}") def main() -> None: parser = argparse.ArgumentParser(description="Upload PixieVerse survivor data to Hugging Face.") parser.add_argument("--dataset-repo", default="vlongle/pixieverse", help="Hugging Face dataset repo id.") parser.add_argument( "--dataset-root", default="/mnt/kostas-graid/datasets/vlongle/diffphys3d", help="Local dataset root directory.", ) parser.add_argument( "--results-root", default="/home/vlongle/code/diffPhys3d/vlm_data_filtering_results", help="Root containing /all_results_validated.json.", ) parser.add_argument( "--classes", default=None, help="Comma-separated class list. Defaults to PixieVerse 10 classes (excluding jello_block).", ) parser.add_argument( "--dirs", nargs="*", default=DEFAULT_DATA_DIRS, help=f"Top-level dataset folders to upload (default: {DEFAULT_DATA_DIRS})", ) parser.add_argument("--sample-id", type=int, default=0, help="Simulation sample id.") parser.add_argument("--grid-size", type=int, default=64, help="Simulation grid size D.") parser.add_argument("--token", default=None, help="Hugging Face token.") parser.add_argument( "--mode", choices=["raw", "archive"], default="archive", help="Upload mode. archive is faster and more transparent for large datasets.", ) parser.add_argument( "--archive-tmp-dir", default="/mnt/kostas-graid/datasets/vlongle/pixieverse/_archive_staging", help="Staging directory for archive mode (should have enough free space).", ) parser.add_argument( "--archive-compression", choices=["none", "gz"], default="none", help="Compression in archive mode. none is fastest CPU path.", ) parser.add_argument( "--keep-archives", action="store_true", help="Keep local archives after upload.", ) parser.add_argument( "--force-repack", action="store_true", help="Force rebuilding archives even if they already exist locally.", ) parser.add_argument( "--no-auto-create-repo", action="store_true", help="Disable automatic dataset repo creation when missing.", ) parser.add_argument( "--private-repo", action="store_true", help="Create dataset repo as private if auto-created.", ) args = parser.parse_args() classes = parse_classes(args.classes) upload_data( dataset_repo=args.dataset_repo, dataset_root=Path(args.dataset_root), results_root=Path(args.results_root), classes=classes, include_dirs=args.dirs, sample_id=args.sample_id, grid_size=args.grid_size, token=args.token, mode=args.mode, archive_tmp_dir=Path(args.archive_tmp_dir), archive_compression=args.archive_compression, keep_archives=args.keep_archives, force_repack=args.force_repack, auto_create_repo=not args.no_auto_create_repo, private_repo=args.private_repo, ) if __name__ == "__main__": main() ================================================ FILE: scripts/upload_models.py ================================================ #!/usr/bin/env python3 """ Upload model-related directories to a Hugging Face dataset repo. """ import argparse import fnmatch from pathlib import Path from huggingface_hub import HfApi, login DEFAULT_UPLOAD_DIRS = [ "checkpoints_continuous_mse", "checkpoints_discrete", "real_scene_data", "real_scene_models", ] IGNORE_PATTERNS = [ "*.pyc", "__pycache__", ".DS_Store", "*.tmp", "*.log", "wandb", ".git", ".gitignore", ] def should_ignore_file(file_path: Path) -> bool: file_name = file_path.name return any(fnmatch.fnmatch(file_name, pattern) for pattern in IGNORE_PATTERNS) def build_upload_ignore_patterns() -> list[str]: ignore_patterns: list[str] = [] for pattern in IGNORE_PATTERNS: if pattern == "__pycache__": ignore_patterns.extend(["**/__pycache__/**", "__pycache__"]) elif pattern == ".git": ignore_patterns.extend(["**/.git/**", ".git"]) elif pattern == "wandb": ignore_patterns.extend(["**/wandb/**", "wandb"]) else: ignore_patterns.append(pattern) return ignore_patterns def upload_directory(api: HfApi, local_dir: Path, repo_id: str, repo_dir_name: str | None = None) -> tuple[int, int]: if repo_dir_name is None: repo_dir_name = local_dir.name total_files = 0 total_size = 0 for file_path in local_dir.rglob("*"): if file_path.is_file() and not should_ignore_file(file_path): total_files += 1 total_size += file_path.stat().st_size if total_files == 0: print(f"Skipping {local_dir}: no files to upload.") return 0, 0 print(f"Uploading {local_dir} -> {repo_dir_name}/ ({total_files} files)") api.upload_folder( folder_path=str(local_dir), path_in_repo=repo_dir_name, repo_id=repo_id, repo_type="dataset", ignore_patterns=build_upload_ignore_patterns(), ) return total_files, total_size def upload_models(dataset_repo: str, upload_dirs: list[str], token: str | None) -> None: if token: login(token=token) else: login() api = HfApi() project_root = Path(__file__).resolve().parent.parent total_uploaded_files = 0 total_uploaded_size = 0 for dir_name in upload_dirs: local_dir = project_root / dir_name if not local_dir.exists(): print(f"Skipping missing directory: {local_dir}") continue if not local_dir.is_dir(): print(f"Skipping non-directory path: {local_dir}") continue files, size = upload_directory(api, local_dir, dataset_repo) total_uploaded_files += files total_uploaded_size += size print(f"Upload complete: {total_uploaded_files} files, {total_uploaded_size / (1024 * 1024):.1f} MB") print(f"https://huggingface.co/datasets/{dataset_repo}") def main() -> None: parser = argparse.ArgumentParser(description="Upload Pixie model artifacts to Hugging Face.") parser.add_argument("--dataset-repo", default="vlongle/pixie", help="Hugging Face dataset repo id.") parser.add_argument("--dirs", nargs="*", help=f"Directories to upload (default: {DEFAULT_UPLOAD_DIRS}).") parser.add_argument("--token", help="Hugging Face token. If unset, interactive login is used.") args = parser.parse_args() upload_dirs = args.dirs if args.dirs else DEFAULT_UPLOAD_DIRS upload_models(dataset_repo=args.dataset_repo, upload_dirs=upload_dirs, token=args.token) if __name__ == "__main__": main() ================================================ FILE: setup.py ================================================ from setuptools import setup from setuptools import setup, find_packages INSTALL_REQUIRES = [ "objaverse", "sentence-transformers", # "torch", # "torchvision", "PyMCubes==0.1.4", "hydra-core", "omegaconf", "trimesh", "plyfile", "matplotlib", "numpy==1.24.4", "params-proto", "python-slugify", "warp_lang==0.10.1", "taichi==1.5.0", "dotenv", 'timm==1.0.13', # for qwen 'qwen-vl-utils[decord]', 'accelerate', # https://github.com/QwenLM/Qwen2.5-VL/issues/723 'transformers @ git+https://github.com/huggingface/transformers', 'streamlit', 'huggingface_hub', 'colorlog', 'seaborn', 'umap-learn', ] setup( name='pixie', version='0.0.0', description='pixie', author='Long Le', install_requires=INSTALL_REQUIRES, python_requires='>=3.10', packages=find_packages( include=['pixie', 'pixie.*']), ) ================================================ FILE: third_party/PhysGaussian/.gitignore ================================================ data .vscode output *.ply *.pyc *.png *.jpg model log ================================================ FILE: third_party/PhysGaussian/.gitmodules ================================================ [submodule "gaussian-splatting"] path = gaussian-splatting url = https://github.com/graphdeco-inria/gaussian-splatting ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_flowers_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0.0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 75, "nu": 0.4, "E": 2e6, "material": "jelly", "density": 200, "fix_ground": true, "g": [ 0, 0, 0 ], "rpic_damping": 0.0, "boundary_conditions": [ { "type": "particle_impulse", "force": [ 3.8e-1, 0.0, 0.0 ], "num_dt": 1, "start_time": 0.05 } ], "additional_material_params": [], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 1 ], "default_camera_index": 4, "show_hint": false, "init_azimuthm": -36.7, "init_elevation": 8.96, "init_radius": 0.8, "move_camera": false, "delta_a": 0.4, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_fruit_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 45.0, 6.5 ], "rotation_axis": [ 1, 2 ], "substep_dt": 1e-4, "frame_dt": 1e-2, "frame_num": 400, "E": 1e5, "nu": 0.2, "density": 1000, "material": "snow", "grid_v_damping_scale": 0.999, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "yield_stress": 1e3, "softening": 0.5, "hardening": 0, "plastic_viscosity": 0.0, "particle_filling": { "n_grid": 50, "density_threshold": 40.0, "search_threshold": 0.5, "search_exclude_direction": 0, "ray_cast_direction": 1, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.86, 1.46, 0.7, 1.3, 0.7, 1.3 ] }, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 1, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": true, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_grass_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0.0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 25, "nu": 0.4, "E": 2e6, "material": "jelly", "density": 200, "fix_ground": true, "g": [ 0, 0, 0 ], "grid_v_damping_scale": 0.9999, "rpic_damping": 0.0, "boundary_conditions": [ { "type": "particle_impulse", "force": [ -3.8e-1, 0.0, 0.0 ], "num_dt": 1, "start_time": 0 } ], "additional_material_params": [ { "point": [ 1.0, 1.0, 1.5 ], "size": [ 1.0, 1.0, 0.5 ], "nu": 0.4, "E": 2e6, "density": 70, "material": 0 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 1 ], "default_camera_index": 1, "show_hint": false, "init_azimuthm": -36.7, "init_elevation": 8.96, "init_radius": 0.8, "move_camera": false, "delta_a": 0.4, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_jello_block_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "fix_ground": false, "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 50, "nu": 0.3, "E": 1000, "material": "jelly", "density": 50, "g": [ 0, 0, -9.8 ], "grid_v_damping_scale": 0.999, "rpic_damping": 0.05, "boundary_conditions": [ { "type": "surface_collider", "point": [ 1, 1, 0.02 ], "normal": [ 0.0, 0.0, 1.0 ], "surface": "separate", "friction": 0.1, "start_time": 0, "end_time": 1e3 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 1 ], "default_camera_index": 0, "show_hint": false, "init_azimuthm": -120, "init_elevation": 0, "init_radius": 4.11, "move_camera": false, "delta_a": 0.4, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_jelly_block_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "fix_ground": false, "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 50, "nu": 0.3, "E": 1000, "material": "jelly", "density": 50, "g": [ 0, 0, -9.8 ], "grid_v_damping_scale": 0.999, "rpic_damping": 0.05, "boundary_conditions": [ { "type": "surface_collider", "point": [ 1, 1, 0.02 ], "normal": [ 0.0, 0.0, 1.0 ], "surface": "separate", "friction": 0.1, "start_time": 0, "end_time": 1e3 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 1 ], "default_camera_index": 0, "show_hint": false, "init_azimuthm": -120, "init_elevation": 0, "init_radius": 4.11, "move_camera": false, "delta_a": 0.4, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_metal_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-5, "frame_dt": 1e-2, "frame_num": 200, "E": 1e8, "yield_stress": 1e7, "nu": 0.3, "material": "metal", "hardening": 1, "xi": 0.1, "grid_v_damping_scale": 0.9999, "density": 2700, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "particle_filling": { "n_grid": 50, "density_threshold": 40.0, "search_threshold": 0.5, "search_exclude_direction": 0, "ray_cast_direction": 1, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.86, 1.46, 0.7, 1.3, 0.7, 1.3 ] }, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 9, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_metal_crates_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "fix_ground": false, "substep_dt": 1e-5, "frame_dt": 1e-2, "frame_num": 200, "E": 1e8, "yield_stress": 1e7, "nu": 0.3, "material": "metal", "hardening": 1, "xi": 0.1, "grid_v_damping_scale": 0.9999, "density": 2700, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "particle_filling": { "n_grid": 50, "density_threshold": 40.0, "search_threshold": 0.5, "search_exclude_direction": 0, "ray_cast_direction": 1, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.86, 1.46, 0.7, 1.3, 0.7, 1.3 ] }, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 0, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_mud_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-5, "frame_dt": 1e-2, "frame_num": 200, "E": 1e5, "yield_stress": 5e2, "nu": 0.2, "material": "snow", "softening": 0.5, "grid_v_damping_scale": 0.9999, "density": 2700, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 9, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_rocks_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-5, "frame_dt": 1e-2, "frame_num": 200, "E": 1e9, "yield_stress": 8e6, "nu": 0.22, "material": "rock_brittle", "softening": 0.05, "grid_v_damping_scale": 0.9999, "density": 2700, "g": [ 0.0, 0.0, -9.8 ], "particle_filling": { "n_grid": 100, "density_threshold": 100.0, "search_threshold": 1.0, "search_exclude_direction": 2, "ray_cast_direction": 4, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.4, 1.6, 0.4, 1.6, 0.4, 1.6 ], "smooth": true, "visualize": true }, "n_grid": 120, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 9, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_rubber_ducks_and_toys_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "fix_ground": false, "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 50, "nu": 0.4, "E": 40000, "material": "jelly", "density": 100, "g": [ 0, 0, -9.8 ], "grid_v_damping_scale": 0.9999, "rpic_damping": 0.0, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 0.5 ], "default_camera_index": 0, "show_hint": false, "init_azimuthm": 50, "init_elevation": 0, "init_radius": 2.5, "move_camera": false, "delta_a": 0.0, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_sand_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0.0 ], "rotation_axis": [ 0 ], "substep_dt": 2e-5, "frame_dt": 4e-2, "frame_num": 50, "E": 5e7, "nu": 0.3, "material": "sand", "density": 2000, "g": [ 0.0, 0.0, -9.8 ], "friction_angle": 30, "n_grid": 200, "particle_filling": { "n_grid": 100, "density_threshold": 100.0, "search_threshold": 1.0, "search_exclude_direction": 2, "ray_cast_direction": 4, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.4, 1.6, 0.4, 1.6, 0.4, 1.6 ], "smooth": true, "visualize": true }, "boundary_conditions": [ { "type": "bounding_box" }, { "type": "surface_collider", "point": [ 1, 1, 0.48 ], "normal": [ 0.0, 0.0, 1.0 ], "surface": "sticky", "friction": 0.0, "start_time": 0, "end_time": 1e3 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 1, 1, 0.8 ], "default_camera_index": 1, "show_hint": false, "init_azimuthm": 170, "init_elevation": 0, "init_radius": 1.6, "move_camera": true, "delta_a": -2.4, "delta_e": 0.8, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_shrubs_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0.0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 50, "nu": 0.4, "E": 2e6, "material": "jelly", "density": 200, "fix_ground": true, "g": [ 0, 0, 0 ], "grid_v_damping_scale": 0.9999, "rpic_damping": 0.0, "boundary_conditions": [ { "type": "particle_impulse", "force": [ -3.8e-1, 0.0, 0.0 ], "num_dt": 1, "start_time": 0 } ], "additional_material_params": [ { "point": [ 1.0, 1.0, 1.5 ], "size": [ 1.0, 1.0, 0.5 ], "nu": 0.4, "E": 2e6, "density": 70, "material": 0 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 1 ], "default_camera_index": 1, "show_hint": false, "init_azimuthm": -36.7, "init_elevation": 8.96, "init_radius": 0.8, "move_camera": false, "delta_a": 0.4, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_snow_and_mud_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-5, "frame_dt": 1e-2, "frame_num": 200, "E": 1e5, "yield_stress": 5e2, "nu": 0.2, "material": "snow", "softening": 0.5, "density": 2700, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 9, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_snow_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-5, "frame_dt": 1e-2, "frame_num": 200, "E": 1e5, "yield_stress": 5e2, "nu": 0.2, "material": "snow", "softening": 0.5, "grid_v_damping_scale": 0.9999, "density": 2700, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": 9, "show_hint": false, "init_azimuthm": 150, "init_elevation": 10, "init_radius": 2.7, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_soda_cans_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-6, "frame_dt": 1e-2, "frame_num": 100, "export_gaussians_to_ply": true, "E": 7e10, "yield_stress": 6e7, "nu": 0.3, "material": "metal", "hardening": 1, "xi": 0.1, "density": 2700, "fix_ground": false, "g": [ 0.0, 0.0, -9.8 ], "n_grid": 120, "particle_filling": { "n_grid": 50, "density_threshold": 40.0, "search_threshold": 0.5, "search_exclude_direction": 0, "ray_cast_direction": 1, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.86, 1.46, 0.7, 1.3, 0.7, 1.3 ] }, "boundary_conditions": [ { "type": "bounding_box" }, { "type": "surface_collider", "point": [ 0, 0, 0 ], "normal": [ 0, 0, 1 ], "surface": "slip", "friction": 0.4, "start_time": 0.0, "end_time": 1e200 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.5, 0.5, 0.5 ], "default_camera_index": 9, "show_hint": false, "init_azimuthm": 0, "init_elevation": 25, "init_radius": 2.0, "move_camera": false, "delta_a": 0.04, "delta_e": 0.0, "delta_r": 0.00 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_sport_balls_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "fix_ground": false, "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 50, "nu": 0.4, "E": 40000, "material": "jelly", "density": 100, "g": [ 0, 0, -9.8 ], "grid_v_damping_scale": 0.9999, "rpic_damping": 0.0, "boundary_conditions": [ { "type": "bounding_box" } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 0.5 ], "default_camera_index": 0, "show_hint": false, "init_azimuthm": 50, "init_elevation": 0, "init_radius": 2.5, "move_camera": false, "delta_a": 0.0, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_tree_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0.0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 125, "nu": 0.4, "E": 2e6, "material": "jelly", "density": 200, "fix_ground": true, "g": [ 0, 0, 0 ], "grid_v_damping_scale": 0.9999, "rpic_damping": 0.0, "boundary_conditions": [ { "type": "particle_impulse", "force": [ -4.8e-1, 0.0, 0.0 ], "num_dt": 1, "start_time": 0 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 0.95, 1.07, 1 ], "default_camera_index": 4, "show_hint": false, "init_azimuthm": -36.7, "init_elevation": 8.96, "init_radius": 0.8, "move_camera": false, "delta_a": 0.4, "delta_e": 0.0, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/objaverse/custom_water-like_bodies_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 0.0 ], "rotation_axis": [ 0 ], "substep_dt": 2e-5, "frame_dt": 4e-2, "frame_num": 50, "E": 0.0, "nu": 0.0, "material": "fluid", "density": 2000, "g": [ 0.0, 0.0, -9.8 ], "friction_angle": 30, "n_grid": 200, "particle_filling": { "n_grid": 100, "density_threshold": 100.0, "search_threshold": 1.0, "search_exclude_direction": 2, "ray_cast_direction": 4, "max_particles_num": 2000000, "max_partciels_per_cell": 1, "boundary": [ 0.4, 1.6, 0.4, 1.6, 0.4, 1.6 ], "smooth": true, "visualize": true }, "boundary_conditions": [ { "type": "bounding_box" }, { "type": "surface_collider", "point": [ 1, 1, 0.48 ], "normal": [ 0.0, 0.0, 1.0 ], "surface": "sticky", "friction": 0.0, "start_time": 0, "end_time": 1e3 } ], "mpm_space_vertical_upward_axis": [ 0, 0, 1 ], "mpm_space_viewpoint_center": [ 1, 1, 0.8 ], "default_camera_index": 1, "show_hint": false, "init_azimuthm": 170, "init_elevation": 0, "init_radius": 1.6, "move_camera": true, "delta_a": -2.4, "delta_e": 0.8, "delta_r": 0.0 } ================================================ FILE: third_party/PhysGaussian/config/real_scene/custom_bonsai_config.json ================================================ { "opacity_threshold": 0.05, "rotation_degree": [ -135 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 60, "E": 2e6, "nu": 0.4, "material": "jelly", "k_smoothing_neighbors": 1, "density": 200, "g": [ 0.0, 0.0, 0.0 ], "n_grid": 120, "grid_lim": 3.0, "grid_v_damping_scale": 1.1, "rpic_damping": 0.0, "mpm_space_vertical_upward_axis": [ 0, 1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": -1, "show_hint": false, "init_azimuthm": 96.90092784458707, "init_elevation": -35.66518737466003, "init_radius": 4.096782754957448, "init_roll": 30, "move_camera": true, "delta_a": 0.05, "delta_e": 0.1, "delta_r": 0.00, "boundary_conditions": [ { "type": "particle_impulse", "force": [ 1.69705627, -1.2, 1.2 ], "num_dt": 1, "start_time": 0 } ], "sim_area": [ -0.7524, 1.1903, -0.7674, 1.8940, -2.47035, 0.37235 ] } ================================================ FILE: third_party/PhysGaussian/config/real_scene/custom_bouquet_config.json ================================================ { "opacity_threshold": 0.05, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 100, "E": 2e6, "nu": 0.4, "material": "jelly", "density": 200, "g": [ 0.0, 0.0, 0.0 ], "n_grid": 120, "grid_lim": 2.5, "grid_v_damping_scale": 1.1, "rpic_damping": 0.0, "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "k_smoothing_neighbors": 50, "nn_distance_threshold": 0.5, "default_camera_index": -1, "show_hint": false, "init_azimuthm": -118.77519966925429, "init_elevation": 25.997773497590156, "init_radius": 4.27758574205424, "init_roll": -180, "move_camera": true, "delta_a": 1.0, "delta_e": 0.00, "delta_r": 0.00, "out_of_bound_check_freq": 1, "boundary_conditions": [ { "type": "particle_impulse", "force": [ -1.5e-1, 0.0, 0.0 ], "num_dt": 1, "start_time": 0 } ], "sim_area": [ -1.8, 1.7923, 0.1, 3.5, -1.2917, 2.1863 ] } ================================================ FILE: third_party/PhysGaussian/config/real_scene/custom_burger_config.json ================================================ { "opacity_threshold": 0.05, "rotation_degree": [ 0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 100, "E": 2e6, "nu": 0.4, "material": "jelly", "density": 200, "g": [ 0.0, 0.0, 0.0 ], "n_grid": 120, "grid_lim": 2.5, "grid_v_damping_scale": 1.1, "rpic_damping": 0.0, "mpm_space_vertical_upward_axis": [ 0, -1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "k_smoothing_neighbors": 50, "nn_distance_threshold": 0.5, "default_camera_index": -1, "show_hint": false, "init_azimuthm": -118.77519966925429, "init_elevation": 25.997773497590156, "init_radius": 4.27758574205424, "init_roll": -180, "move_camera": true, "delta_a": 1.0, "delta_e": 0.00, "delta_r": 0.00, "out_of_bound_check_freq": 1, "boundary_conditions": [ { "type": "particle_impulse", "force": [ -1.5e-1, 0.0, 0.0 ], "num_dt": 1, "start_time": 0 } ], "sim_area": [ -1.8, 1.7923, 0.1, 3.5, -1.2917, 2.1863 ] } ================================================ FILE: third_party/PhysGaussian/config/real_scene/custom_vasedeck_config.json ================================================ { "opacity_threshold": 0.02, "rotation_degree": [ 135.0 ], "rotation_axis": [ 0 ], "substep_dt": 1e-4, "frame_dt": 4e-2, "frame_num": 60, "E": 2e6, "nu": 0.4, "material": "jelly", "density": 200, "k_smoothing_neighbors": 1, "nn_distance_threshold": 0.09, "g": [ 0.0, 0.0, 0.0 ], "n_grid": 120, "grid_v_damping_scale": 1.1, "rpic_damping": 0.0, "sim_area": [ -2.25, 2.25, -5.01, -0.81, -1.95, 2.55 ], "mpm_space_vertical_upward_axis": [ 0, 1, 0 ], "mpm_space_viewpoint_center": [ 1, 1, 1 ], "default_camera_index": -1, "show_hint": false, "init_azimuthm": -150.70204217662163, "init_elevation": 39.991079825274255, "init_radius": 4.520787855324917, "init_roll": 0.0, "move_camera": true, "delta_a": 1.0, "delta_e": 0.0, "delta_r": 0.00, "boundary_conditions": [ { "type": "particle_impulse", "force": [ 0, 0, 5e-1 ], "num_dt": 1, "start_time": 0 } ] } ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/.gitignore ================================================ *.pyc .vscode output build diff_rasterization/diff_rast.egg-info diff_rasterization/dist tensorboard_3d screenshots ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/.gitmodules ================================================ [submodule "submodules/simple-knn"] path = submodules/simple-knn url = https://gitlab.inria.fr/bkerbl/simple-knn.git [submodule "submodules/diff-gaussian-rasterization"] path = submodules/diff-gaussian-rasterization url = https://github.com/graphdeco-inria/diff-gaussian-rasterization [submodule "SIBR_viewers"] path = SIBR_viewers url = https://gitlab.inria.fr/sibr/sibr_core.git ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/LICENSE.md ================================================ Gaussian-Splatting License =========================== **Inria** and **the Max Planck Institut for Informatik (MPII)** hold all the ownership rights on the *Software* named **gaussian-splatting**. The *Software* is in the process of being registered with the Agence pour la Protection des Programmes (APP). The *Software* is still being developed by the *Licensor*. *Licensor*'s goal is to allow the research community to use, test and evaluate the *Software*. ## 1. Definitions *Licensee* means any person or entity that uses the *Software* and distributes its *Work*. *Licensor* means the owners of the *Software*, i.e Inria and MPII *Software* means the original work of authorship made available under this License ie gaussian-splatting. *Work* means the *Software* and any additions to or derivative works of the *Software* that are made available under this License. ## 2. Purpose This license is intended to define the rights granted to the *Licensee* by Licensors under the *Software*. ## 3. Rights granted For the above reasons Licensors have decided to distribute the *Software*. Licensors grant non-exclusive rights to use the *Software* for research purposes to research users (both academic and industrial), free of charge, without right to sublicense.. The *Software* may be used "non-commercially", i.e., for research and/or evaluation purposes only. Subject to the terms and conditions of this License, you are granted a non-exclusive, royalty-free, license to reproduce, prepare derivative works of, publicly display, publicly perform and distribute its *Work* and any resulting derivative works in any form. ## 4. Limitations **4.1 Redistribution.** You may reproduce or distribute the *Work* only if (a) you do so under this License, (b) you include a complete copy of this License with your distribution, and (c) you retain without modification any copyright, patent, trademark, or attribution notices that are present in the *Work*. **4.2 Derivative Works.** You may specify that additional or different terms apply to the use, reproduction, and distribution of your derivative works of the *Work* ("Your Terms") only if (a) Your Terms provide that the use limitation in Section 2 applies to your derivative works, and (b) you identify the specific derivative works that are subject to Your Terms. Notwithstanding Your Terms, this License (including the redistribution requirements in Section 3.1) will continue to apply to the *Work* itself. **4.3** Any other use without of prior consent of Licensors is prohibited. Research users explicitly acknowledge having received from Licensors all information allowing to appreciate the adequacy between of the *Software* and their needs and to undertake all necessary precautions for its execution and use. **4.4** The *Software* is provided both as a compiled library file and as source code. In case of using the *Software* for a publication or other results obtained through the use of the *Software*, users are strongly encouraged to cite the corresponding publications as explained in the documentation of the *Software*. ## 5. Disclaimer THE USER CANNOT USE, EXPLOIT OR DISTRIBUTE THE *SOFTWARE* FOR COMMERCIAL PURPOSES WITHOUT PRIOR AND EXPLICIT CONSENT OF LICENSORS. YOU MUST CONTACT INRIA FOR ANY UNAUTHORIZED USE: stip-sophia.transfert@inria.fr . ANY SUCH ACTION WILL CONSTITUTE A FORGERY. THIS *SOFTWARE* IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES OF ANY NATURE AND ANY EXPRESS OR IMPLIED WARRANTIES, WITH REGARDS TO COMMERCIAL USE, PROFESSIONNAL USE, LEGAL OR NOT, OR OTHER, OR COMMERCIALISATION OR ADAPTATION. UNLESS EXPLICITLY PROVIDED BY LAW, IN NO EVENT, SHALL INRIA OR THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING FROM, OUT OF OR IN CONNECTION WITH THE *SOFTWARE* OR THE USE OR OTHER DEALINGS IN THE *SOFTWARE*. ## 6. Files subject to permissive licenses The contents of the file ```utils/loss_utils.py``` are based on publicly available code authored by Evan Su, which falls under the permissive MIT license. Title: pytorch-ssim\ Project code: https://github.com/Po-Hsun-Su/pytorch-ssim\ Copyright Evan Su, 2017\ License: https://github.com/Po-Hsun-Su/pytorch-ssim/blob/master/LICENSE.txt (MIT) ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/README.md ================================================ # 3D Gaussian Splatting for Real-Time Radiance Field Rendering Bernhard Kerbl*, Georgios Kopanas*, Thomas Leimkühler, George Drettakis (* indicates equal contribution)
| [Webpage](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/) | [Full Paper](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_high.pdf) | [Video](https://youtu.be/T_kXY43VZnk) | [Other GRAPHDECO Publications](http://www-sop.inria.fr/reves/publis/gdindex.php) | [FUNGRAPH project page](https://fungraph.inria.fr) |
| [T&T+DB COLMAP (650MB)](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip) | [Pre-trained Models (14 GB)](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/pretrained/models.zip) | [Viewers for Windows (60MB)](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip) | [Evaluation Images (7 GB)](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/evaluation/images.zip) |
![Teaser image](assets/teaser.png) This repository contains the official authors implementation associated with the paper "3D Gaussian Splatting for Real-Time Radiance Field Rendering", which can be found [here](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/). We further provide the reference images used to create the error metrics reported in the paper, as well as recently created, pre-trained models. Abstract: *Radiance Field methods have recently revolutionized novel-view synthesis of scenes captured with multiple photos or videos. However, achieving high visual quality still requires neural networks that are costly to train and render, while recent faster methods inevitably trade off speed for quality. For unbounded and complete scenes (rather than isolated objects) and 1080p resolution rendering, no current method can achieve real-time display rates. We introduce three key elements that allow us to achieve state-of-the-art visual quality while maintaining competitive training times and importantly allow high-quality real-time (≥ 30 fps) novel-view synthesis at 1080p resolution. First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space; Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene; Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows realtime rendering. We demonstrate state-of-the-art visual quality and real-time rendering on several established datasets.*

BibTeX

@Article{kerbl3Dgaussians,
      author       = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{\"u}hler, Thomas and Drettakis, George},
      title        = {3D Gaussian Splatting for Real-Time Radiance Field Rendering},
      journal      = {ACM Transactions on Graphics},
      number       = {4},
      volume       = {42},
      month        = {July},
      year         = {2023},
      url          = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/}
}
## Funding and Acknowledgments This research was funded by the ERC Advanced grant FUNGRAPH No 788065. The authors are grateful to Adobe for generous donations, the OPAL infrastructure from Université Côte d’Azur and for the HPC resources from GENCI–IDRIS (Grant 2022-AD011013409). The authors thank the anonymous reviewers for their valuable feedback, P. Hedman and A. Tewari for proofreading earlier drafts also T. Müller, A. Yu and S. Fridovich-Keil for helping with the comparisons. ## Step-by-step Tutorial Jonathan Stephens made a fantastic step-by-step tutorial for setting up Gaussian Splatting on your machine, along with instructions for creating usable datasets from videos. If the instructions below are too dry for you, go ahead and check it out [here](https://www.youtube.com/watch?v=UXtuigy_wYc). ## Colab User [camenduru](https://github.com/camenduru) was kind enough to provide a Colab template that uses this repo's source (status: August 2023!) for quick and easy access to the method. Please check it out [here](https://github.com/camenduru/gaussian-splatting-colab). ## Cloning the Repository The repository contains submodules, thus please check it out with ```shell # SSH git clone git@github.com:graphdeco-inria/gaussian-splatting.git --recursive ``` or ```shell # HTTPS git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive ``` ## Overview The codebase has 4 main components: - A PyTorch-based optimizer to produce a 3D Gaussian model from SfM inputs - A network viewer that allows to connect to and visualize the optimization process - An OpenGL-based real-time viewer to render trained models in real-time. - A script to help you turn your own images into optimization-ready SfM data sets The components have different requirements w.r.t. both hardware and software. They have been tested on Windows 10 and Ubuntu Linux 22.04. Instructions for setting up and running each of them are found in the sections below. ## Optimizer The optimizer uses PyTorch and CUDA extensions in a Python environment to produce trained models. ### Hardware Requirements - CUDA-ready GPU with Compute Capability 7.0+ - 24 GB VRAM (to train to paper evaluation quality) - Please see FAQ for smaller VRAM configurations ### Software Requirements - Conda (recommended for easy setup) - C++ Compiler for PyTorch extensions (we used Visual Studio 2019 for Windows) - CUDA SDK 11 for PyTorch extensions, install *after* Visual Studio (we used 11.8, **known issues with 11.6**) - C++ Compiler and CUDA SDK must be compatible ### Setup #### Local Setup Our default, provided install method is based on Conda package and environment management: ```shell SET DISTUTILS_USE_SDK=1 # Windows only conda env create --file environment.yml conda activate gaussian_splatting ``` Please note that this process assumes that you have CUDA SDK **11** installed, not **12**. For modifications, see below. Tip: Downloading packages and creating a new environment with Conda can require a significant amount of disk space. By default, Conda will use the main system hard drive. You can avoid this by specifying a different package download location and an environment on a different drive: ```shell conda config --add pkgs_dirs / conda env create --file environment.yml --prefix //gaussian_splatting conda activate //gaussian_splatting ``` #### Modifications If you can afford the disk space, we recommend using our environment files for setting up a training environment identical to ours. If you want to make modifications, please note that major version changes might affect the results of our method. However, our (limited) experiments suggest that the codebase works just fine inside a more up-to-date environment (Python 3.8, PyTorch 2.0.0, CUDA 12). Make sure to create an environment where PyTorch and its CUDA runtime version match and the installed CUDA SDK has no major version difference with PyTorch's CUDA version. #### Known Issues Some users experience problems building the submodules on Windows (```cl.exe: File not found``` or similar). Please consider the workaround for this problem from the FAQ. ### Running To run the optimizer, simply use ```shell python train.py -s ```
Command Line Arguments for train.py #### --source_path / -s Path to the source directory containing a COLMAP or Synthetic NeRF data set. #### --model_path / -m Path where the trained model should be stored (```output/``` by default). #### --images / -i Alternative subdirectory for COLMAP images (```images``` by default). #### --eval Add this flag to use a MipNeRF360-style training/test split for evaluation. #### --resolution / -r Specifies resolution of the loaded images before training. If provided ```1, 2, 4``` or ```8```, uses original, 1/2, 1/4 or 1/8 resolution, respectively. For all other values, rescales the width to the given number while maintaining image aspect. **If not set and input image width exceeds 1.6K pixels, inputs are automatically rescaled to this target.** #### --data_device Specifies where to put the source image data, ```cuda``` by default, recommended to use ```cpu``` if training on large/high-resolution dataset, will reduce VRAM consumption, but slightly slow down training. Thanks to [HrsPythonix](https://github.com/HrsPythonix). #### --white_background / -w Add this flag to use white background instead of black (default), e.g., for evaluation of NeRF Synthetic dataset. #### --sh_degree Order of spherical harmonics to be used (no larger than 3). ```3``` by default. #### --convert_SHs_python Flag to make pipeline compute forward and backward of SHs with PyTorch instead of ours. #### --convert_cov3D_python Flag to make pipeline compute forward and backward of the 3D covariance with PyTorch instead of ours. #### --debug Enables debug mode if you experience erros. If the rasterizer fails, a ```dump``` file is created that you may forward to us in an issue so we can take a look. #### --debug_from Debugging is **slow**. You may specify an iteration (starting from 0) after which the above debugging becomes active. #### --iterations Number of total iterations to train for, ```30_000``` by default. #### --ip IP to start GUI server on, ```127.0.0.1``` by default. #### --port Port to use for GUI server, ```6009``` by default. #### --test_iterations Space-separated iterations at which the training script computes L1 and PSNR over test set, ```7000 30000``` by default. #### --save_iterations Space-separated iterations at which the training script saves the Gaussian model, ```7000 30000 ``` by default. #### --checkpoint_iterations Space-separated iterations at which to store a checkpoint for continuing later, saved in the model directory. #### --start_checkpoint Path to a saved checkpoint to continue training from. #### --quiet Flag to omit any text written to standard out pipe. #### --feature_lr Spherical harmonics features learning rate, ```0.0025``` by default. #### --opacity_lr Opacity learning rate, ```0.05``` by default. #### --scaling_lr Scaling learning rate, ```0.005``` by default. #### --rotation_lr Rotation learning rate, ```0.001``` by default. #### --position_lr_max_steps Number of steps (from 0) where position learning rate goes from ```initial``` to ```final```. ```30_000``` by default. #### --position_lr_init Initial 3D position learning rate, ```0.00016``` by default. #### --position_lr_final Final 3D position learning rate, ```0.0000016``` by default. #### --position_lr_delay_mult Position learning rate multiplier (cf. Plenoxels), ```0.01``` by default. #### --densify_from_iter Iteration where densification starts, ```500``` by default. #### --densify_until_iter Iteration where densification stops, ```15_000``` by default. #### --densify_grad_threshold Limit that decides if points should be densified based on 2D position gradient, ```0.0002``` by default. #### --densification_interval How frequently to densify, ```100``` (every 100 iterations) by default. #### --opacity_reset_interval How frequently to reset opacity, ```3_000``` by default. #### --lambda_dssim Influence of SSIM on total loss from 0 to 1, ```0.2``` by default. #### --percent_dense Percentage of scene extent (0--1) a point must exceed to be forcibly densified, ```0.01``` by default.

Note that similar to MipNeRF360, we target images at resolutions in the 1-1.6K pixel range. For convenience, arbitrary-size inputs can be passed and will be automatically resized if their width exceeds 1600 pixels. We recommend to keep this behavior, but you may force training to use your higher-resolution images by setting ```-r 1```. The MipNeRF360 scenes are hosted by the paper authors [here](https://jonbarron.info/mipnerf360/). You can find our SfM data sets for Tanks&Temples and Deep Blending [here](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip). If you do not provide an output model directory (```-m```), trained models are written to folders with randomized unique names inside the ```output``` directory. At this point, the trained models may be viewed with the real-time viewer (see further below). ### Evaluation By default, the trained models use all available images in the dataset. To train them while withholding a test set for evaluation, use the ```--eval``` flag. This way, you can render training/test sets and produce error metrics as follows: ```shell python train.py -s --eval # Train with train/test split python render.py -m # Generate renderings python metrics.py -m # Compute error metrics on renderings ``` If you want to evaluate our [pre-trained models](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/pretrained/models.zip), you will have to download the corresponding source data sets and indicate their location to ```render.py``` with an additional ```--source_path/-s``` flag. Note: The pre-trained models were created with the release codebase. This code base has been cleaned up and includes bugfixes, hence the metrics you get from evaluating them will differ from those in the paper. ```shell python render.py -m -s python metrics.py -m ```
Command Line Arguments for render.py #### --model_path / -m Path to the trained model directory you want to create renderings for. #### --skip_train Flag to skip rendering the training set. #### --skip_test Flag to skip rendering the test set. #### --quiet Flag to omit any text written to standard out pipe. **The below parameters will be read automatically from the model path, based on what was used for training. However, you may override them by providing them explicitly on the command line.** #### --source_path / -s Path to the source directory containing a COLMAP or Synthetic NeRF data set. #### --images / -i Alternative subdirectory for COLMAP images (```images``` by default). #### --eval Add this flag to use a MipNeRF360-style training/test split for evaluation. #### --resolution / -r Changes the resolution of the loaded images before training. If provided ```1, 2, 4``` or ```8```, uses original, 1/2, 1/4 or 1/8 resolution, respectively. For all other values, rescales the width to the given number while maintaining image aspect. ```1``` by default. #### --white_background / -w Add this flag to use white background instead of black (default), e.g., for evaluation of NeRF Synthetic dataset. #### --convert_SHs_python Flag to make pipeline render with computed SHs from PyTorch instead of ours. #### --convert_cov3D_python Flag to make pipeline render with computed 3D covariance from PyTorch instead of ours.
Command Line Arguments for metrics.py #### --model_paths / -m Space-separated list of model paths for which metrics should be computed.

We further provide the ```full_eval.py``` script. This script specifies the routine used in our evaluation and demonstrates the use of some additional parameters, e.g., ```--images (-i)``` to define alternative image directories within COLMAP data sets. If you have downloaded and extracted all the training data, you can run it like this: ```shell python full_eval.py -m360 -tat -db ``` In the current version, this process takes about 7h on our reference machine containing an A6000. If you want to do the full evaluation on our pre-trained models, you can specify their download location and skip training. ```shell python full_eval.py -o --skip_training -m360 -tat -db ``` If you want to compute the metrics on our paper's [evaluation images](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/evaluation/images.zip), you can also skip rendering. In this case it is not necessary to provide the source datasets. You can compute metrics for multiple image sets at a time. ```shell python full_eval.py -m /garden ... --skip_training --skip_rendering ```
Command Line Arguments for full_eval.py #### --skip_training Flag to skip training stage. #### --skip_rendering Flag to skip rendering stage. #### --skip_metrics Flag to skip metrics calculation stage. #### --output_path Directory to put renderings and results in, ```./eval``` by default, set to pre-trained model location if evaluating them. #### --mipnerf360 / -m360 Path to MipNeRF360 source datasets, required if training or rendering. #### --tanksandtemples / -tat Path to Tanks&Temples source datasets, required if training or rendering. #### --deepblending / -db Path to Deep Blending source datasets, required if training or rendering.

## Interactive Viewers We provide two interactive viewers for our method: remote and real-time. Our viewing solutions are based on the [SIBR](https://sibr.gitlabpages.inria.fr/) framework, developed by the GRAPHDECO group for several novel-view synthesis projects. ### Hardware Requirements - OpenGL 4.5-ready GPU and drivers (or latest MESA software) - 4 GB VRAM recommended - CUDA-ready GPU with Compute Capability 7.0+ (only for Real-Time Viewer) ### Software Requirements - Visual Studio or g++, **not Clang** (we used Visual Studio 2019 for Windows) - CUDA SDK 11, install *after* Visual Studio (we used 11.8) - CMake (recent version, we used 3.24) - 7zip (only on Windows) ### Pre-built Windows Binaries We provide pre-built binaries for Windows [here](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip). We recommend using them on Windows for an efficient setup, since the building of SIBR involves several external dependencies that must be downloaded and compiled on-the-fly. ### Installation from Source If you cloned with submodules (e.g., using ```--recursive```), the source code for the viewers is found in ```SIBR_viewers```. The network viewer runs within the SIBR framework for Image-based Rendering applications. #### Windows CMake should take care of your dependencies. ```shell cd SIBR_viewers cmake -Bbuild . cmake --build build --target install --config RelWithDebInfo ``` You may specify a different configuration, e.g. ```Debug``` if you need more control during development. #### Ubuntu 22.04 You will need to install a few dependencies before running the project setup. ```shell # Dependencies sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev # Project setup cd SIBR_viewers cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster cmake --build build -j24 --target install ``` #### Ubuntu 20.04 Backwards compatibility with Focal Fossa is not fully tested, but building SIBR with CMake should still work after invoking ```shell git checkout fossa_compatibility ``` ### Navigation in SIBR Viewers The SIBR interface provides several methods of navigating the scene. By default, you will be started with an FPS navigator, which you can control with ```W, A, S, D, Q, E``` for camera translation and ```I, K, J, L, U, O``` for rotation. Alternatively, you may want to use a Trackball-style navigator (select from the floating menu). You can also snap to a camera from the data set with the ```Snap to``` button or find the closest camera with ```Snap to closest```. The floating menues also allow you to change the navigation speed. You can use the ```Scaling Modifier``` to control the size of the displayed Gaussians, or show the initial point cloud. ### Running the Network Viewer https://github.com/graphdeco-inria/gaussian-splatting/assets/40643808/90a2e4d3-cf2e-4633-b35f-bfe284e28ff7 After extracting or installing the viewers, you may run the compiled ```SIBR_remoteGaussian_app[_config]``` app in ```/bin```, e.g.: ```shell .//bin/SIBR_remoteGaussian_app ``` The network viewer allows you to connect to a running training process on the same or a different machine. If you are training on the same machine and OS, no command line parameters should be required: the optimizer communicates the location of the training data to the network viewer. By default, optimizer and network viewer will try to establish a connection on **localhost** on port **6009**. You can change this behavior by providing matching ```--ip``` and ```--port``` parameters to both the optimizer and the network viewer. If for some reason the path used by the optimizer to find the training data is not reachable by the network viewer (e.g., due to them running on different (virtual) machines), you may specify an override location to the viewer by using ```-s ```.
Primary Command Line Arguments for Network Viewer #### --path / -s Argument to override model's path to source dataset. #### --ip IP to use for connection to a running training script. #### --port Port to use for connection to a running training script. #### --rendering-size Takes two space separated numbers to define the resolution at which network rendering occurs, ```1200``` width by default. Note that to enforce an aspect that differs from the input images, you need ```--force-aspect-ratio``` too. #### --load_images Flag to load source dataset images to be displayed in the top view for each camera.

### Running the Real-Time Viewer https://github.com/graphdeco-inria/gaussian-splatting/assets/40643808/0940547f-1d82-4c2f-a616-44eabbf0f816 After extracting or installing the viewers, you may run the compiled ```SIBR_gaussianViewer_app[_config]``` app in ```/bin```, e.g.: ```shell .//bin/SIBR_gaussianViewer_app -m ``` It should suffice to provide the ```-m``` parameter pointing to a trained model directory. Alternatively, you can specify an override location for training input data using ```-s```. To use a specific resolution other than the auto-chosen one, specify ```--rendering-size ```. Combine it with ```--force-aspect-ratio``` if you want the exact resolution and don't mind image distortion. **To unlock the full frame rate, please disable V-Sync on your machine and also in the application (Menu → Display). In a multi-GPU system (e.g., laptop) your OpenGL/Display GPU should be the same as your CUDA GPU (e.g., by setting the application's GPU preference on Windows, see below) for maximum performance.** ![Teaser image](assets/select.png) In addition to the initial point cloud and the splats, you also have the option to visualize the Gaussians by rendering them as ellipsoids from the floating menu. SIBR has many other functionalities, please see the [documentation](https://sibr.gitlabpages.inria.fr/) for more details on the viewer, navigation options etc. There is also a Top View (available from the menu) that shows the placement of the input cameras and the original SfM point cloud; please note that Top View slows rendering when enabled. The real-time viewer also uses slightly more aggressive, fast culling, which can be toggled in the floating menu. If you ever encounter an issue that can be solved by turning fast culling off, please let us know.
Primary Command Line Arguments for Real-Time Viewer #### --model-path / -m Path to trained model. #### --iteration Specifies which of state to load if multiple are available. Defaults to latest available iteration. #### --path / -s Argument to override model's path to source dataset. #### --rendering-size Takes two space separated numbers to define the resolution at which real-time rendering occurs, ```1200``` width by default. Note that to enforce an aspect that differs from the input images, you need ```--force-aspect-ratio``` too. #### --load_images Flag to load source dataset images to be displayed in the top view for each camera. #### --device Index of CUDA device to use for rasterization if multiple are available, ```0``` by default. #### --no_interop Disables CUDA/GL interop forcibly. Use on systems that may not behave according to spec (e.g., WSL2 with MESA GL 4.5 software rendering).

## Processing your own Scenes Our COLMAP loaders expect the following dataset structure in the source path location: ``` |---images | |--- | |--- | |---... |---sparse |---0 |---cameras.bin |---images.bin |---points3D.bin ``` For rasterization, the camera models must be either a SIMPLE_PINHOLE or PINHOLE camera. We provide a converter script ```convert.py```, to extract undistorted images and SfM information from input images. Optionally, you can use ImageMagick to resize the undistorted images. This rescaling is similar to MipNeRF360, i.e., it creates images with 1/2, 1/4 and 1/8 the original resolution in corresponding folders. To use them, please first install a recent version of COLMAP (ideally CUDA-powered) and ImageMagick. Put the images you want to use in a directory ```/input```. ``` |---input |--- |--- |---... ``` If you have COLMAP and ImageMagick on your system path, you can simply run ```shell python convert.py -s [--resize] #If not resizing, ImageMagick is not needed ``` Alternatively, you can use the optional parameters ```--colmap_executable``` and ```--magick_executable``` to point to the respective paths. Please note that on Windows, the executable should point to the COLMAP ```.bat``` file that takes care of setting the execution environment. Once done, `````` will contain the expected COLMAP data set structure with undistorted, resized input images, in addition to your original images and some temporary (distorted) data in the directory ```distorted```. If you have your own COLMAP dataset without undistortion (e.g., using ```OPENCV``` camera), you can try to just run the last part of the script: Put the images in ```input``` and the COLMAP info in a subdirectory ```distorted```: ``` |---input | |--- | |--- | |---... |---distorted |---database.db |---sparse |---0 |---... ``` Then run ```shell python convert.py -s --skip_matching [--resize] #If not resizing, ImageMagick is not needed ```
Command Line Arguments for convert.py #### --no_gpu Flag to avoid using GPU in COLMAP. #### --skip_matching Flag to indicate that COLMAP info is available for images. #### --source_path / -s Location of the inputs. #### --camera Which camera model to use for the early matching steps, ```OPENCV``` by default. #### --resize Flag for creating resized versions of input images. #### --colmap_executable Path to the COLMAP executable (```.bat``` on Windows). #### --magick_executable Path to the ImageMagick executable.

## FAQ - *Where do I get data sets, e.g., those referenced in ```full_eval.py```?* The MipNeRF360 data set is provided by the authors of the original paper on the project site. Note that two of the data sets cannot be openly shared and require you to consult the authors directly. For Tanks&Temples and Deep Blending, please use the download links provided at the top of the page. Alternatively, you may access the cloned data (status: August 2023!) from [HuggingFace](https://huggingface.co/camenduru/gaussian-splatting) - *How can I use this for a much larger dataset, like a city district?* The current method was not designed for these, but given enough memory, it should work out. However, the approach can struggle in multi-scale detail scenes (extreme close-ups, mixed with far-away shots). This is usually the case in, e.g., driving data sets (cars close up, buildings far away). For such scenes, you can lower the ```--position_lr_init```, ```--position_lr_final``` and ```--scaling_lr``` (x0.3, x0.1, ...). The more extensive the scene, the lower these values should be. Below, we use default learning rates (left) and ```--position_lr_init 0.000016 --scaling_lr 0.001"``` (right). | ![Default learning rate result](assets/worse.png "title-1") | ![Reduced learning rate result](assets/better.png "title-2") | | --- | --- | - *I'm on Windows and I can't manage to build the submodules, what do I do?* Consider following the steps in the excellent video tutorial [here](https://www.youtube.com/watch?v=UXtuigy_wYc), hopefully they should help. The order in which the steps are done is important! Alternatively, consider using the linked Colab template. - *It still doesn't work. It says something about ```cl.exe```. What do I do?* User Henry Pearce found a workaround. You can you try adding the visual studio path to your environment variables (your version number might differ); ```C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64``` Then make sure you start a new conda prompt and cd to your repo location and try this; ``` conda activate gaussian_splatting cd /gaussian-splatting pip install submodules\diff-gaussian-rasterization pip install submodules\simple-knn ``` - *I'm on macOS/Puppy Linux/Greenhat and I can't manage to build, what do I do?* Sorry, we can't provide support for platforms outside of the ones we list in this README. Consider using the linked Colab template. - *I don't have 24 GB of VRAM for training, what do I do?* The VRAM consumption is determined by the number of points that are being optimized, which increases over time. If you only want to train to 7k iterations, you will need significantly less. To do the full training routine and avoid running out of memory, you can increase the ```--densify_grad_threshold```, ```--densification_interval``` or reduce the value of ```--densify_until_iter```. Note however that this will affect the quality of the result. Also try setting ```--test_iterations``` to ```-1``` to avoid memory spikes during testing. If ```--densify_grad_threshold``` is very high, no densification should occur and training should complete if the scene itself loads successfully. - *24 GB of VRAM for reference quality training is still a lot! Can't we do it with less?* Yes, most likely. By our calculations it should be possible with **way** less memory (~8GB). If we can find the time we will try to achieve this. If some PyTorch veteran out there wants to tackle this, we look forward to your pull request! - *How can I use the differentiable Gaussian rasterizer for my own project?* Easy, it is included in this repo as a submodule ```diff-gaussian-rasterization```. Feel free to check out and install the package. It's not really documented, but using it from the Python side is very straightforward (cf. ```gaussian_renderer/__init__.py```). - *Wait, but `````` isn't optimized and could be much better?* There are several parts we didn't even have time to think about improving (yet). The performance you get with this prototype is probably a rather slow baseline for what is physically possible. - *Something is broken, how did this happen?* We tried hard to provide a solid and comprehensible basis to make use of the paper's method. We have refactored the code quite a bit, but we have limited capacity to test all possible usage scenarios. Thus, if part of the website, the code or the performance is lacking, please create an issue. If we find the time, we will do our best to address it. ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/.gitignore ================================================ extlibs/ build/ install/ src/projects/* cmake-gui.exe.stackdump __pycache__/ # emacs garbage \#* .\#* # vim garbage *.swp *.swo *.idea/ *.log *.sh *.tmp hs_err_* # re include common public projects !src/projects/ulr/ !src/projects/dataset_tools/ # more vim garbage # Swap [._]*.s[a-v][a-z] !*.svg # comment out if you don't need vector files [._]*.sw[a-p] [._]s[a-rt-v][a-z] [._]ss[a-gi-z] [._]sw[a-p] # Session Session.vim Sessionx.vim # Temporary .netrwhist *~ # Auto-generated tag files tags # Persistent undo [._]*.un~ ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/CMakeLists.txt ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr CMAKE_MINIMUM_REQUIRED(VERSION 3.22) set (CMAKE_SYSTEM_VERSION 10.0.15063.0 CACHE INTERNAL "Cmake system version" FORCE) PROJECT(sibr_projects) set(REQUIRED_VERSION "3.22.0") set(CHECKED_VERSION "3.27.0") if (CMAKE_VERSION VERSION_LESS REQUIRED_VERSION) message(WARNING "Deprecated version of cmake. Please update to at least ${REQUIRED_VERSION} (${CHECKED_VERSION} recommended).") elseif (CMAKE_VERSION VERSION_GREATER CHECKED_VERSION) message(WARNING "Untested version of cmake. If you checked everything is working properly, please update ${CHECKED_VERSION} in the main CmakeLists.txt with the version you tested.") endif() ## Include cmake stuff (functions/macros) : Modules files if(WIN32) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/windows) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/windows/Modules) else() list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux/Modules) endif() set_property(GLOBAL PROPERTY USE_FOLDERS ON) ## To maintain cmake versions compatibilities include(cmake_policies) setPolicies() include(git_describe) git_describe(GIT_BRANCH SIBR_CORE_BRANCH GIT_COMMIT_HASH SIBR_CORE_COMMIT_HASH GIT_TAG SIBR_CORE_TAG GIT_VERSION SIBR_CORE_VERSION) message(STATUS "SIBR version :\n BRANCH ${SIBR_CORE_BRANCH}\n COMMIT_HASH ${SIBR_CORE_COMMIT_HASH}\n TAG ${SIBR_CORE_TAG}\n VERSION ${SIBR_CORE_VERSION}") if(NOT WIN32) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) endif() if (WIN32) ## Allow C++11 + other flags include(CheckCXXCompilerFlag) get_filename_component(currentBuildTool ${CMAKE_BUILD_TOOL} NAME_WE) # tool that can launch the native build system. returned value may be the full path if(${currentBuildTool} MATCHES "(msdev|devenv|nmake|MSBuild)") add_compile_options("$<$:/W3;/DNOMINMAX;/MP;-D_USE_MATH_DEFINES>") #add_definitions(/W3 /DNOMINMAX /MP -D_USE_MATH_DEFINES)# /D_ITERATOR_DEBUG_LEVEL=1 because you need all external DLl to compile with this flag too set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING "" FORCE) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) elseif(${currentBuildTool} MATCHES "(make|gmake)") add_definitions("-Wall -Wno-unknown-pragmas -Wno-sign-compare -g -std=c++14 -D__forceinline=\"inline\ __attribute__((always_inline))\"") # CHECK_CXX_COMPILER_FLAG("-std=gnu++11" COMPILER_SUPPORTS_CXX11) # CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" COMPILER_SUPPORTS_CXX0X) # if(COMPILER_SUPPORTS_CXX11) # add_definitions(-std=gnu++11) # elseif(COMPILER_SUPPORTS_CXX0X) # add_definitions(-std=gnu++0x) # else() # message(SEND_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler.") # endif() elseif(APPLE) ## \todo TODO: do a better test and send error on unsupported c++14 compiler add_definitions(-std=c++14 -stdlib=libc++) endif() else() ## Allow C++11 + other flags include(CheckCXXCompilerFlag) get_filename_component(currentBuildTool ${CMAKE_BUILD_TOOL} NAME_WE) # tool that can launch the native build system. returned value may be the full path if(${currentBuildTool} MATCHES "(msdev|devenv|nmake|MSBuild)") add_compile_options("$<$:/W3;/DNOMINMAX;/MP;-D_USE_MATH_DEFINES>") #add_definitions(/W3 /DNOMINMAX /MP -D_USE_MATH_DEFINES)# /D_ITERATOR_DEBUG_LEVEL=1 because you need all external DLl to compile with this flag too set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING "" FORCE) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) elseif(${currentBuildTool} MATCHES "(make|gmake|ninja)") add_definitions("-fpermissive -fPIC -Wall -Wno-unknown-pragmas -Wno-sign-compare -g -std=c++17 -D__forceinline=\"inline\ __attribute__((always_inline))\"") elseif(APPLE) ## \todo TODO: do a better test and send error on unsupported c++14 compiler add_definitions(-std=c++17 -stdlib=libc++) endif() endif() set(INSTALL_STANDALONE ON) ## Set default build output binaries (used also in sub CMakeLists.txt) : set(BIN_BUILT_DIR "bin") if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(ARCHI_BUILT_DIR "x64") set(LIB_BUILT_DIR "lib64") else() set(ARCHI_BUILT_DIR "x86") set(LIB_BUILT_DIR "lib") endif() option(SEPARATE_CONFIGURATIONS "Clearer separation between configurations" OFF) SET(CMAKE_INSTALL_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/install) SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_ROOT}) if(DEFINED CMAKE_BUILD_TYPE) ## for mono config type (make/nmake/ninja based) if(${CMAKE_BUILD_TYPE} MATCHES "Debug") set(CMAKE_DEBUG_POSTFIX "_d") elseif(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo") set(CMAKE_RELWITHDEBINFO_POSTFIX "_rwdi") elseif(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel") set(CMAKE_MINSIZEREL_POSTFIX "_msr") elseif(${CMAKE_BUILD_TYPE} MATCHES "Release") set(CMAKE_RELEASE_POSTFIX "") endif() if(SEPARATE_CONFIGURATIONS) SET(CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE} ${CMAKE_INSTALL_ROOT}/${CMAKE_BUILD_TYPE}) else() SET(CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE} ${CMAKE_INSTALL_ROOT}) endif() MESSAGE(STATUS "Install path set to ${CMAKE_INSTALL_PREFIX}.") SET(CMAKE_OUTPUT_LIB_${CMAKE_BUILD_TYPE} ${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/lib) SET(CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE} ${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/bin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} ${CMAKE_OUTPUT_LIB_${CMAKE_BUILD_TYPE}}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} ${CMAKE_OUTPUT_LIB_${CMAKE_BUILD_TYPE}}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} ${CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE}}) set(CMAKE_PDB_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} ${CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE}}) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) if(${CONFIG_TYPES} MATCHES "Debug") set(CMAKE_DEBUG_POSTFIX "_d") elseif(${CONFIG_TYPES} MATCHES "RelWithDebInfo") set(CMAKE_RELWITHDEBINFO_POSTFIX "_rwdi") elseif(${CONFIG_TYPES} MATCHES "MinSizeRel") set(CMAKE_MINSIZEREL_POSTFIX "_msr") elseif(${CMAKE_BUILD_TYPE} MATCHES "Release") set(CMAKE_RELEASE_POSTFIX "") endif() if(SEPARATE_CONFIGURATIONS) SET(CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC} ${CMAKE_INSTALL_ROOT}/${CONFIG_TYPES}) else() SET(CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC} ${CMAKE_INSTALL_ROOT}) endif() MESSAGE(STATUS "Install path for ${CONFIG_TYPES} set to ${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}.") SET(CMAKE_OUTPUT_LIB_${CONFIG_TYPES_UC} ${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/lib) SET(CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC} ${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/bin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC} ${CMAKE_OUTPUT_LIB_${CONFIG_TYPES_UC}}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC} ${CMAKE_OUTPUT_LIB_${CONFIG_TYPES_UC}}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC} ${CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC}}) set(CMAKE_PDB_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC} ${CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC}}) endforeach() # Settings for RPATH if (NOT WIN32) # Default config of Fedora at INRIA has no LD_LIBRARY_PATH (for security reasons I guess) # So at least I had "./" in RPATH and found link paths #set(CMAKE_SKIP_RPATH TRUE) #SET(CMAKE_SKIP_BUILD_RPATH FALSE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH "$ORIGIN") #SET(CMAKE_INSTALL_RPATH "./") #SET(CMAKE_INSTALL_RPATH "./:/usr/lib64/:/usr/lib/:/usr/local/lib64/:/usr/local/lib/") # This one causes be a problem -> a "default" version of libGL (swrast) is located in /usr/lib64 and was selected instead of nvidia one (in /usr/lib64/nividia) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) endif() set(SIBR_PROGRAMARGS "" CACHE STRING "Default program arguments used in Visual Studio target properties") if ("${SIBR_PROGRAMARGS}" STREQUAL "") if (DEFINED ENV{SIBR_PROGRAMARGS}) set(SIBR_PROGRAMARGS "$ENV{SIBR_PROGRAMARGS}" CACHE STRING "Default program arguments used in Visual Studio target properties" FORCE) message( STATUS "Using program options found in environment variable 'SIBR_PROGRAMARGS' => '${SIBR_PROGRAMARGS}'") else() message( "Note you can provide default program options for Visual Studio target properties by either setting" " a value for the cmake cached variable 'SIBR_PROGRAMARGS' or by setting a new environment " "variable 'SIBR_PROGRAMARGS'") endif() endif() add_custom_target(PREBUILD ALL) ## Include all projects set(SIBR_PROJECTS_SAMPLES_SUBPAGE_REF "") set(SIBR_PROJECTS_OURS_SUBPAGE_REF "") set(SIBR_PROJECTS_TOOLBOX_SUBPAGE_REF "") set(SIBR_PROJECTS_OTHERS_SUBPAGE_REF "") set(SIBR_PROJECTS_SAMPLES_REF_REF "") set(SIBR_PROJECTS_OURS_REF_REF "") set(SIBR_PROJECTS_TOOLBOX_REF_REF "") set(SIBR_PROJECTS_OTHERS_REF_REF "") set(DOXY_APP_SPECIFIC_IMG_PATH "") set(DOXY_DOC_EXCLUDE_PATTERNS_DIRS "") ADD_SUBDIRECTORY(src) ## handle documentation if (WIN32) ADD_SUBDIRECTORY(docs) endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/LICENSE.md ================================================ SIBR License ============ **Inria** and **UCA** hold all the ownership rights on the *Software* named **sibr-core**. The *Software* has been registered with the Agence pour la Protection des Programmes (APP) under IDDN.FR.001.430020.000.S.P.2019.000.31235 The *Software* is still being developed by the *Licensor*. *Licensor*'s goal is to allow the research community to use, test and evaluate the *Software*. ## 1. Definitions *Licensee* means any person or entity that uses the *Software* and distributes its *Work*. *Licensor* means the owners of the *Software*, i.e Inria and UCA *Software* means the original work of authorship made available under this License ie Sibr-core. *Work* means the *Software* and any additions to or derivative works of the *Software* that are made available under this License. ## 2. Purpose This license is intended to define the rights granted to the *Licensee* by Licensors under the *Software*. ## 3. Rights granted For the above reasons Licensors have decided to distribute the *Software*. Licensors grant non-exclusive rights to use the *Software* for research purposes to research users (both academic and industrial), free of charge, without right to sublicense.. The *Software* may be used "non-commercially", i.e., for research and/or evaluation purposes only. Subject to the terms and conditions of this License, you are granted a non-exclusive, royalty-free, license to reproduce, prepare derivative works of, publicly display, publicly perform and distribute its *Work* and any resulting derivative works in any form. ## 4. Limitations **4.1 Redistribution.** You may reproduce or distribute the *Work* only if (a) you do so under this License, (b) you include a complete copy of this License with your distribution, and (c) you retain without modification any copyright, patent, trademark, or attribution notices that are present in the *Work*. **4.2 Derivative Works.** You may specify that additional or different terms apply to the use, reproduction, and distribution of your derivative works of the *Work* ("Your Terms") only if (a) Your Terms provide that the use limitation in Section 2 applies to your derivative works, and (b) you identify the specific derivative works that are subject to Your Terms. Notwithstanding Your Terms, this License (including the redistribution requirements in Section 3.1) will continue to apply to the *Work* itself. **4.3** Any other use without of prior consent of Licensors is prohibited. Research users explicitly acknowledge having received from Licensors all information allowing to appreciate the adequacy between of the *Software* and their needs and to undertake all necessary precautions for its execution and use. **4.4** The *Software* is provided both as a compiled library file and as source code. In case of using the *Software* for a publication or other results obtained through the use of the *Software*, users are strongly encouraged to cite the corresponding publications as explained in the documentation of the *Software*. ## 5. Disclaimer THE USER CANNOT USE, EXPLOIT OR DISTRIBUTE THE *SOFTWARE* FOR COMMERCIAL PURPOSES WITHOUT PRIOR AND EXPLICIT CONSENT OF LICENSORS. YOU MUST CONTACT INRIA FOR ANY UNAUTHORIZED USE: stip-sophia.transfert@inria.fr . ANY SUCH ACTION WILL CONSTITUTE A FORGERY. THIS *SOFTWARE* IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES OF ANY NATURE AND ANY EXPRESS OR IMPLIED WARRANTIES, WITH REGARDS TO COMMERCIAL USE, PROFESSIONNAL USE, LEGAL OR NOT, OR OTHER, OR COMMERCIALISATION OR ADAPTATION. UNLESS EXPLICITLY PROVIDED BY LAW, IN NO EVENT, SHALL INRIA OR THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING FROM, OUT OF OR IN CONNECTION WITH THE *SOFTWARE* OR THE USE OR OTHER DEALINGS IN THE *SOFTWARE*. ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/README.md ================================================ # SIBR Core **SIBR** is a System for Image-Based Rendering. It is built around the *sibr-core* in this repo and several *Projects* implementing published research papers. For more complete documentation, see here: [SIBR Documentation](https://sibr.gitlabpages.inria.fr) This **SIBR core** repository provides : - a basic Image-Based Renderer - a per-pixel implementation of Unstructured Lumigraph (ULR) - several dataset tools & pipelines do process input images Details on how to run in the documentation and in the section below. If you use this code in a publication, please cite the system as follows: ``` @misc{sibr2020, author = "Bonopera, Sebastien and Esnault, Jerome and Prakash, Siddhant and Rodriguez, Simon and Thonat, Theo and Benadel, Mehdi and Chaurasia, Gaurav and Philip, Julien and Drettakis, George", title = "sibr: A System for Image Based Rendering", year = "2020", url = "https://gitlab.inria.fr/sibr/sibr_core" } ``` ## Setup **Note**: The current release is for *Windows 10* only. We are planning a Linux release soon. #### Binary distribution The easiest way to use SIBR is to download the binary distribution. All steps described below, including all preprocessing for your datasets will work using this code. Download the distribution from the page: https://sibr.gitlabpages.inria.fr/download.html (Core, 57Mb); unzip the file and rename the directory "install". #### Install requirements - [**Visual Studio 2019**](https://visualstudio.microsoft.com/fr/downloads/) - [**Cmake 3.16+**](https://cmake.org/download) - [**7zip**](https://www.7-zip.org) - [**Python 3.8+**](https://www.python.org/downloads/) for shaders installation scripts and dataset preprocess scripts - [**Doxygen 1.8.17+**](https://www.doxygen.nl/download.html#srcbin) for documentation - [**CUDA 10.1+**](https://developer.nvidia.com/cuda-downloads) and [**CUDnn**](https://developer.nvidia.com/cudnn) if projects requires it Make sure Python, CUDA and Doxygen are in the PATH If you have Chocolatey, you can grab most of these with this command: ```sh choco install cmake 7zip python3 doxygen.install cuda ## Visual Studio is available on Chocolatey, ## though we do advise to set it from Visual Studio Installer and to choose your licensing accordingly choco install visualstudio2019community ``` #### Generation of the solution - Checkout this repository's master branch: ```sh ## through HTTPS git clone https://gitlab.inria.fr/sibr/sibr_core.git -b master ## through SSH git clone git@gitlab.inria.fr:sibr/sibr_core.git -b master ``` - Run Cmake-gui once, select the repo root as a source directory, `build/` as the build directory. Configure, select the Visual Studio C++ Win64 compiler - Select the projects you want to generate among the BUILD elements in the list (you can group Cmake flags by categories to access those faster) - Generate #### Compilation - Open the generated Visual Studio solution (`build/sibr_projects.sln`) - Build the `ALL_BUILD` target, and then the `INSTALL` target - The compiled executables will be put in `install/bin` - TODO: are the DLLs properly installed? #### Compilation of the documentation - Open the generated Visual Studio solution (`build/sibr_projects.sln`) - Build the `DOCUMENTATION` target - Run `install/docs/index.html` in a browser ## Scripts Some scripts will require you to install `PIL`, and `convert` from `ImageMagick`. ```sh ## To install pillow python -m pip install pillow ## If you have Chocolatey, you can install imagemagick from this command choco install imagemagick ``` ## Troubleshooting #### Bugs and Issues We will track bugs and issues through the Issues interface on gitlab. Inria gitlab does not allow creation of external accounts, so if you have an issue/bug please email sibr@inria.fr and we will either create a guest account or create the issue on our side. #### Cmake complaining about the version if you are the first to use a very recent Cmake version, you will have to update `CHECKED_VERSION` in the root `CmakeLists.txt`. #### Weird OpenCV error you probably selected the 32-bits compiler in Cmake-gui. #### `Cmd.exe failed with error 009` or similar make sure Python is installed and in the path. #### `BUILD_ALL` or `INSTALL` fail because of a project you don't really need build and install each project separately by selecting the proper targets. #### Error in CUDA headers under Visual Studio 2019 make sure CUDA >= 10.1 (first version to support VS2019) is installed. ## To run an example For more details, please see the documentation: http://sibr.gitlabpages.inria.fr Download a dataset from: https://repo-sam.inria.fr/fungraph/sibr-datasets/ e.g., the *sibr-museum-front* dataset in the *DATASETS_PATH* directory. ``` wget https://repo-sam.inria.fr/fungraph/sibr-datasets/museum_front27_ulr.zip ``` Once you have built the system or downloaded the binaries (see above), go to *install/bin* and you can run: ``` sibr_ulrv2_app.exe --path DATASETS_PATH/sibr-museum-front ``` You will have an interactive viewer and you can navigate freely in the captured scene. Our default interactive viewer has a main view running the algorithm and a top view to visualize the position of the calibrated cameras. By default you are in WASD mode, and can toggle to trackball using the "y" key. Please see the page [Interface](https://sibr.gitlabpages.inria.fr/docs/nightly/howto_sibr_useful_objects.html) for more details on the interface. Please see the documentation on how to create a dataset from your own scene, and the various other IBR algorithms available. ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/MSVCsetUserCommand.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(__MSVCsetUserCommand_cmake_INCLUDED__) return() else() set(__MSVCsetUserCommand_cmake_INCLUDED__ ON) endif() ## Allow to configure the Debugger settings of visual studio ## Note: Using this command under linux doesn't affect anything ## On run Debug Windows local : visual will try to load a specific COMMAND with ARGS in the provided WORKING_DIR ## ## usage: ## MSVCsetUserCommand( ## [COMMAND | [ PATH [FILE ] ] ] ## ARGS ## WORKING_DIR ## ) ## ## Warning 1 : All arugments () must be passed under quotes ## Warning 2 : WORKING_DIR path arg have to finish with remain slah '/' ## Warning 3 : use COMMAND for external app OR PATH (optionaly with FILE) option(s) to set your built/installed/moved target ## ## Example 1: ## include(MSVCsetUserCommand) ## MSVCsetUserCommand( UnityRenderingPlugin ## COMMAND "C:/Program Files (x86)/Unity/Editor/Unity.exe" ## ARGS "-force-opengl -projectPath \"${CMAKE_HOME_DIRECTORY}/UnityPlugins/RenderingPluginExample/UnityProject\"" ## WORKING_DIR "${CMAKE_HOME_DIRECTORY}/UnityPlugins/RenderingPluginExample/UnityProject" ## VERBOSE ## ) ## ## Example 2: ## include(MSVCsetUserCommand) ## MSVCsetUserCommand( ibrApp ## PATH "C:/Program Files (x86)/workspace/IBR/install" ## FILE "ibrApp${CMAKE_EXECUTABLE_SUFFIX}" ## this option line is optional since the target name didn't change between build and install step ## ARGS "-path \"${CMAKE_HOME_DIRECTORY}/dataset\"" ## WORKING_DIR "${CMAKE_HOME_DIRECTORY}" ## VERBOSE ## ) ## function(MSVCsetUserCommand targetName) cmake_parse_arguments(MSVCsuc "VERBOSE" "PATH;FILE;COMMAND;ARGS;WORKING_DIR" "" ${ARGN} ) ## If no arguments are given, do not create an unecessary .vcxproj.user file set(MSVCsuc_DEFAULT OFF) if(MSVCsuc_PATH AND MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() if(MSVCsuc_FILE AND MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() if(NOT MSVCsuc_COMMAND) if(MSVCsuc_PATH AND MSVCsuc_FILE) set(MSVCsuc_COMMAND "${MSVCsuc_PATH}\\${MSVCsuc_FILE}") elseif(MSVCsuc_PATH) set(MSVCsuc_COMMAND "${MSVCsuc_PATH}\\$(TargetFileName)") else() set(MSVCsuc_COMMAND "$(TargetPath)") ## => $(TargetDir)\$(TargetName)$(TargetExt) endif() elseif(MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() # NOTE: there was a typo here. there is an else if written after else statement # changing the order of the else if statement if(MSVCsuc_WORKING_DIR) file(TO_NATIVE_PATH ${MSVCsuc_WORKING_DIR} MSVCsuc_WORKING_DIR) elseif(MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) else() set(MSVCsuc_WORKING_DIR "$(ProjectDir)") endif() if(NOT MSVCsuc_ARGS) set(MSVCsuc_ARGS "") elseif(MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() if(MSVC10 OR (MSVC AND MSVC_VERSION GREATER 1600)) # 2010 or newer if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(PLATEFORM_BITS x64) else() set(PLATEFORM_BITS Win32) endif() if(NOT MSVCsuc_DEFAULT AND PLATEFORM_BITS) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${targetName}.vcxproj.user" " ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} " ) if(MSVCsuc_VERBOSE) message(STATUS "[MSVCsetUserCommand] Write ${CMAKE_CURRENT_BINARY_DIR}/${targetName}.vcxproj.user file") message(STATUS " to execute ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS}") message(STATUS " from derectory ${MSVCsuc_WORKING_DIR}") message(STATUS " on visual studio run debugger button") endif() else() message(WARNING "PLATEFORM_BITS is undefined...") endif() else() if(MSVCsuc_VERBOSE) message(WARNING "MSVCsetUserCommand is disable because too old MSVC is used (need MSVC10 2010 or newer)") endif() endif() endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/Modules/FindASSIMP.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Try to find the ASSIMP library ## Once done this will define ## ## ASSIMP_FOUND - system has ASSIMP ## ASSIMP_INCLUDE_DIR - The ASSIMP include directory ## ASSIMP_LIBRARIES - The libraries needed to use ASSIMP ## ASSIMP_CMD - the full path of ASSIMP executable ## ASSIMP_DYNAMIC_LIB - the Assimp dynamic lib (available only on windows as .dll file for the moment) ## ## Edited for using a bugfixed version of Assimp if(NOT ASSIMP_DIR) set(ASSIMP_DIR "$ENV{ASSIMP_DIR}" CACHE PATH "ASSIMP root directory") message("NO ASSIMP DIR " ASSIMP_DIR ) file(TO_CMAKE_PATH "/data/graphdeco/share/usr/local" ASSIMP_DIR) set(ASSIMP_DIR "/data/graphdeco/share/usr/local" ) message("SETTING ASSIMP DIR " ASSIMP_DIR ) endif() if(ASSIMP_DIR) file(TO_CMAKE_PATH ${ASSIMP_DIR} ASSIMP_DIR) file(TO_CMAKE_PATH "/data/graphdeco/share/usr/local" ASSIMP_DIR) message("ASSIMP DIR " ASSIMP_DIR ) endif() ## set the LIB POSTFIX to find in a right directory according to what kind of compiler we use (32/64bits) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(ASSIMP_SEARCH_LIB "lib64") set(ASSIMP_SEARCH_BIN "bin64") set(ASSIMP_SEARCH_LIB_PATHSUFFIXE "x64") else() set(ASSIMP_SEARCH_LIB "lib32") set(ASSIMP_SEARCH_BIN "bin32") set(ASSIMP_SEARCH_LIB_PATHSUFFIXE "x86") endif() set(PROGRAMFILESx86 "PROGRAMFILES(x86)") FIND_PATH(ASSIMP_INCLUDE_DIR NAMES assimp/config.h PATHS ${ASSIMP_DIR} ## linux /usr /usr/include /usr/local /opt/local ## windows "$ENV{PROGRAMFILES}/Assimp" "$ENV{${PROGRAMFILESx86}}/Assimp" "$ENV{ProgramW6432}/Assimp" PATH_SUFFIXES include ) FIND_LIBRARY(ASSIMP_LIBRARY NAMES assimp-vc140-mt assimp PATHS ${ASSIMP_DIR}/${ASSIMP_SEARCH_LIB} ${ASSIMP_DIR}/lib ${ASSIMP_DIR}/lib64 ## linux /usr/${ASSIMP_SEARCH_LIB} /usr/local/${ASSIMP_SEARCH_LIB} /opt/local/${ASSIMP_SEARCH_LIB} /usr/lib /usr/lib64 /usr/local/lib /opt/local/lib ## windows "$ENV{PROGRAMFILES}/Assimp/${ASSIMP_SEARCH_LIB}" "$ENV{${PROGRAMFILESx86}}/Assimp/${ASSIMP_SEARCH_LIB}" "$ENV{ProgramW6432}/Assimp/${ASSIMP_SEARCH_LIB}" "$ENV{PROGRAMFILES}/Assimp/lib" "$ENV{${PROGRAMFILESx86}}/Assimp/lib" "$ENV{ProgramW6432}/Assimp/lib" PATH_SUFFIXES ${ASSIMP_SEARCH_LIB_PATHSUFFIXE} ) set(ASSIMP_LIBRARIES ${ASSIMP_LIBRARY}) if(ASSIMP_LIBRARY) get_filename_component(ASSIMP_LIBRARY_DIR ${ASSIMP_LIBRARY} PATH) if(WIN32) file(GLOB ASSIMP_DYNAMIC_LIB "${ASSIMP_LIBRARY_DIR}/assimp*.dll") if(NOT ASSIMP_DYNAMIC_LIB) message("ASSIMP_DYNAMIC_LIB is missing... at ${ASSIMP_LIBRARY_DIR}") endif() endif() set(ASSIMP_DYNAMIC_LIB ${ASSIMP_DYNAMIC_LIB} CACHE PATH "Windows dll location") endif() MARK_AS_ADVANCED(ASSIMP_DYNAMIC_LIB ASSIMP_INCLUDE_DIR ASSIMP_LIBRARIES) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(ASSIMP REQUIRED_VARS ASSIMP_INCLUDE_DIR ASSIMP_LIBRARIES FAIL_MESSAGE "ASSIMP wasn't found correctly. Set ASSIMP_DIR to the root SDK installation directory." ) if(NOT ASSIMP_FOUND) set(ASSIMP_DIR "" CACHE STRING "Path to ASSIMP install directory") endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/Modules/FindEGL.cmake ================================================ #.rst: # FindEGL # ------- # # Try to find EGL. # # This will define the following variables: # # ``EGL_FOUND`` # True if (the requested version of) EGL is available # ``EGL_VERSION`` # The version of EGL; note that this is the API version defined in the # headers, rather than the version of the implementation (eg: Mesa) # ``EGL_LIBRARIES`` # This can be passed to target_link_libraries() instead of the ``EGL::EGL`` # target # ``EGL_INCLUDE_DIRS`` # This should be passed to target_include_directories() if the target is not # used for linking # ``EGL_DEFINITIONS`` # This should be passed to target_compile_options() if the target is not # used for linking # # If ``EGL_FOUND`` is TRUE, it will also define the following imported target: # # ``EGL::EGL`` # The EGL library # # In general we recommend using the imported target, as it is easier to use. # Bear in mind, however, that if the target is in the link interface of an # exported library, it must be made available by the package config file. # # Since pre-1.0.0. #============================================================================= # Copyright 2014 Alex Merry # Copyright 2014 Martin Gräßlin # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= include(CheckCXXSourceCompiles) include(CMakePushCheckState) # Use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig) pkg_check_modules(PKG_EGL QUIET egl) set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER}) find_path(EGL_INCLUDE_DIR NAMES EGL/egl.h HINTS ${PKG_EGL_INCLUDE_DIRS} ) find_library(EGL_LIBRARY NAMES EGL HINTS ${PKG_EGL_LIBRARY_DIRS} ) # NB: We do *not* use the version information from pkg-config, as that # is the implementation version (eg: the Mesa version) if(EGL_INCLUDE_DIR) # egl.h has defines of the form EGL_VERSION_x_y for each supported # version; so the header for EGL 1.1 will define EGL_VERSION_1_0 and # EGL_VERSION_1_1. Finding the highest supported version involves # finding all these defines and selecting the highest numbered. file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents) string(REGEX MATCHALL "[ \t]EGL_VERSION_[0-9_]+" _EGL_version_lines "${_EGL_header_contents}" ) unset(_EGL_header_contents) foreach(_EGL_version_line ${_EGL_version_lines}) string(REGEX REPLACE "[ \t]EGL_VERSION_([0-9_]+)" "\\1" _version_candidate "${_EGL_version_line}" ) string(REPLACE "_" "." _version_candidate "${_version_candidate}") if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate) set(EGL_VERSION "${_version_candidate}") endif() endforeach() unset(_EGL_version_lines) endif() cmake_push_check_state(RESET) list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}") list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}") check_cxx_source_compiles(" #include int main(int argc, char *argv[]) { EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0; eglDestroyContext(dpy, ctx); }" HAVE_EGL) cmake_pop_check_state() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(EGL FOUND_VAR EGL_FOUND REQUIRED_VARS EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL VERSION_VAR EGL_VERSION ) if(EGL_FOUND AND NOT TARGET EGL::EGL) add_library(EGL::EGL UNKNOWN IMPORTED) set_target_properties(EGL::EGL PROPERTIES IMPORTED_LOCATION "${EGL_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}" INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}" ) endif() mark_as_advanced(EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL) # compatibility variables set(EGL_LIBRARIES ${EGL_LIBRARY}) set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR}) set(EGL_VERSION_STRING ${EGL_VERSION}) include(FeatureSummary) set_package_properties(EGL PROPERTIES URL "https://www.khronos.org/egl/" DESCRIPTION "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG." ) ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/Modules/FindEmbree.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Important Note: ## This is not an official Find*cmake. It has been written for searching through ## a custom path (EMBREE_DIR) before checking elsewhere. ## ## FindEMBREE.cmake ## Find EMBREE's includes and library ## ## This module defines : ## [in] EMBREE_DIR, The base directory to search for EMBREE (as cmake var or env var) ## [out] EMBREE_INCLUDE_DIR where to find EMBREE.h ## [out] EMBREE_LIBRARIES, EMBREE_LIBRARY, libraries to link against to use EMBREE ## [out] EMBREE_FOUND, If false, do not try to use EMBREE. ## if(NOT EMBREE_DIR) set(EMBREE_DIR "$ENV{EMBREE_DIR}" CACHE PATH "EMBREE root directory") endif() if(EMBREE_DIR) file(TO_CMAKE_PATH ${EMBREE_DIR} EMBREE_DIR) endif() ## set the LIB POSTFIX to find in a right directory according to what kind of compiler we use (32/64bits) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(EMBREE_SEARCH_LIB "lib64") set(EMBREE_SEARCH_BIN "bin64") set(EMBREE_SEARCH_LIB_PATHSUFFIXE "x64") else() set(EMBREE_SEARCH_LIB "lib32") set(EMBREE_SEARCH_BIN "bin32") set(EMBREE_SEARCH_LIB_PATHSUFFIXE "x86") endif() set(PROGRAMFILESx86 "PROGRAMFILES(x86)") FIND_PATH(EMBREE_INCLUDE_DIR NAMES embree3/rtcore_geometry.h PATHS ${EMBREE_DIR} ## linux /usr /usr/local /opt/local ## windows "$ENV{PROGRAMFILES}/EMBREE" "$ENV{${PROGRAMFILESx86}}/EMBREE" "$ENV{ProgramW6432}/EMBREE" PATH_SUFFIXES include ) FIND_LIBRARY(EMBREE_LIBRARY NAMES embree3 PATHS ${EMBREE_DIR}/${EMBREE_SEARCH_LIB} ${EMBREE_DIR}/lib ## linux /usr/${EMBREE_SEARCH_LIB} /usr/local/${EMBREE_SEARCH_LIB} /opt/local/${EMBREE_SEARCH_LIB} /usr/lib /usr/local/lib /opt/local/lib ## windows "$ENV{PROGRAMFILES}/EMBREE/${EMBREE_SEARCH_LIB}" "$ENV{${PROGRAMFILESx86}}/EMBREE/${EMBREE_SEARCH_LIB}" "$ENV{ProgramW6432}/EMBREE/${EMBREE_SEARCH_LIB}" "$ENV{PROGRAMFILES}/EMBREE/lib" "$ENV{${PROGRAMFILESx86}}/EMBREE/lib" "$ENV{ProgramW6432}/EMBREE/lib" PATH_SUFFIXES ${EMBREE_SEARCH_LIB_PATHSUFFIXE} ) set(EMBREE_LIBRARIES ${EMBREE_LIBRARY}) MARK_AS_ADVANCED(EMBREE_INCLUDE_DIR EMBREE_LIBRARIES) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(EMBREE REQUIRED_VARS EMBREE_INCLUDE_DIR EMBREE_LIBRARIES FAIL_MESSAGE "EMBREE wasn't found correctly. Set EMBREE_DIR to the root SDK installation directory." ) if(NOT EMBREE_FOUND) set(EMBREE_DIR "" CACHE STRING "Path to EMBREE install directory") endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/Modules/FindFFMPEG.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Try to find the FFMPEG library ## Once done this will define ## ## FFMPEG_FOUND - system has FFmpeg ## FFMPEG_INCLUDE_DIR - The FFmpeg include directory ## FFMPEG_LIBRARIES - The libraries needed to use FFmpeg ## FFMPEG_DYNAMIC_LIBS - DLLs for windows if(NOT FFMPEG_DIR) set(FFMPEG_DIR "$ENV{FFMPEG_DIR}" CACHE PATH "FFMPEG_DIR root directory") endif() if(FFMPEG_DIR) file(TO_CMAKE_PATH ${FFMPEG_DIR} FFMPEG_DIR) endif() MACRO(FFMPEG_FIND varname shortname headername) # Path to include dirs FIND_PATH(FFMPEG_${varname}_INCLUDE_DIRS NAMES "lib${shortname}/${headername}" PATHS "${FFMPEG_DIR}/include" # modify this to adapt according to OS/compiler "/usr/include" "/usr/include/ffmpeg" ) #Add libraries IF(${FFMPEG_${varname}_INCLUDE_DIRS} STREQUAL "FFMPEG_${varname}_INCLUDE_DIR-NOTFOUND") MESSAGE(STATUS "Can't find includes for ${shortname}...") ELSE() FIND_LIBRARY(FFMPEG_${varname}_LIBRARIES NAMES ${shortname} PATHS ${FFMPEG_DIR}/lib "/usr/lib" "/usr/lib64" "/usr/local/lib" "/usr/local/lib64" ) # set libraries and other variables SET(FFMPEG_${varname}_FOUND 1) SET(FFMPEG_${varname}_INCLUDE_DIRS ${FFMPEG_${varname}_INCLUDE_DIR}) SET(FFMPEG_${varname}_LIBS ${FFMPEG_${varname}_LIBRARIES}) ENDIF() ENDMACRO(FFMPEG_FIND) #Calls to ffmpeg_find to get librarires ------------------------------ FFMPEG_FIND(LIBAVFORMAT avformat avformat.h) FFMPEG_FIND(LIBAVDEVICE avdevice avdevice.h) FFMPEG_FIND(LIBAVCODEC avcodec avcodec.h) FFMPEG_FIND(LIBAVUTIL avutil avutil.h) FFMPEG_FIND(LIBSWSCALE swscale swscale.h) # check if libs are found and set FFMPEG related variables #SET(FFMPEG_FOUND "NO") IF(FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVDEVICE_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND FFMPEG_LIBSWSCALE_FOUND) # All ffmpeg libs are here SET(FFMPEG_FOUND "YES") SET(FFMPEG_INCLUDE_DIR ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS}) SET(FFMPEG_LIBRARY_DIRS ${FFMPEG_LIBAVFORMAT_LIBRARY_DIRS}) SET(FFMPEG_LIBRARIES ${FFMPEG_LIBAVFORMAT_LIBS} ${FFMPEG_LIBAVDEVICE_LIBS} ${FFMPEG_LIBAVCODEC_LIBS} ${FFMPEG_LIBAVUTIL_LIBS} ${FFMPEG_LIBSWSCALE_LIBS} ) # add dynamic libraries if(WIN32) file(GLOB FFMPEG_DYNAMIC_LIBS "${FFMPEG_DIR}/bin/*.dll") if(NOT FFMPEG_DYNAMIC_LIBS) message("FFMPEG_DYNAMIC_LIBS is missing...") endif() set(FFMPEG_DYNAMIC_LIBS ${FFMPEG_DYNAMIC_LIBS} CACHE PATH "Windows dll location") endif() mark_as_advanced(FFMPEG_INCLUDE_DIR FFMPEG_LIBRARY_DIRS FFMPEG_LIBRARIES FFMPEG_DYNAMIC_LIBS) ELSE () MESSAGE(STATUS "Could not find FFMPEG") ENDIF() INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFMPEG REQUIRED_VARS FFMPEG_INCLUDE_DIR FFMPEG_LIBRARIES FAIL_MESSAGE "FFmpeg wasn't found correctly. Set FFMPEG_DIR to the root SDK installation directory." ) if(NOT FFMPEG_FOUND) set(FFMPEG_DIR "" CACHE STRING "Path to FFmpeg install directory") endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/Modules/FindGLFW.cmake ================================================ ##============================================================================= ## ## Copyright (c) Kitware, Inc. ## All rights reserved. ## See LICENSE.txt for details. ## ## This software is distributed WITHOUT ANY WARRANTY; without even ## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ## PURPOSE. See the above copyright notice for more information. ## ## Copyright 2016 Sandia Corporation. ## Copyright 2016 UT-Battelle, LLC. ## Copyright 2016 Los Alamos National Security. ## ## Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, ## the U.S. Government retains certain rights in this software. ## Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National ## Laboratory (LANL), the U.S. Government retains certain rights in ## this software. ## ##============================================================================= # Try to find EGL library and include dir. # Once done this will define # # GLFW_FOUND # GLFW_INCLUDE_DIR # GLFW_LIBRARY # include(FindPackageHandleStandardArgs) if (WIN32) find_path( GLFW_INCLUDE_DIR NAMES GLFW/glfw3.h PATHS ${PROJECT_SOURCE_DIR}/shared_external/glfw/include ${PROJECT_SOURCE_DIR}/../shared_external/glfw/include ${GLFW_LOCATION}/include $ENV{GLFW_LOCATION}/include $ENV{PROGRAMFILES}/GLFW/include ${GLFW_LOCATION} $ENV{GLFW_LOCATION} DOC "The directory where GLFW/glfw3.h resides" ) if(ARCH STREQUAL "x86") find_library( GLFW_LIBRARY NAMES glfw3 PATHS ${GLFW_LOCATION}/lib $ENV{GLFW_LOCATION}/lib $ENV{PROGRAMFILES}/GLFW/lib DOC "The GLFW library") else() find_library( GLFW_LIBRARY NAMES glfw3 PATHS ${GLFW_LOCATION}/lib $ENV{GLFW_LOCATION}/lib $ENV{PROGRAMFILES}/GLFW/lib DOC "The GLFW library") endif() endif () if (${CMAKE_HOST_UNIX}) message("GFLW LOCATION " $ENV{GLFW_LOCATION} ) find_path( GLFW_INCLUDE_DIR NAMES GLFW/glfw3.h PATHS # ${GLFW_LOCATION}/include $ENV{GLFW_LOCATION}/include # /usr/include # /usr/local/include # /sw/include # /opt/local/include # NO_DEFAULT_PATH DOC "The directory where GLFW/glfw3.h resides" ) find_library( GLFW_LIBRARY NAMES glfw3 glfw PATHS # ${GLFW_LOCATION}/lib $ENV{GLFW_LOCATION}/lib $ENV{GLFW_LOCATION}/lib64 # /usr/lib64 # /usr/lib # /usr/local/lib64 # /usr/local/lib # /sw/lib # /opt/local/lib # /usr/lib/x86_64-linux-gnu # NO_DEFAULT_PATH DOC "The GLFW library") set( GLFW_INCLUDE_DIR $ENV{GLFW_LOCATION}/include ) set( GLFW_LIBRARY $ENV{GLFW_LOCATION}/lib64/libglfw3.a ) message("*************==========> FindGLFW .cmake " ${GLFW_INCLUDE_DIR} " LIB " ${GLFW_LIBRARY} ) endif () find_package_handle_standard_args(GLFW DEFAULT_MSG GLFW_INCLUDE_DIR GLFW_LIBRARY ) mark_as_advanced( GLFW_FOUND ) ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/Win3rdParty.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## This file should be include and use only on WIN32 OS and once ## It allow to auto check/download and use a preconfigured 3rdParty binaries for cmake usage ## It use the downloadAndExtractZipFile cmake module to work. ## if(__Win3rdParty_cmake_INCLUDED__) return() else() set(__Win3rdParty_cmake_INCLUDED__ ON) endif() ## ## To be sure to reset an empty cached variable but keep any other kind of variables ## ## Usage: ## check_cached_var( [FORCE]) ## ## is the cached cmake variable you need to reset ## is the new default value of the reseted cached cmake variable ## is the kind of GUI cache input can be : FILEPATH; PATH; STRING or BOOL ## is the associated GUI cache input documentation display in the GUI ## FORCE option could be use to reset a cached variable even if it is not empty. ## macro(check_cached_var var resetedCachedValue cacheType cacheDoc) # message(STATUS "inside check_cached_var macro. argn=${ARGN}") cmake_parse_arguments(ccv "FORCE" "" "" ${ARGN}) if(ccv_FORCE) set(FORCE FORCE) else() set(FORCE ) endif() if(NOT ${var} OR ccv_FORCE) unset(${var} CACHE) # message(STATUS "setting new cache value. var ${var} = ${resetedCachedValue}") set(${var} "${resetedCachedValue}" CACHE ${cacheType} "${cacheDoc}" ${FORCE}) endif() endmacro() ## ## Win3rdParty function allow to specify a directory which contain all necessary windows dependenties. ## By uploading 3rdParty directory (which contain dependencies, *.lib, *.dll... for a specific version of compiler) onto Gforge file tab, ## you get back an URL of download you can give to this function with a directory name. So you can provide multiple 3rdParty version of same dependencies (MSVC11, MSVC12...). ## By providing a prefix to this function, you allow to use different kind of 3rdParty which can be handled by CMAKE OPTIONS depending on what your framework need for example. ## ## Usage 1: ## Win3rdParty( MSVC ## [MSVC ] [...] ## [VCID] [DEFAULT_USE] [VERBOSE] ) ## ## * allow to identify which 3rdParty you process (prefix name) ## * MSVC flag could be MSVC11 or MSVC12 (any element of the MSVC_VERSIONS_LIST) and refer to a 3rdParty compiler with : ## * which will be the local pathName of the downloaded 3rdParty : relative to CMAKE_BINARY_DIR ## * which is the link location of the 3rdParty zip ## * VCID flag will make available a cache variable ${prefix}_WIN3RDPARTY_VCID ## * DEFAULT_USE flag [ON|OFF] may be used to set default value of cmake cached variable : _WIN3RDPARTY_USE [default to ON] ## ## WARNING: ## This function define CACHE variables you can use after : ## * ${prefix}_WIN3RDPARTY_USE : allow to check/downloaded win3rdParty dir (it will force the cached variables for this dependency folder generally _DIR>) ## * ${prefix}_WIN3RDPARTY_DIR : where is your local win3rdParty dir (the PATH) ## * ${prefix}_WIN3RDPARTY_VCID : [if VCID flag is used] the MSVC id (commonly used to prefix/suffix library name, see boost or CGAL) ## ## If you want to add a win3rdParty version, please: ## 1- build dependencies on your local side with the compiler you want ## 2- build your own zip with your built dependencies ## 3- upload it (onto the forge where the project is stored) and copy the link location in order to use it for this function ## 4- if you just introduced a new MSVC version, add it to the MSVC_VERSIONS_LIST bellow ## ## In a second pass, you can also use this function to set necessary cmake cached variables in order to let cmake find packages of these 3rdParty. ## ## Usage 2: ## win3rdParty( [VERBOSE] MULTI_SET|SET ## CHECK_CACHED_VAR [LIST] [DOC ] ## [ CHECK_CACHED_VAR [LIST] [DOC ] ] [...] ## ## * MULTI_SET or SET flags are used to tell cmake that all next arguments will use repeated flags with differents entries (SET mean we will provide only one set of arguments, without repetition) ## * CHECK_CACHED_VAR are the repeated flag which contain differents entries ## * is the cmake variable you want to be cached for the project ## * is the kind of cmake variable (couble be: FILEPATH; PATH; STRING or BOOL) => see check_cached_var. ## * LIST optional flag could be used with CHECK_CACHED_VAR when = STRING. It allow to handle multiple STRINGS value list. ## * is the value of the variable (if FILEPATH, PATH or STRING: use quotes, if BOOL : use ON/OFF) ## * DOC optional flag is used to have a tooltips info about this new cmake variable entry into the GUI (use quotes). ## ## Full example 1 : ## win3rdParty(COMMON MSVC11 "win3rdParty-MSVC11" "https://path.to/an.archive.7z" ## SET CHECK_CACHED_VAR SuiteSparse_DIR PATH "SuiteSparse-4.2.1" DOC "default empty doc" ## ) ## ## WARNING: ## For the 2nd usage (with MULTI_SET), if you planned to set some CACHED_VAR using/composed by ${prefix}_WIN3RDPARTY_* just set in this macro (usage 1), ## then (due to the not yet existing var) you will need to call this function 2 times : ## One for the 1st usage (downloading of the current compiler 3rdParty). ## One for the MLUTI_SET flag which will use existsing ${prefix}_WIN3RDPARTY_* cached var. ## ## Full example 2 : ## win3rdParty(COMMON MSVC11 "win3rdParty-MSVC11" "https://path.to/an.archive.7z") ## win3rdParty(COMMON MULTI_SET ## CHECK_CACHED_VAR CGAL_INCLUDE_DIR PATH "CGAL-4.3/include" DOC "default empty doc" ## CHECK_CACHED_VAR CGAL_LIBRARIES STRING LIST "debug;CGAL-4.3/lib${LIB_POSTFIX}/CGAL-${WIN3RDPARTY_COMMON_VCID}-mt-gd-4.3.lib;optimized;CGAL-4.3/lib${LIB_POSTFIX}/CGAL-${WIN3RDPARTY_COMMON_VCID}-mt-4.3.lib" ## ## ## WARNING: This function use internaly : ## * downloadAndExtractZipFile.cmake ## * parse_arguments_multi.cmake ## * check_cached_var macro ## function(win3rdParty prefix ) # ARGV: list of all arguments given to the macro/function # ARGN: list of remaining arguments if(NOT WIN32) return() endif() ## set the handled version of MSVC ## if you plan to add a win3rdParty dir to download with a new MSVC version: build the win3rdParty dir and add the MSCV entry here. set(MSVC_VERSIONS_LIST "MSVC17;MSVC11;MSVC12;MSVC14") #include(CMakeParseArguments) # CMakeParseArguments is obsolete since cmake 3.5 # cmake_parse_arguments ( args) # : options (flags) pass to the macro # : options that neeed a value # : options that neeed more than one value cmake_parse_arguments(w3p "VCID" "VERBOSE;TIMEOUT;DEFAULT_USE" "${MSVC_VERSIONS_LIST};MULTI_SET;SET" ${ARGN}) # message(STATUS "value of w3p_VCID = ${w3p_VCID}") # message(STATUS "value of w3p_VERBOSE = ${w3p_VERBOSE}") # message(STATUS "value of w3p_TIMEOUT = ${w3p_TIMEOUT}") # message(STATUS "value of w3p_DEFAULT_USE = ${w3p_DEFAULT_USE}") # foreach (loop_var ${MSVC_VERSIONS_LIST}) # message(STATUS "value of w3p_${loop_var} = ${w3p_${loop_var}}") # endforeach(loop_var) # message(STATUS "value of w3p_MULTI_SET = ${w3p_MULTI_SET}") # message(STATUS "value of w3p_SET = ${w3p_SET}") # message("values for MSVC = ${w3p_MSVC14}") if(NOT w3p_TIMEOUT) set(w3p_TIMEOUT 300) endif() if(NOT DEFINED w3p_DEFAULT_USE) set(w3p_DEFAULT_USE ON) endif() ## 1st use (check/update|download) : set(${prefix}_WIN3RDPARTY_USE ${w3p_DEFAULT_USE} CACHE BOOL "Use required 3rdParty binaries from ${prefix}_WIN3RDPARTY_DIR or download it if not exist") ## We want to test if each version of MSVC was filled by the function (see associated parameters) ## As CMake is running only for one version of MSVC, if that MSVC version was filled, we get back associated parameters, ## otherwise we can't use the downloadAndExtractZipFile with win3rdParty. set(enableWin3rdParty OFF) foreach(MSVC_VER ${MSVC_VERSIONS_LIST}) if(${MSVC_VER} AND w3p_${MSVC_VER} OR ${MSVC_TOOLSET_VERSION} EQUAL 143 AND ${MSVC_VER} STREQUAL "MSVC17") list(LENGTH w3p_${MSVC_VER} count) if("${count}" LESS "2") #message(WARNING "You are using ${MSVC_VER} with ${prefix}_WIN3RDPARTY_USE=${${prefix}_WIN3RDPARTY_USE}, but win3rdParty function isn't filled for ${MSVC_VER}!") else() list(GET w3p_${MSVC_VER} 0 Win3rdPartyName) list(GET w3p_${MSVC_VER} 1 Win3rdPartyUrl) if(w3p_VCID) ## try to get the VcId of MSVC. See also MSVC_VERSION cmake var in the doc. string(REGEX REPLACE "MS([A-Za-z_0-9-]+)" "\\1" vcId ${MSVC_VER}) string(TOLOWER ${vcId} vcId) set(${prefix}_WIN3RDPARTY_VCID "${vcId}0" CACHE STRING "the MSVC id (commonly used to prefix/suffix library name, see boost or CGAL)") mark_as_advanced(${prefix}_WIN3RDPARTY_VCID) endif() set(enableWin3rdParty ON) set(suffixCompilerID ${MSVC_VER}) break() endif() endif() endforeach() ## If previous step succeed to get MSVC dirname and URL of the current MSVC version, use it to auto download/update the win3rdParty dir if(enableWin3rdParty AND ${prefix}_WIN3RDPARTY_USE) if(IS_ABSOLUTE "${Win3rdPartyName}") else() set(Win3rdPartyName "${CMAKE_BINARY_DIR}/${Win3rdPartyName}") endif() if(NOT EXISTS "${Win3rdPartyName}") file(MAKE_DIRECTORY ${Win3rdPartyName}) endif() include(downloadAndExtractZipFile) downloadAndExtractZipFile( "${Win3rdPartyUrl}" ## URL link location "Win3rdParty-${prefix}-${suffixCompilerID}.7z" ## where download it: relative path, so default to CMAKE_BINARY_DIR "${Win3rdPartyName}" ## where extract it : fullPath (default relative to CMAKE_BINARY_DIR) CHECK_DIRTY_URL "${Win3rdPartyName}/Win3rdPartyUrl" ## last downloaded url file : fullPath (default relative to CMAKE_BINARY_DIR) TIMEOUT ${w3p_TIMEOUT} VERBOSE ${w3p_VERBOSE} ) file(GLOB checkDl "${Win3rdPartyName}/*") list(LENGTH checkDl checkDlCount) if("${checkDlCount}" GREATER "1") else() message("The downloadAndExtractZipFile didn't work...?") set(enableWin3rdParty OFF) endif() endif() ## Try to auto set ${prefix}_WIN3RDPARTY_DIR or let user set it manually set(${prefix}_WIN3RDPARTY_DIR "" CACHE PATH "windows ${Win3rdPartyName} dir to ${prefix} dependencies of the project") if(NOT ${prefix}_WIN3RDPARTY_DIR AND ${prefix}_WIN3RDPARTY_USE) if(EXISTS "${Win3rdPartyName}") unset(${prefix}_WIN3RDPARTY_DIR CACHE) set(${prefix}_WIN3RDPARTY_DIR "${Win3rdPartyName}" CACHE PATH "dir to ${prefix} dependencies of the project") endif() endif() if(EXISTS ${${prefix}_WIN3RDPARTY_DIR}) message(STATUS "Found a 3rdParty ${prefix} dir : ${${prefix}_WIN3RDPARTY_DIR}.") set(enableWin3rdParty ON) elseif(${prefix}_WIN3RDPARTY_USE) message(WARNING "${prefix}_WIN3RDPARTY_USE=${${prefix}_WIN3RDPARTY_USE} but ${prefix}_WIN3RDPARTY_DIR=${${prefix}_WIN3RDPARTY_DIR}.") set(enableWin3rdParty OFF) endif() ## Final check if(NOT enableWin3rdParty) message("Disable ${prefix}_WIN3RDPARTY_USE (cmake cached var will be not set), due to a win3rdParty problem.") message("You still can set ${prefix}_WIN3RDPARTY_DIR to an already downloaded Win3rdParty directory location.") set(${prefix}_WIN3RDPARTY_USE OFF CACHE BOOL "Use required 3rdParty binaries from ${prefix}_WIN3RDPARTY_DIR or download it if not exist" FORCE) endif() ## 2nd use : handle multi values args to set cached cmake variables in order to ease the next find_package call if(${prefix}_WIN3RDPARTY_USE AND ${prefix}_WIN3RDPARTY_DIR) if(w3p_VERBOSE) message(STATUS "Try to set cmake cached variables for ${prefix} required libraries directly from : ${${prefix}_WIN3RDPARTY_DIR}.") endif() include(parse_arguments_multi) # message (STATUS "before defining an override of parse_arguments_multi_function") function(parse_arguments_multi_function ) ## overloaded function to handle all CHECK_CACHED_VAR values list (see: parse_arguments_multi) # message(STATUS "inside overloaded parse_arguments_multi_function defined in Win3rdParty.cmake") # message(STATUS ${ARGN}) ## we know the function take 3 args : var cacheType resetedCachedValue (see check_cached_var) cmake_parse_arguments(pamf "" "DOC" "LIST" ${ARGN}) ## var and cacheType are mandatory (with the resetedCachedValue) set(var ${ARGV0}) set(cacheType ${ARGV1}) # message(STATUS "var=${var} and cacheType=${cacheType} list=${pamf_LIST}") if(pamf_DOC) set(cacheDoc ${pamf_DOC}) else() set(cacheDoc "") endif() if(pamf_LIST) set(value ${pamf_LIST}) else() # message("USING ARGV2 with value ${ARGV2}") set(value ${ARGV2}) endif() # message("inside override function in Win3rdparty.cmake value+ ${value}") if("${cacheType}" MATCHES "PATH" AND EXISTS "${${prefix}_WIN3RDPARTY_DIR}/${value}") # message("math with path") set(resetedCachedValue "${${prefix}_WIN3RDPARTY_DIR}/${value}") ## path relative to ${prefix}_WIN3RDPARTY_DIR elseif ("${cacheType}" MATCHES "PATH" AND EXISTS "${${prefix}_WIN3RDPARTY_DIR}") set(resetedCachedValue "${${prefix}_WIN3RDPARTY_DIR}") ## path relative to ${prefix}_WIN3RDPARTY_DIR elseif("${cacheType}" MATCHES "STRING") foreach(var IN LISTS value) if(EXISTS "${${prefix}_WIN3RDPARTY_DIR}/${var}") list(APPEND resetedCachedValue "${${prefix}_WIN3RDPARTY_DIR}/${var}") ## string item of the string list is a path => make relative to ${prefix}_WIN3RDPARTY_DIR else() list(APPEND resetedCachedValue ${var}) ## string item of the string list is not an existing path => simply use the item endif() endforeach() else() set(resetedCachedValue "${value}") ## could be a BOOL or a STRING endif() ## call our macro to reset cmake cache variable if empty check_cached_var(${var} "${resetedCachedValue}" ${cacheType} "${cacheDoc}" FORCE) endfunction() # message (STATUS "after defining an override of parse_arguments_multi_function") if(w3p_MULTI_SET) parse_arguments_multi(CHECK_CACHED_VAR w3p_MULTI_SET ${w3p_MULTI_SET}) ## internaly will call our overloaded parse_arguments_multi_function elseif(w3p_SET) # message("calling set version of parse_arguments_multi with w3p_set = ${w3p_SET}") parse_arguments_multi(CHECK_CACHED_VAR w3p_SET ${w3p_SET}) endif() endif() endfunction() ## cmake variables introspection to globally activate/deactivate ${prefix}_WIN3RDPARTY_USE ## This "one shot" call (only one for the next cmake configure) will automatically then reset the global variable WIN3RDPARTY_USE to UserDefined (do nothing). ## use (call it) before and after the call of all your win3rdParty functions function(Win3rdPartyGlobalCacheAction ) set(WIN3RDPARTY_USE "UserDefined" CACHE STRING "Choose how to handle all cmake cached *_WIN3RDPARTY_USE for the next configure.\nCould be:\nUserDefined [default]\nActivateAll\nDesactivateAll" ) set_property(CACHE WIN3RDPARTY_USE PROPERTY STRINGS "UserDefined;ActivateAll;DesactivateAll" ) if(${WIN3RDPARTY_USE} MATCHES "UserDefined") else() if(${WIN3RDPARTY_USE} MATCHES "ActivateAll") set(win3rdPvalue ON) elseif(${WIN3RDPARTY_USE} MATCHES "DesactivateAll") set(win3rdPvalue OFF) endif() get_cmake_property(_variableNames CACHE_VARIABLES) foreach (_variableName ${_variableNames}) string(REGEX MATCH "[A-Za-z_0-9-]+_WIN3RDPARTY_USE" win3rdpartyUseCacheVar ${_variableName}) if(win3rdpartyUseCacheVar) string(REGEX REPLACE "([A-Za-z_0-9-]+_WIN3RDPARTY_USE)" "\\1" win3rdpartyUseCacheVar ${_variableName}) set(${win3rdpartyUseCacheVar} ${win3rdPvalue} CACHE BOOL "Use required 3rdParty binaries from ${prefix}_WIN3RDPARTY_DIR or download it if not exist" FORCE) message(STATUS "${win3rdpartyUseCacheVar} cached variable set to ${win3rdPvalue}.") endif() endforeach() set(WIN3RDPARTY_USE "UserDefined" CACHE STRING "Choose how to handle all cmake cached *_WIN3RDPARTY_USE for the next configure.\nCould be:\nUserDefined [default]\nActivateAll\nDesactivateAll" FORCE) message(STATUS "reset WIN3RDPARTY_USE to UserDefined.") endif() mark_as_advanced(WIN3RDPARTY_USE) endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/cmake_policies.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(__set_policies_INCLUDED__) return() else() set(__set_policies_INCLUDED__ ON) endif() macro(setPolicies) # No more policies to enforce endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/dependencies.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Included once for all sub project. ## It contain the whole cmake instructions to find necessary common dependencies. ## 3rdParty (provided by sibr_addlibrary win3rdParty or from external packages) are then available in cmake sub projects. ## ## Do not include this file more than once but you can modify it to fit to your own project. ## So please, read it carefully because you can use on of these dependencies for your project or appen new one. ## ## As it is included after camke options, you can use conditional if()/endif() to encapsulate your 3rdParty. ## ## win3rdParty function allowing to auto check/download/update binaries dependencies for current windows compiler ## Please open this file in order to get more documentation and usage examples. include(Win3rdParty) include(sibr_library) Win3rdPartyGlobalCacheAction() find_package(OpenGL REQUIRED) set(OpenGL_GL_PREFERENCE "GLVND") ############ ## Find GLEW ############ ##for headless rendering find_package(EGL QUIET) if(EGL_FOUND) add_definitions(-DGLEW_EGL) message("Activating EGL support for headless GLFW/GLEW") else() message("EGL not found : EGL support for headless GLFW/GLEW is disabled") endif() if (MSVC11 OR MSVC12) set(glew_multiset_arguments CHECK_CACHED_VAR GLEW_INCLUDE_DIR PATH "glew-1.10.0/include" DOC "default empty doc" CHECK_CACHED_VAR GLEW_LIBRARIES STRING LIST "debug;glew-1.10.0/${LIB_BUILT_DIR}/glew32d.lib;optimized;glew-1.10.0/${LIB_BUILT_DIR}/glew32.lib" DOC "default empty doc" ) elseif (MSVC14) set(glew_multiset_arguments CHECK_CACHED_VAR GLEW_INCLUDE_DIR PATH "glew-2.0.0/include" DOC "default empty doc" CHECK_CACHED_VAR GLEW_SHARED_LIBRARY_RELEASE PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32.lib" CHECK_CACHED_VAR GLEW_STATIC_LIBRARY_RELEASE PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32s.lib" CHECK_CACHED_VAR GLEW_SHARED_LIBRARY_DEBUG PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32d.lib" CHECK_CACHED_VAR GLEW_STATIC_LIBRARY_DEBUG PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32sd.lib" ) else () message("There is no provided GLEW library for your compiler, relying on find_package to find it") endif() sibr_addlibrary(NAME GLEW #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/glew-1.10.0.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/glew-1.10.0.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glew-2.0.0.7z" # using recompiled version of glew MULTI_SET ${glew_multiset_arguments} ) set(GLEW_VERBOSE ON) FIND_PACKAGE(GLEW REQUIRED) IF(GLEW_FOUND) INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) ELSE(GLEW_FOUND) MESSAGE("GLEW not found. Set GLEW_DIR to base directory of GLEW.") ENDIF(GLEW_FOUND) ############## ## Find ASSIMP ############## if (MSVC11 OR MSVC12) set(assimp_set_arguments CHECK_CACHED_VAR ASSIMP_DIR PATH "Assimp_3.1_fix" ) elseif (MSVC14) set(assimp_set_arguments CHECK_CACHED_VAR ASSIMP_DIR PATH "Assimp-4.1.0" ) else () message("There is no provided ASSIMP library for your compiler, relying on find_package to find it") endif() sibr_addlibrary(NAME ASSIMP #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/Assimp_3.1_fix.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/Assimp_3.1_fix.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/Assimp-4.1.0.7z" MULTI_SET ${assimp_set_arguments} ) find_package(ASSIMP REQUIRED) include_directories(${ASSIMP_INCLUDE_DIR}) ################ ## Find FFMPEG ################ sibr_addlibrary(NAME FFMPEG MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/ffmpeg.zip" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/ffmpeg.zip" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/ffmpeg-4.0.2-win64-win3rdParty.7z" SET CHECK_CACHED_VAR FFMPEG_DIR PATH ${FFMPEG_WIN3RDPARTY_DIR} ) find_package(FFMPEG) include_directories(${FFMPEG_INCLUDE_DIR}) ## COMMENT OUT ALL FFMPEG FOR CLUSTER ################### ## Find embree3 ################### sibr_addlibrary( NAME embree3 MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/embree2.7.0.x64.windows.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/embree-3.6.1.x64.vc14.windows.7z" # TODO SV: provide a valid version if required ) # CLUSTER #find_package(embree 3.0 REQUIRED PATHS "/data/graphdeco/share/embree/usr/local/lib64/cmake/" ) find_package(embree 3.0 ) ################### ## Find eigen3 ################### sibr_addlibrary( NAME eigen3 #MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/eigen-eigen-dc6cfdf9bcec.7z" #MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/eigen-eigen-dc6cfdf9bcec.7z" # TODO SV: provide a valid version if required MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/eigen3.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/eigen3.7z" SET CHECK_CACHED_VAR eigen3_DIR PATH "eigen/share/eigen3/cmake" ) include_directories(/usr/include/eigen3) add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO) ############# ## Find Boost ############# set(Boost_REQUIRED_COMPONENTS "system;chrono;filesystem;date_time" CACHE INTERNAL "Boost Required Components") if (WIN32) # boost multiset arguments if (MSVC11 OR MSVC12) set(boost_multiset_arguments CHECK_CACHED_VAR BOOST_ROOT PATH "boost_1_55_0" CHECK_CACHED_VAR BOOST_INCLUDEDIR PATH "boost_1_55_0" CHECK_CACHED_VAR BOOST_LIBRARYDIR PATH "boost_1_55_0/${LIB_BUILT_DIR}" #CHECK_CACHED_VAR Boost_COMPILER STRING "-${Boost_WIN3RDPARTY_VCID}" DOC "vcid (eg: -vc110 for MSVC11)" CHECK_CACHED_VAR Boost_COMPILER STRING "-vc110" DOC "vcid (eg: -vc110 for MSVC11)" # NOTE: if it doesnt work, uncomment this option and set the right value for VisualC id ) elseif (MSVC14) set(boost_multiset_arguments CHECK_CACHED_VAR BOOST_ROOT PATH "boost-1.71" CHECK_CACHED_VAR BOOST_INCLUDEDIR PATH "boost-1.71" CHECK_CACHED_VAR BOOST_LIBRARYDIR PATH "boost-1.71/${LIB_BUILT_DIR}" CHECK_CACHED_VAR Boost_COMPILER STRING "-vc141" DOC "vcid (eg: -vc110 for MSVC11)" # NOTE: if it doesnt work, uncomment this option and set the right value for VisualC id ) option(BOOST_MINIMAL_VERSION "Only get minimal Boost dependencies" ON) if(${BOOST_MINIMAL_VERSION}) set(BOOST_MSVC14_ZIP "boost-1.71-ibr-minimal.7z") else() set(BOOST_MSVC14_ZIP "boost-1.71.7z") endif() else () message("There is no provided Boost library for your compiler, relying on find_package to find it") endif() sibr_addlibrary(NAME Boost VCID TIMEOUT 600 #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/boost_1_55_0.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/boost_1_55_0.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/${BOOST_MSVC14_ZIP}" # boost compatible with msvc14 MULTI_SET ${boost_multiset_arguments} CHECK_CACHED_VAR Boost_NO_SYSTEM_PATHS BOOL ON DOC "Set to ON to disable searching in locations not specified by these boost cached hint variables" CHECK_CACHED_VAR Boost_NO_BOOST_CMAKE BOOL ON DOC "Set to ON to disable the search for boost-cmake (package cmake config file if boost was built with cmake)" ) if(NOT Boost_COMPILER AND Boost_WIN3RDPARTY_USE) message(WARNING "Boost_COMPILER is not set and it's needed.") endif() endif() find_package(Boost 1.65.0 REQUIRED COMPONENTS ${Boost_REQUIRED_COMPONENTS}) # for CLUSTER ##find_package(Boost 1.58.0 REQUIRED COMPONENTS ${Boost_REQUIRED_COMPONENTS}) if(WIN32) add_compile_options("$<$:/EHsc>") #add_definitions(/EHsc) endif() if(Boost_LIB_DIAGNOSTIC_DEFINITIONS) add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) endif() #if(WIN32) add_definitions(-DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB) #endif() include_directories(${BOOST_INCLUDEDIR} ${Boost_INCLUDE_DIRS}) link_directories(${BOOST_LIBRARYDIR} ${Boost_LIBRARY_DIRS}) ############## ## Find OpenMP ############## find_package(OpenMP) ############## ## Find OpenCV ############## if (WIN32) if (${MSVC_TOOLSET_VERSION} EQUAL 143) MESSAGE("SPECIAL OPENCV HANDLING") set(opencv_set_arguments CHECK_CACHED_VAR OpenCV_DIR PATH "install" ## see OpenCVConfig.cmake ) elseif (MSVC11 OR MSVC12) set(opencv_set_arguments CHECK_CACHED_VAR OpenCV_DIR PATH "opencv/build" ## see OpenCVConfig.cmake ) elseif (MSVC14) set(opencv_set_arguments CHECK_CACHED_VAR OpenCV_DIR PATH "opencv-4.5.0/build" ## see OpenCVConfig.cmake ) else () message("There is no provided OpenCV library for your compiler, relying on find_package to find it") endif() else() message("There is no provided OpenCV library for your compiler, relying on find_package to find it") endif() sibr_addlibrary(NAME OpenCV #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv-4.5.0.7z" # opencv compatible with msvc14 and with contribs MSVC17 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv4-8.7z" SET ${opencv_set_arguments} ) find_package(OpenCV 4.5 REQUIRED) ## Use directly the OpenCVConfig.cmake provided ## FOR CLUSTER ###find_package(OpenCV 4.5 REQUIRED PATHS "/data/graphdeco/share/opencv/usr/local/lib64/cmake/opencv4/" ) ## Use directly the OpenCVConfig.cmake provided ##https://stackoverflow.com/questions/24262081/cmake-relwithdebinfo-links-to-debug-libs set_target_properties(${OpenCV_LIBS} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) add_definitions(-DOPENCV_TRAITS_ENABLE_DEPRECATED) if(OpenCV_INCLUDE_DIRS) foreach(inc ${OpenCV_INCLUDE_DIRS}) if(NOT EXISTS ${inc}) set(OpenCV_INCLUDE_DIR "" CACHE PATH "additional custom include DIR (in case of trouble to find it (fedora 17 opencv package))") endif() endforeach() if(OpenCV_INCLUDE_DIR) list(APPEND OpenCV_INCLUDE_DIRS ${OpenCV_INCLUDE_DIR}) include_directories(${OpenCV_INCLUDE_DIRS}) endif() endif() ################### ## Find GLFW ################### sibr_addlibrary( NAME glfw3 MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glfw-3.2.1.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glfw-3.2.1.7z" # TODO SV: provide a valid version if required SET CHECK_CACHED_VAR glfw3_DIR PATH "glfw-3.2.1" ) ### FOR CLUSTER COMMENT OUT lines above, uncomment lines below ##find_package(GLFW REQUIRED 3.3 ) ##message("***********=============> GLFW IS " ${GLFW_LIBRARY}) ##message("***********=============> GLFW IS " ${GLFW_LIBRARIES}) find_package(glfw3 REQUIRED) sibr_gitlibrary(TARGET imgui GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/imgui.git" GIT_TAG "741fb3ab6c7e1f7cef23ad0501a06b7c2b354944" ) ## FOR CLUSTER COMMENT OUT nativefiledialog sibr_gitlibrary(TARGET nativefiledialog GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/nativefiledialog.git" GIT_TAG "ae2fab73cf44bebdc08d997e307c8df30bb9acec" ) sibr_gitlibrary(TARGET mrf GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/mrf.git" GIT_TAG "30c3c9494a00b6346d72a9e37761824c6f2b7207" ) sibr_gitlibrary(TARGET nanoflann GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/nanoflann.git" GIT_TAG "7a20a9ac0a1d34850fc3a9e398fc4a7618e8a69a" ) sibr_gitlibrary(TARGET picojson GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/picojson.git" GIT_TAG "7cf8feee93c8383dddbcb6b64cf40b04e007c49f" ) sibr_gitlibrary(TARGET rapidxml GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/rapidxml.git" GIT_TAG "069e87f5ec5ce1745253bd64d89644d6b894e516" ) sibr_gitlibrary(TARGET xatlas GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/xatlas.git" GIT_TAG "0fbe06a5368da13fcdc3ee48d4bdb2919ed2a249" INCLUDE_DIRS "source/xatlas" ) Win3rdPartyGlobalCacheAction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/downloadAndExtractZipFile.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## downloadAndExtractZipFile cmake function ## Provide a way to download zip file from public internet ZIP_URL host ## and to extract it in a specific EXCTRATED_ZIP_PATH destination. ## This function use 7-Zip external tool to maximize the compatibles formats. ## This will be not download again if the EXCTRATED_ZIP_PATH already exist and DL_FORCE is set to OFF. ## This will try to unzip file if already exist in the ZIP_DL_PATH. ## ## If EXCTRATED_ZIP_PATH and/or ZIP_DL_PATH are not full path, ## it will be interpreted relative to CMAKE_BINARY_DIR ## ## Usage example : ## include(downloadAndExtractZipFile) ## downloadAndExtractZipFile( ## http://www.cs.cornell.edu/~snavely/bundler/distr/bundler-v0.4-source.zip ## ${CMAKE_BINARY_DIR}/Bundler/bundler-v0.4-source.zip ## ${CMAKE_BINARY_DIR}/Bundler ## [DL_FORCE ON|OFF] ## [TIMEOUT] ## [CHECK_DIRTY_URL] ## ) ## ## option DL_FORCE will redownload the zip file [deafult to OFF] ## option TIMEOUT will end the unzip process after this period of time [default to 600s] ## option CHECK_DIRTY_URL will write into the given file the downloaded URL and then, ## next time, if the URL was updated, it detect it with this file ## and will download the last version. This prevent to alway set manually DL_FORCE to ON... ## if(__downloadAndExtractZipFile_cmake_INCLUDED__) return() else() set(__downloadAndExtractZipFile_cmake_INCLUDED__ ON) endif() function(downloadAndExtractZipFile ZIP_URL ZIP_DL_PATH EXCTRATED_ZIP_PATH) # message(STATUS "zipUrl=${ZIP_URL} zipDlPath=${ZIP_DL_PATH} extractedZipPath=${EXCTRATED_ZIP_PATH}") cmake_parse_arguments(dwnlezf "" "VERBOSE;DL_FORCE;TIMEOUT;CHECK_DIRTY_URL" "" ${ARGN}) set(PROGRAMFILESx86 "PROGRAMFILES(x86)") ## Check entries mandatory args if(IS_ABSOLUTE "${ZIP_DL_PATH}") else() set(ZIP_DL_PATH "${CMAKE_BINARY_DIR}/${ZIP_DL_PATH}") endif() if(IS_ABSOLUTE "${EXCTRATED_ZIP_PATH}") else() set(EXCTRATED_ZIP_PATH "${CMAKE_BINARY_DIR}/${EXCTRATED_ZIP_PATH}") endif() if(NOT EXISTS "${EXCTRATED_ZIP_PATH}") file(MAKE_DIRECTORY ${EXCTRATED_ZIP_PATH}) endif() # SB: Once, one of downloaded zip was corrupted by an error message coming from the server. if(EXISTS "${ZIP_DL_PATH}") # So I check for removing such corrupted files message("Removing previous ${ZIP_DL_PATH} (might be corrupted)") file(REMOVE "${ZIP_DL_PATH}") if(EXISTS "${dwnlezf_CHECK_DIRTY_URL}") # and remove the previous (corrupted) made 'Win3rdPartyUrl' file file(REMOVE "${dwnlezf_CHECK_DIRTY_URL}") endif() endif() ## Check entries optional args macro(readDirtyUrl ) if(dwnlezf_CHECK_DIRTY_URL) if(IS_ABSOLUTE "${dwnlezf_CHECK_DIRTY_URL}") else() set(dwnlezf_CHECK_DIRTY_URL "${CMAKE_BINARY_DIR}/${dwnlezf_CHECK_DIRTY_URL}") endif() get_filename_component(unzipDir ${EXCTRATED_ZIP_PATH} NAME) get_filename_component(unzipPath ${EXCTRATED_ZIP_PATH} PATH) message(STATUS "Checking ${unzipDir} [from ${unzipPath}]...") if(EXISTS "${dwnlezf_CHECK_DIRTY_URL}") get_filename_component(CHECK_DIRTY_URL_FILENAME ${dwnlezf_CHECK_DIRTY_URL} NAME) file(STRINGS "${dwnlezf_CHECK_DIRTY_URL}" contents) list(GET contents 0 downloadURL) list(REMOVE_AT contents 0) if("${downloadURL}" MATCHES "${ZIP_URL}") if(dwnlezf_VERBOSE) message(STATUS "Your downloaded version (URL) seems to be up to date. Let me check if nothing is missing... (see ${dwnlezf_CHECK_DIRTY_URL}).") endif() file(GLOB PATHNAME_PATTERN_LIST "${EXCTRATED_ZIP_PATH}/*") ## is there something inside the downloaded destination ? unset(NAME_PATTERN_LIST) foreach(realPathPattern ${PATHNAME_PATTERN_LIST}) get_filename_component(itemName ${realPathPattern} NAME) list(APPEND NAME_PATTERN_LIST ${itemName}) endforeach() if(NAME_PATTERN_LIST) foreach(item ${contents}) list(FIND NAME_PATTERN_LIST ${item} id) if(${id} MATCHES "-1") message(STATUS "${item} is missing, your downloaded version content changed, need to redownload it.") set(ZIP_DL_FORCE ON) break() else() list(REMOVE_AT NAME_PATTERN_LIST ${id}) set(ZIP_DL_FORCE OFF) endif() endforeach() if(NOT ZIP_DL_FORCE AND NAME_PATTERN_LIST) message("Yours seems to be up to date (regarding to ${CHECK_DIRTY_URL_FILENAME})!\nBut there are additional files/folders into your downloaded destination (feel free to clean it if you want).") foreach(item ${NAME_PATTERN_LIST}) if(item) message("${item}") endif() endforeach() endif() endif() else() set(ZIP_DL_FORCE ON) message(STATUS "Your downloaded version is dirty (too old).") endif() else() file(GLOB PATHNAME_PATTERN_LIST "${EXCTRATED_ZIP_PATH}/*") ## is there something inside the downloaded destination ? if(NOT PATHNAME_PATTERN_LIST) message("We found nothing into ${EXCTRATED_ZIP_PATH}, we will try to download it for you now.") endif() set(ZIP_DL_FORCE ON) endif() endif() endmacro() readDirtyUrl() if(NOT ZIP_DL_FORCE) return() ## do not need to further (as we are up to date, just exit the function endif() macro(writeDirtyUrl ) if(dwnlezf_CHECK_DIRTY_URL) file(WRITE "${dwnlezf_CHECK_DIRTY_URL}" "${ZIP_URL}\n") file(GLOB PATHNAME_PATTERN_LIST "${EXCTRATED_ZIP_PATH}/*") ## is there something inside the downloaded destination ? unset(NAME_PATTERN_LIST) foreach(realPathPattern ${PATHNAME_PATTERN_LIST}) get_filename_component(itemName ${realPathPattern} NAME) list(APPEND NAME_PATTERN_LIST ${itemName}) endforeach() if(NAME_PATTERN_LIST) foreach(item ${NAME_PATTERN_LIST}) file(APPEND "${dwnlezf_CHECK_DIRTY_URL}" "${item}\n") endforeach() endif() endif() endmacro() if(dwnlezf_DL_FORCE) set(ZIP_DL_FORCE ON) endif() if(NOT dwnlezf_TIMEOUT) set(dwnlezf_TIMEOUT 600) endif() math(EXPR dwnlezf_TIMEOUT_MIN "${dwnlezf_TIMEOUT}/60") macro(unzip whichZipFile) if(NOT SEVEN_ZIP_CMD) find_program(SEVEN_ZIP_CMD NAMES 7z 7za p7zip DOC "7-zip executable" PATHS "$ENV{PROGRAMFILES}/7-Zip" "$ENV{${PROGRAMFILESx86}}/7-Zip" "$ENV{ProgramW6432}/7-Zip") endif() if(SEVEN_ZIP_CMD) if(dwnlezf_VERBOSE) message(STATUS "UNZIP: please, WAIT UNTIL ${SEVEN_ZIP_CMD} finished...\n(no more than ${dwnlezf_TIMEOUT_MIN} min)") else() message(STATUS "UNZIP...wait...") endif() execute_process( COMMAND ${SEVEN_ZIP_CMD} x ${whichZipFile} -y WORKING_DIRECTORY ${EXCTRATED_ZIP_PATH} TIMEOUT ${dwnlezf_TIMEOUT} RESULT_VARIABLE resVar OUTPUT_VARIABLE outVar ERROR_VARIABLE errVar ) if(${resVar} MATCHES "0") if(dwnlezf_VERBOSE) message(STATUS "SUCESS to unzip in ${EXCTRATED_ZIP_PATH}. Now we can remove the downloaded zip file.") endif() execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${whichZipFile}) mark_as_advanced(SEVEN_ZIP_CMD) else() message(WARNING "something wrong in ${EXCTRATED_ZIP_PATH}\n with \"${SEVEN_ZIP_CMD} x ${whichZipFile} -y\", redo or try to unzip by yourself...") message("unzip: resVar=${resVar}") message("unzip: outVar=${outVar}") message("unzip: errVar=${errVar}") message("unzip: failed or canceled or timeout") endif() else() message(WARNING "You need 7zip (http://www.7-zip.org/download.html) to unzip the downloaded dir.") set(SEVEN_ZIP_CMD "" CACHE FILEPATH "7-zip executable") mark_as_advanced(CLEAR SEVEN_ZIP_CMD) endif() endmacro() if(dwnlezf_VERBOSE) message(STATUS "Trying to look ${ZIP_DL_PATH} if a zip file exist...") endif() if(EXISTS "${ZIP_DL_PATH}") ## already downloaded, so just unzip it unzip(${ZIP_DL_PATH}) writeDirtyUrl() elseif(ZIP_DL_FORCE) ## the download part (+ unzip) message(STATUS "Let me try to download package for you : ${ZIP_URL}") if(dwnlezf_VERBOSE) message(STATUS "Downloading...\n SRC=${ZIP_URL}\n DEST=${ZIP_DL_PATH}.tmp\n INACTIVITY_TIMEOUT=180s") endif() file(DOWNLOAD ${ZIP_URL} ${ZIP_DL_PATH}.tmp INACTIVITY_TIMEOUT 360 STATUS status SHOW_PROGRESS) list(GET status 0 numResult) if(${numResult} MATCHES "0") if(dwnlezf_VERBOSE) message(STATUS "Download succeed, so let me rename the tmp file to unzip it") endif() execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${ZIP_DL_PATH}.tmp ${ZIP_DL_PATH}) unzip(${ZIP_DL_PATH}) writeDirtyUrl() else() list(GET status 1 errMsg) message(WARNING "DOWNLOAD ${ZIP_URL} to ${ZIP_DL_PATH} failed\n:${errMsg}") message(WARNING "OK, you need to download the ${ZIP_URL} manually and put it into ${ZIP_DL_PATH}") message("Take a look at the project website page to check available URL.") endif() endif() ## clean up the tmp downloaded file if(EXISTS "${ZIP_DL_PATH}.tmp") execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${ZIP_DL_PATH}.tmp) endif() endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/git_describe.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(__git_describe_INCLUDED__) return() else() set(__git_describe_INCLUDED__ ON) endif() find_package(Git) if(Git_FOUND) message(STATUS "Git found: ${GIT_EXECUTABLE}") else() message(FATAL_ERROR "Git not found. Aborting") endif() macro(git_describe) cmake_parse_arguments(GIT_DESCRIBE "" "GIT_URL;GIT_BRANCH;GIT_COMMIT_HASH;GIT_TAG;GIT_VERSION;PATH" "" ${ARGN}) if(NOT GIT_DESCRIBE_PATH) set(GIT_DESCRIBE_PATH ${CMAKE_SOURCE_DIR}) endif() if(GIT_DESCRIBE_GIT_URL) # Get the current remote execute_process( COMMAND git remote WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE GIT_DESCRIBE_GIT_REMOTE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) # Get the current remote execute_process( COMMAND git remote get-url ${GIT_DESCRIBE_GIT_REMOTE} WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_URL} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_BRANCH) # Get the current working branch execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_BRANCH} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_COMMIT_HASH) # Get the latest abbreviated commit hash of the working branch execute_process( COMMAND git rev-parse HEAD WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_COMMIT_HASH} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_TAG) # Get the tag execute_process( COMMAND git describe --tags --exact-match WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_TAG} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_VERSION) # Get the version from git describe execute_process( COMMAND git describe WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_VERSION} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) if(${GIT_DESCRIBE_GIT_VERSION} STREQUAL "") execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE GIT_DESCRIBE_GIT_VERSION_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) execute_process( COMMAND git log -1 --format=%h WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE GIT_DESCRIBE_GIT_VERSION_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) set(${GIT_DESCRIBE_GIT_VERSION} "${GIT_DESCRIBE_GIT_VERSION_BRANCH}-${GIT_DESCRIBE_GIT_VERSION_COMMIT}") endif() endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/include_once.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr macro(include_once file) get_filename_component(INCLUDE_ONCE_FILEPATH ${file} REALPATH) string(REGEX REPLACE "(\\.|\\/+|\\:|\\\\+)" "_" INCLUDE_ONCE_FILEPATH ${INCLUDE_ONCE_FILEPATH}) get_property(INCLUDED_${INCLUDE_ONCE_FILEPATH}_LOCAL GLOBAL PROPERTY INCLUDED_${INCLUDE_ONCE_FILEPATH}) if (INCLUDED_${INCLUDE_ONCE_FILEPATH}_LOCAL) return() else() set_property(GLOBAL PROPERTY INCLUDED_${INCLUDE_ONCE_FILEPATH} true) include(${file}) endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/install_runtime.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## This file is mainly used to allow runtime installation ## There are some utilities cmake functions to ease the generic deployement (abstract common usage of cmake)... ## ## You cannot run your programm automaticaly from your CNAKE_BINARY_DIR when you build ## as it will miss all dependencies and ressources files... ## You have to run install target in order to test your programm. ## ## The only one function/macros you may use inside your sub-CMakeLists.txt (sub-project) is : ## ****************** ## ibr_install_target macro => see documentation at the end of this file ## ****************** ## It use these utilities cmake functions to abstract the installation in an uniform way for all sub-projects. ## if(__install_runtime_cmake_INCLUDED__) return() else() set(__install_runtime_cmake_INCLUDED__ ON) endif() ## ## Allow to write a resource config file which contain additional ressource paths ## (used by IBR_Common Resource system to load shaders and potentialy images, plugins and so on) ## ## ADD option list all the paths to add in the file (relative paths are interpreted relative to working dir of the executable) ## INSTALL option to specify where we want to install this file ## ## Example usage: ## resourceFile(ADD "shaders" "${PROJECT_NAME}_rsc" INSTALL bin) ## macro(resourceFile) cmake_parse_arguments(rsc "" "INSTALL;FILE_PATH;CONFIG_TYPE" "ADD" ${ARGN}) ## both args are directory path if(rsc_ADD) unset(IBR_RSC_FILE_CONTENT_LIST) if(EXISTS "${rsc_FILE_PATH}") file(READ "${rsc_FILE_PATH}" IBR_RSC_FILE_CONTENT) string(REGEX REPLACE "\n" ";" IBR_RSC_FILE_CONTENT_LIST "${IBR_RSC_FILE_CONTENT}") endif() list(APPEND IBR_RSC_FILE_CONTENT_LIST "${rsc_ADD}") list(REMOVE_DUPLICATES IBR_RSC_FILE_CONTENT_LIST) file(WRITE "${rsc_FILE_PATH}" "") foreach(rscDir ${IBR_RSC_FILE_CONTENT_LIST}) file(APPEND "${rsc_FILE_PATH}" "${rscDir}\n") endforeach() unset(rsc_ADD) endif() if(rsc_INSTALL) install(FILES ${rsc_FILE_PATH} CONFIGURATIONS ${rsc_CONFIG_TYPE} DESTINATION ${rsc_INSTALL}) unset(rsc_INSTALL) endif() endmacro() ## ## Install *.pdb generated file for the current cmake project ## assuming the output target name is the cmake project name. ## This macro is useful for crossplateform multi config mode. ## ## Usage Example: ## ## if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based ## installPDB(${PROJECT_NAME} ${CMAKE_BUILD_TYPE} RUNTIME_DEST bin ARCHIVE_DEST lib LIBRARY_DEST lib) ## endif() ## foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) ## installPDB(${PROJECT_NAME} ${CONFIG_TYPES} RUNTIME_DEST bin ARCHIVE_DEST lib LIBRARY_DEST lib) ## endforeach() ## macro(installPDB targetName configType) cmake_parse_arguments(instpdb "" "COMPONENT" "ARCHIVE_DEST;LIBRARY_DEST;RUNTIME_DEST" ${ARGN}) ## both args are directory path if(NOT MSVC) return() endif() ## Check if DESTINATION are provided according to the TYPE of the given target (see install command doc to see correspodances) get_target_property(type ${targetName} TYPE) if(${type} MATCHES "EXECUTABLE" AND instpdb_RUNTIME_DEST) set(pdb_DESTINATION ${instpdb_RUNTIME_DEST}) elseif(${type} MATCHES "STATIC_LIBRARY" AND instpdb_ARCHIVE_DEST) set(pdb_DESTINATION ${instpdb_ARCHIVE_DEST}) elseif(${type} MATCHES "MODULE_LIBRARY" AND instpdb_LIBRARY_DEST) set(pdb_DESTINATION ${instpdb_LIBRARY_DEST}) elseif(${type} MATCHES "SHARED_LIBRARY") if(WIN32 AND instpdb_RUNTIME_DEST) set(pdb_DESTINATION ${instpdb_RUNTIME_DEST}) else() set(pdb_DESTINATION ${instpdb_LIBRARY_DEST}) endif() endif() if(NOT pdb_DESTINATION) set(pdb_DESTINATION bin) ## default destination of the pdb file endif() if(NOT instpdb_COMPONENT) set(instpdb_COMPONENT ) else() set(instpdb_COMPONENT COMPONENT ${instpdb_COMPONENT}) endif() string(TOUPPER ${configType} CONFIG_TYPES_UC) get_target_property(PDB_PATH ${targetName} PDB_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}) get_target_property(confModePostfix ${targetName} ${CONFIG_TYPES_UC}_POSTFIX) if(NOT confModePostfix) set(confModePostfix "") endif() set_target_properties(${targetName} PROPERTIES PDB_NAME_${CONFIG_TYPES_UC} ${targetName}${confModePostfix}) get_target_property(PDB_NAME ${targetName} PDB_NAME_${CONFIG_TYPES_UC})# if not set, this is empty if(EXISTS "${PDB_PATH}/${PDB_NAME}.pdb") install(FILES "${PDB_PATH}/${PDB_NAME}.pdb" CONFIGURATIONS ${configType} DESTINATION ${pdb_DESTINATION} ${instpdb_COMPONENT} OPTIONAL) endif() endmacro() ## ## Add additional target to install a project independently and based on its component ## configMode is used to prevent default Release installation (we want also to install in other build/config type) ## macro(installTargetProject targetOfProject targetOfInstallProject) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based set(configMode ${CMAKE_BUILD_TYPE}) elseif(MSVC) ## $(Configuration) will be one of the following : Debug, Release, MinSizeRel, RelWithDebInfo set(configMode $(Configuration)) endif() if(configMode) get_target_property(srcFiles ${targetOfProject} SOURCES) add_custom_target( ${targetOfInstallProject} #ALL ${CMAKE_COMMAND} -DBUILD_TYPE=${configMode} -DCOMPONENT=${targetOfInstallProject} -P ${CMAKE_BINARY_DIR}/cmake_install.cmake DEPENDS ${srcFiles} COMMENT "run the installation only for ${targetOfProject}" VERBATIM ) add_dependencies(${targetOfInstallProject} ${targetOfProject}) get_target_property(INSTALL_BUILD_FOLDER ${targetOfProject} FOLDER) set_target_properties(${targetOfInstallProject} PROPERTIES FOLDER ${INSTALL_BUILD_FOLDER}) endif() endmacro() # Collect all currently added targets in all subdirectories # # Parameters: # - _result the list containing all found targets # - _dir root directory to start looking from function(get_all_targets _result _dir) get_property(_subdirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES) foreach(_subdir IN LISTS _subdirs) get_all_targets(${_result} "${_subdir}") endforeach() get_directory_property(_sub_targets DIRECTORY "${_dir}" BUILDSYSTEM_TARGETS) set(${_result} ${${_result}} ${_sub_targets} PARENT_SCOPE) endfunction() ## ## Add targets for building and installing subdirectories macro(subdirectory_target target directory build_folder) add_custom_target(${target} COMMENT "run build for all projects in this directory" VERBATIM ) get_all_targets(ALL_TARGETS ${directory}) add_dependencies(${target} ${ALL_TARGETS}) add_custom_target(${target}_install ${CMAKE_COMMAND} -DBUILD_TYPE=$ -DCOMPONENT=${target}_install -P ${CMAKE_BINARY_DIR}/cmake_install.cmake COMMENT "run install for all projects in this directory" VERBATIM ) add_dependencies(${target}_install ${target}) set_target_properties(${target} PROPERTIES FOLDER ${build_folder}) set_target_properties(${target}_install PROPERTIES FOLDER ${build_folder}) endmacro() ## CMAKE install all required dependencies for an application (included system OS files like msvc*.dll for example) ## ## install_runtime( ## [TARGET name] ## [PLUGINS name [nameN ...] [PLUGIN_PATH_NAME currentPathName [FROM_REL_PATH matchDirFromCurrentPathName] [PLUGIN_PATH_DEST installDir] ] ## [PLUGINS ...] ## [DIRS path [pathN ...] ] ## [TARGET_LIBRARIES filePath [filePathN ...] ] ## [TARGET_PACKAGES packageName [packageNameN ...] ] ## [COMPONENT installComponentName] ## [PLAUSIBLES_POSTFIX Debug_postfix [MinSizeRel_postfix relWithDebInfo_postfix ...] ] ## [VERBOSE] ## ) ## ## installedFilePathTargetAppToResolve : the final installed targetApp absolute full file path name you want to resolve ## ## TARGET : The target app we want to install. If given, it's used to look for link libraries paths (best choice to use, strongly advised to use it) ## ## PLUGINS : Some application built use/load some plugins which can't be detect inside its binary, ## so, here you can specify which plugins the application use/load in order to install them ## and resolve also there dependencies. ## With PLUGINS multi FLAGS : ## PLUGIN_PATH_NAME : The current plugin full file path we want to install ## FROM_REL_PATH : [optional: default only the file is kept] From which matching dir of the plugin path we want to install (keep the directories structure) ## PLUGIN_PATH_DEST : [optional: default relative to executable directory] Where (full path to the install directory) we will install the plugin file (or file path) ## ## DIRS : A list of directories to looking for dependencies ## TARGET_LIBRARIES : DEPRECATED (use TARGET flag instead) : The cmake content variables used for the target_link_libraries( ...) ## TARGET_PACKAGES : DEPRECATED (use TARGET flag instead) : The cmake package names used for the findPackage(...) for your targetApp ## ADVICE: This flag add entries in cache (like: _DIR), it could be useful to fill these variable! ## COMPONENT : (default to runtime) Is the component name associated to the installation ## It is used when you want to install separatly some part of your projets (see install cmake doc) ## VERBOSE : For debug or to get more informations in the output console ## ## Usage: ## install_runtime(${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_NAME}${CMAKE_EXECUTABLE_SUFFIX} ## VERBOSE ## TARGET ${PROJECT_NAME} ## PLAUSIBLES_POSTFIX _d ## PLUGINS ## PLUGIN_PATH_NAME ${PLUGIN_PATH_NAME}${CMAKE_SHARED_MODULE_SUFFIX} ## will be installed (default exec path if no PLUGINS_DEST) and then will be resolved ## FROM_REL_PATH plugins ## optional, used especially for keeping qt plugins tree structure ## PLUGIN_PATH_DEST ${CMAKE_INSTALL_PREFIX}/plugins ## (or relative path 'plugins' will be interpreted relative to installed executable) ## DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ## TARGET_LIBRARIES ${OPENGL_LIBRARIES} ## DEPRECATED (use TARGET flag instead) ## ${GLEW_LIBRARIES} ## ${GLUT_LIBRARIES} ## ${Boost_LIBRARIES} ## ${SuiteSparse_LIBRARIES} ## ${CGAL_LIBRARIES} ## TARGET_PACKAGES OPENGL ## DEPRECATED (use TARGET flag instead) ## GLEW ## GLUT ## CGAL ## Boost ## SuiteSparse ## ) ## ## For plugins part, it use our internal parse_arguments_multi.cmake ## function(install_runtime installedFilePathTargetAppToResolve) set(optionsArgs "VERBOSE") set(oneValueArgs "COMPONENT;INSTALL_FOLDER;CONFIG_TYPE") set(multiValueArgs "DIRS;PLUGINS;TARGET_LIBRARIES;TARGET_PACKAGES;TARGET;PLAUSIBLES_POSTFIX") cmake_parse_arguments(inst_run "${optionsArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) if(IS_ABSOLUTE ${installedFilePathTargetAppToResolve}) else() set(installedFilePathTargetAppToResolve ${inst_run_INSTALL_FOLDER}/${installedFilePathTargetAppToResolve}) endif() get_filename_component(EXEC_NAME ${installedFilePathTargetAppToResolve} NAME_WE) get_filename_component(EXEC_PATH ${installedFilePathTargetAppToResolve} PATH) if(NOT inst_run_COMPONENT) set(inst_run_COMPONENT runtime) endif() ## Try to append as more possible as possible paths to find dependencies (deprecated since we can use target_properties to get back paths) set(libPaths ) foreach(libraryFileName ${inst_run_TARGET_LIBRARIES}) if(IS_DIRECTORY "${libraryFileName}") list(APPEND libPaths "${libraryFileName}") else() get_filename_component(libpath "${libraryFileName}" PATH) if(EXISTS "${libpath}") list(APPEND libPaths "${libpath}") endif() endif() endforeach() ## This macro is used internaly here to recursilvely get path of LINK_LIBRARIES of each non imported target ## Typically if you have 2 internal dependencies between cmake targets, we want cmake to be able to get back path where are these dependencies macro(recurseDepList target) get_target_property(linkLibs ${target} LINK_LIBRARIES) foreach(lib ${linkLibs}) string(FIND ${lib} ">" strId) ## cmake is using generator-expression? if(TARGET ${lib}) ## Skipping interface libraries as they're system ones get_target_property(type ${lib} TYPE) get_target_property(imported ${lib} IMPORTED) if(type STREQUAL "INTERFACE_LIBRARY") get_target_property(imp_loc ${lib} INTERFACE_IMPORTED_LOCATION) if(imp_loc) get_filename_component(imp_loc ${imp_loc} PATH) list(APPEND targetLibPath ${imp_loc}) endif() get_target_property(loc ${lib} INTERFACE_LOCATION) if(loc) get_filename_component(loc ${loc} PATH) list(APPEND targetLibPath ${loc}) endif() ## it's not a path but a single target name ## for build-target which are part of the current cmake configuration : nothing to do as cmake already know the output path ## for imported target, we need to look for theire imported location elseif(imported) get_target_property(imp_loc ${lib} IMPORTED_LOCATION) if(imp_loc) get_filename_component(imp_loc ${imp_loc} PATH) list(APPEND targetLibPath ${imp_loc}) endif() get_target_property(loc ${lib} LOCATION) if(loc) get_filename_component(loc ${loc} PATH) list(APPEND targetLibPath ${loc}) endif() else() recurseDepList(${lib}) endif() elseif(NOT ${strId} MATCHES -1) ## mean cmake use generator-expression (CMAKE VERSION > 3.0) string(REGEX MATCH ">:[@A-Za-z_:/.0-9-]+" targetLibPath ${lib}) string(REGEX REPLACE ">:([@A-Za-z_:/.0-9-]+)" "\\1" targetLibPath ${targetLibPath}) get_filename_component(targetLibPath ${targetLibPath} PATH) elseif(EXISTS ${lib}) set(targetLibPath ${lib}) get_filename_component(targetLibPath ${targetLibPath} PATH) else() #message(STATUS "[install_runtime] skip link library : ${lib} , of target ${target}") endif() if(targetLibPath) list(APPEND targetLinkLibsPathList ${targetLibPath}) endif() endforeach() if(targetLinkLibsPathList) list(REMOVE_DUPLICATES targetLinkLibsPathList) endif() endmacro() if(inst_run_TARGET) recurseDepList(${inst_run_TARGET}) if(targetLinkLibsPathList) list(APPEND libPaths ${targetLinkLibsPathList}) endif() endif() if(libPaths) list(REMOVE_DUPLICATES libPaths) foreach(libPath ${libPaths}) get_filename_component(path ${libPath} PATH) list(APPEND libPaths ${path}) endforeach() endif() ## possible speciale dir(s) according to the build system and OS if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(BUILD_TYPES_FOR_DLL "x64") if(WIN32) list(APPEND BUILD_TYPES_FOR_DLL "Win64") endif() else() set(BUILD_TYPES_FOR_DLL "x86") if(WIN32) list(APPEND BUILD_TYPES_FOR_DLL "Win32") endif() endif() ## Try to append as more as possible paths to find dependencies (here, mainly for *.dll) foreach(dir ${inst_run_DIRS} ${libPaths}) if(EXISTS "${dir}/bin") list(APPEND inst_run_DIRS "${dir}/bin") elseif(EXISTS "${dir}") list(APPEND inst_run_DIRS "${dir}") endif() endforeach() list(REMOVE_DUPLICATES inst_run_DIRS) foreach(dir ${inst_run_DIRS}) if(EXISTS "${dir}") list(APPEND argDirs ${dir}) foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${dir}/${BUILD_TYPE_FOR_DLL}") list(APPEND argDirs "${dir}/${BUILD_TYPE_FOR_DLL}") endif() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${dir}/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") list(APPEND argDirs "${dir}/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") endif() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${dir}/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") list(APPEND argDirs "${dir}/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") endif() endif() endforeach() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${dir}/${OUTPUTCONFIG}") list(APPEND argDirs "${dir}/${OUTPUTCONFIG}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${dir}/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") list(APPEND argDirs "${dir}/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${dir}/${CMAKE_BUILD_TYPE}") list(APPEND argDirs "${dir}/${CMAKE_BUILD_TYPE}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${dir}/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") list(APPEND argDirs "${dir}/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endif() endif() endforeach() if(argDirs) list(REMOVE_DUPLICATES argDirs) endif() ## Try to append as more possible paths to find dependencies (here, mainly for *.dll) foreach(packageName ${inst_run_TARGET_PACKAGES}) if(EXISTS "${${packageName}_DIR}") list(APPEND packageDirs ${${packageName}_DIR}) list(APPEND packageDirs ${${packageName}_DIR}/bin) foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}") endif() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") endif() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") endif() endif() endforeach() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${${packageName}_DIR}/bin/${OUTPUTCONFIG}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${OUTPUTCONFIG}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${${packageName}_DIR}/bin/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endif() else() set(${packageName}_DIR "$ENV{${packageName}_DIR}" CACHE PATH "${packageName}_DIR root directory for looking for dirs containning *.dll") endif() endforeach() if(packageDirs) list(REMOVE_DUPLICATES packageDirs) endif() set(dirsToLookFor "${EXEC_PATH}") if(packageDirs) list(APPEND dirsToLookFor ${packageDirs}) endif() if(argDirs) list(APPEND dirsToLookFor ${argDirs}) endif() get_property(used_LINK_DIRECTORIES DIRECTORY PROPERTY LINK_DIRECTORIES) if (used_LINK_DIRECTORIES) list(APPEND dirsToLookFor ${used_LINK_DIRECTORIES}) list(REMOVE_DUPLICATES dirsToLookFor) endif() ## handle plugins set(pluginsList "") include(parse_arguments_multi) ## this function will process recursively items of the sub-list [default print messages] function(parse_arguments_multi_function results) cmake_parse_arguments(pamf "VERBOSE" "PLUGIN_PATH_DEST;FROM_REL_PATH;EXEC_PATH;COMPONENT" "" ${ARGN}) ## EXEC_PATH and COMPONENT are for exclusive internal use list(REMOVE_DUPLICATES pamf_UNPARSED_ARGUMENTS) foreach(PLUGIN_PATH_NAME ${pamf_UNPARSED_ARGUMENTS}) if(EXISTS ${PLUGIN_PATH_NAME}) if(IS_DIRECTORY ${PLUGIN_PATH_NAME}) if(pamf_VERBOSE) message(WARNING "${PLUGIN_PATH_NAME} IS_DIRECTORY, cannot installed a directory, please give a path filename") endif() else() if(NOT pamf_PLUGIN_PATH_DEST) set(PLUGIN_PATH_DEST ${pamf_EXEC_PATH}) ## the default dest value else() set(PLUGIN_PATH_DEST ${pamf_PLUGIN_PATH_DEST}) endif() if(pamf_FROM_REL_PATH) file(TO_CMAKE_PATH ${PLUGIN_PATH_NAME} PLUGIN_PATH_NAME) get_filename_component(PLUGIN_PATH ${PLUGIN_PATH_NAME} PATH) unset(PLUGIN_PATH_LIST) unset(PLUGIN_PATH_LIST_COUNT) unset(PLUGIN_REL_PATH_LIST) unset(PLUGIN_REL_PATH) string(REPLACE "/" ";" PLUGIN_PATH_LIST ${PLUGIN_PATH}) ## create a list of dir list(FIND PLUGIN_PATH_LIST ${pamf_FROM_REL_PATH} id) list(LENGTH PLUGIN_PATH_LIST PLUGIN_PATH_LIST_COUNT) if(${id} GREATER 0) math(EXPR id "${id}+1") ## matches relative path not include math(EXPR PLUGIN_PATH_LIST_COUNT "${PLUGIN_PATH_LIST_COUNT}-1") ## the end of the list foreach(i RANGE ${id} ${PLUGIN_PATH_LIST_COUNT}) list(GET PLUGIN_PATH_LIST ${i} out) list(APPEND PLUGIN_REL_PATH_LIST ${out}) endforeach() foreach(dir ${PLUGIN_REL_PATH_LIST}) set(PLUGIN_REL_PATH "${PLUGIN_REL_PATH}/${dir}") endforeach() endif() set(PLUGIN_PATH_DEST ${PLUGIN_PATH_DEST}${PLUGIN_REL_PATH}) endif() install(FILES ${PLUGIN_PATH_NAME} CONFIGURATIONS ${inst_run_CONFIG_TYPE} DESTINATION ${PLUGIN_PATH_DEST} COMPONENT ${pamf_COMPONENT}) get_filename_component(pluginName ${PLUGIN_PATH_NAME} NAME) if(IS_ABSOLUTE ${PLUGIN_PATH_DEST}) else() set(PLUGIN_PATH_DEST ${inst_run_INSTALL_FOLDER}/${PLUGIN_PATH_DEST}) endif() list(APPEND pluginsList ${PLUGIN_PATH_DEST}/${pluginName}) endif() else() message(WARNING "You need to provide a valid PLUGIN_PATH_NAME") set(pluginsList ) endif() endforeach() set(${results} ${pluginsList} PARENT_SCOPE) endfunction() if(inst_run_VERBOSE) list(APPEND extra_flags_to_add VERBOSE) endif() list(APPEND extra_flags_to_add EXEC_PATH ${EXEC_PATH} COMPONENT ${inst_run_COMPONENT}) ## for internal use inside overloaded function list(LENGTH inst_run_PLUGINS inst_run_PLUGINS_count) if(${inst_run_PLUGINS_count} GREATER 0) parse_arguments_multi(PLUGIN_PATH_NAME inst_run_PLUGINS ${inst_run_PLUGINS} ## see internal overload parse_arguments_multi_function for processing each sub-list NEED_RESULTS ${inst_run_PLUGINS_count} ## this is used to check when we are in the first loop (in order to reset parse_arguments_multi_results) EXTRAS_FLAGS ${extra_flags_to_add} ## this is used to allow catching additional internal flags of our overloaded function ) endif() #message(parse_arguments_multi_results = ${parse_arguments_multi_results}) list(APPEND pluginsList ${parse_arguments_multi_results}) ## Install rules for required system runtimes such as MSVCRxx.dll set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP ON) include(InstallRequiredSystemLibraries) if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS) install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} CONFIGURATIONS ${inst_run_CONFIG_TYPE} DESTINATION ${EXEC_PATH} COMPONENT ${inst_run_COMPONENT} ) endif() ## print what we are doing to do if(inst_run_VERBOSE) message(STATUS "[install_runtime] On install target call, cmake will try to resolve dependencies for given app:\n ${installedFilePathTargetAppToResolve} (with plausible postfix: ${inst_run_PLAUSIBLES_POSTFIX})") if(pluginsList) message(STATUS " and also for plugins :") foreach(plugin ${pluginsList}) message(STATUS " ${plugin}") endforeach() endif() message(STATUS " Looking for dependencies into:") foreach(dir ${dirsToLookFor}) message(STATUS " ${dir}") endforeach() endif() ## Install rules for required dependencies libs/plugins for the target app ## will resolve all installed target files with config modes postfixes string(TOUPPER ${inst_run_CONFIG_TYPE} inst_run_CONFIG_TYPE_UC) get_target_property(postfix ${inst_run_TARGET} "${inst_run_CONFIG_TYPE_UC}_POSTFIX") install(CODE "set(target \"${inst_run_TARGET}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(inst_run_CONFIG_TYPE \"${inst_run_CONFIG_TYPE}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(inst_run_INSTALL_FOLDER \"${inst_run_INSTALL_FOLDER}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(app \"${EXEC_PATH}/${EXEC_NAME}${postfix}${CMAKE_EXECUTABLE_SUFFIX}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(dirsToLookFor \"${dirsToLookFor}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE [[ if("${CMAKE_INSTALL_CONFIG_NAME}" STREQUAL "${inst_run_CONFIG_TYPE}") message(STATUS "Installing ${target} dependencies...") file(GET_RUNTIME_DEPENDENCIES EXECUTABLES ${app} RESOLVED_DEPENDENCIES_VAR _r_deps UNRESOLVED_DEPENDENCIES_VAR _u_deps CONFLICTING_DEPENDENCIES_PREFIX _c_deps DIRECTORIES ${dirsToLookFor} PRE_EXCLUDE_REGEXES "api-ms-*" POST_EXCLUDE_REGEXES ".*system32/.*\\.dll" ".*SysWOW64/.*\\.dll" ) if(_u_deps) message(WARNING "There were unresolved dependencies for executable ${EXEC_FILE}: \"${_u_deps}\"!") endif() if(_c_deps_FILENAMES) message(WARNING "There were conflicting dependencies for executable ${EXEC_FILE}: \"${_c_deps_FILENAMES}\"!") endif() foreach(_file ${_r_deps}) file(INSTALL DESTINATION "${inst_run_INSTALL_FOLDER}/bin" TYPE SHARED_LIBRARY FOLLOW_SYMLINK_CHAIN FILES "${_file}" ) endforeach() endif() ]] COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE} ) endfunction() ## High level macro to install resources in the correct folder ## ## EXECUTABLE: [opt] option to copy files as programs ## RELATIVE : [opt] copy files relatively to current folder ## TYPE : [opt] type and folder where to store the files ## FOLDER : [opt] subfolder to use ## FILES : [opt] contains a list of resources files to copy to install folder macro(ibr_install_rsc target) cmake_parse_arguments(install_rsc_${target} "EXECUTABLE;RELATIVE" "TYPE;FOLDER" "FILES" ${ARGN}) set(rsc_target "${target}_${install_rsc_${target}_TYPE}") if(install_rsc_${target}_FOLDER) set(rsc_folder "${install_rsc_${target}_TYPE}/${install_rsc_${target}_FOLDER}") else() set(rsc_folder "${install_rsc_${target}_TYPE}") endif() add_custom_target(${rsc_target} COMMENT "run the ${install_rsc_${target}_TYPE} installation only for ${target} (component ${rsc_target})" VERBATIM) foreach(scriptFile ${install_rsc_${target}_FILES}) if(install_rsc_${target}_RELATIVE) file(RELATIVE_PATH relativeFilename ${CMAKE_CURRENT_SOURCE_DIR} ${scriptFile}) else() get_filename_component(relativeFilename ${scriptFile} NAME) endif() if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based add_custom_command(TARGET ${rsc_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${scriptFile} ${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/${rsc_folder}/${relativeFilename}) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) add_custom_command(TARGET ${rsc_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${scriptFile} ${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/${rsc_folder}/${relativeFilename}) endforeach() endforeach() get_target_property(INSTALL_RSC_BUILD_FOLDER ${target} FOLDER) set_target_properties(${rsc_target} PROPERTIES FOLDER ${INSTALL_RSC_BUILD_FOLDER}) add_dependencies(${target} ${rsc_target}) add_dependencies(PREBUILD ${rsc_target}) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based resourceFile(ADD ${rsc_folder} CONFIG_TYPE ${CMAKE_BUILD_TYPE} FILE_PATH "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/ibr_resources.ini") if(install_rsc_${target}_EXECUTABLE) install( PROGRAMS ${install_rsc_${target}_FILES} CONFIGURATIONS ${CMAKE_BUILD_TYPE} DESTINATION "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/${rsc_folder}" ) else() install( FILES ${install_rsc_${target}_FILES} CONFIGURATIONS ${CMAKE_BUILD_TYPE} DESTINATION "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/${rsc_folder}" ) endif() endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) resourceFile(ADD ${rsc_folder} CONFIG_TYPE ${CONFIG_TYPES} FILE_PATH "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/ibr_resources.ini") if(install_rsc_${target}_EXECUTABLE) install( PROGRAMS ${install_rsc_${target}_FILES} CONFIGURATIONS ${CONFIG_TYPES} DESTINATION "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/${rsc_folder}" ) else() install( FILES ${install_rsc_${target}_FILES} CONFIGURATIONS ${CONFIG_TYPES} DESTINATION "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/${rsc_folder}" ) endif() endforeach() endmacro() ## High level macro to install in an homogen way all our ibr targets (it use some functions inside this file) ## ## RSC_FILE_ADD : [opt] is used to auto write/append relative paths of target resources into a common file ## INSTALL_PDB : [opt] is used to auto install PDB file (when using MSVC according to the target type) ## STANDALONE : [opt] bool ON/OFF var to call install_runtime or not (for bundle resolution) ## DIRS : [opt] used if STANDALONE set to ON, see install_runtime doc ## PLUGINS: [opt] used if STANDALONE set to ON, see install_runtime doc ## MSVC_CMD : [opt] used to specify an absolute filePathName application to launch with the MSVC IDE Debugger associated to this target (project file) ## MSVC_ARGS : [opt] load the MSVC debugger with correct settings (app path, args, working dir) ## macro(ibr_install_target target) cmake_parse_arguments(ibrInst${target} "VERBOSE;INSTALL_PDB" "COMPONENT;MSVC_ARGS;STANDALONE;RSC_FOLDER" "SHADERS;RESOURCES;SCRIPTS;DIRS;PLUGINS" ${ARGN}) if(ibrInst${target}_RSC_FOLDER) set(rsc_folder "${ibrInst${target}_RSC_FOLDER}") else() set(rsc_folder "${target}") endif() if(ibrInst${target}_SHADERS) ibr_install_rsc(${target} EXECUTABLE TYPE "shaders" FOLDER ${rsc_folder} FILES "${ibrInst${target}_SHADERS}") endif() if(ibrInst${target}_RESOURCES) ibr_install_rsc(${target} TYPE "resources" FOLDER ${rsc_folder} FILES "${ibrInst${target}_RESOURCES}") endif() if(ibrInst${target}_SCRIPTS) ibr_install_rsc(${target} EXECUTABLE TYPE "scripts" FOLDER ${rsc_folder} FILES "${ibrInst${target}_SCRIPTS}") endif() if(ibrInst${target}_COMPONENT) set(installCompArg COMPONENT ${ibrInst${target}_COMPONENT}) ## Create a custom install target based on COMPONENT installTargetProject(${target} ${ibrInst${target}_COMPONENT}) endif() if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based set_target_properties(${target} PROPERTIES ${CMAKE_BUILD_TYPE}_POSTFIX "${CMAKE_${CMAKE_BUILD_TYPE}_POSTFIX}") get_target_property(CURRENT_TARGET_BUILD_TYPE_POSTFIX ${target} ${CMAKE_BUILD_TYPE}_POSTFIX) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) set_target_properties(${target} PROPERTIES ${CONFIG_TYPES_UC}_POSTFIX "${CMAKE_${CONFIG_TYPES_UC}_POSTFIX}") get_target_property(CURRENT_TARGET_BUILD_TYPE_POSTFIX ${target} ${CONFIG_TYPES_UC}_POSTFIX) endforeach() ## Specify default installation rules if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based install(TARGETS ${target} CONFIGURATIONS ${CMAKE_BUILD_TYPE} LIBRARY DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} ARCHIVE DESTINATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} RUNTIME DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} ) install(TARGETS ${target} CONFIGURATIONS ${CMAKE_BUILD_TYPE} LIBRARY DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} ARCHIVE DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) install(TARGETS ${target} CONFIGURATIONS ${CONFIG_TYPES} LIBRARY DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} ARCHIVE DESTINATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} RUNTIME DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} ) install(TARGETS ${target} CONFIGURATIONS ${CONFIG_TYPES} LIBRARY DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} ARCHIVE DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} ) endforeach() if(ibrInst${target}_INSTALL_PDB) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based installPDB(${target} ${CMAKE_BUILD_TYPE} LIBRARY_DEST ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ARCHIVE_DEST ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} RUNTIME_DEST ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) installPDB(${target} ${CONFIG_TYPES} LIBRARY_DEST ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ARCHIVE_DEST ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} RUNTIME_DEST ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ) endforeach() endif() ## install dynamic necessary dependencies if(ibrInst${target}_STANDALONE) get_target_property(type ${target} TYPE) if(${type} MATCHES "EXECUTABLE") if(ibrInst${target}_VERBOSE) set(VERBOSE VERBOSE) else() set(VERBOSE ) endif() if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based install_runtime(bin/${target}${CMAKE_EXECUTABLE_SUFFIX} ## default relative to CMAKE_INSTALL_PREFIX INSTALL_FOLDER "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}" CONFIG_TYPE ${CMAKE_BUILD_TYPE} ${VERBOSE} TARGET ${target} ${installCompArg} PLUGINS ## will be installed ${ibrInst${target}_PLUGINS} DIRS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${ibrInst${target}_DIRS} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) install_runtime(bin/${target}${CMAKE_EXECUTABLE_SUFFIX} ## default relative to CMAKE_INSTALL_PREFIX INSTALL_FOLDER "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}" CONFIG_TYPE ${CONFIG_TYPES} ${VERBOSE} TARGET ${target} ${installCompArg} PLUGINS ## will be installed ${ibrInst${target}_PLUGINS} DIRS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${ibrInst${target}_DIRS} ) endforeach() else() message(WARNING "STANDALONE option is only compatible with EXECUTABLES target type. Skip the STANDALONE installation process.") endif() endif() ## Provide a way to directly load the MSVC debugger with correct settings if(MSVC) if(ibrInst${target}_MSVC_CMD) ## command absolute filePathName is optional as the default is to use the installed target file application set(msvcCmdArg COMMAND ${ibrInst${target}_MSVC_CMD}) ## flag following by the value (both to pass to the MSVCsetUserCommand function) endif() if(ibrInst${target}_MSVC_ARGS) ## args (between quotes) are optional set(msvcArgsArg ARGS ${ibrInst${target}_MSVC_ARGS}) ## flag following by the value (both to pass to the MSVCsetUserCommand function) endif() get_target_property(type ${target} TYPE) if( (ibrInst${target}_MSVC_CMD OR ibrInst${target}_MSVC_ARGS) OR (${type} MATCHES "EXECUTABLE") ) include(MSVCsetUserCommand) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based MSVCsetUserCommand( ${target} PATH ${CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE}} ##FILE option not necessary since it deduced from targetName ARGS "${SIBR_PROGRAMARGS}" ${msvcCmdArg} #${msvcArgsArg} WORKING_DIR ${CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE}} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) MSVCsetUserCommand( ${target} PATH ${CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC}} ##FILE option not necessary since it deduced from targetName ARGS "${SIBR_PROGRAMARGS}" ${msvcCmdArg} #${msvcArgsArg} WORKING_DIR ${CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC}} ) endforeach() elseif(NOT ${type} MATCHES "EXECUTABLE") #message("Cannot set MSVCsetUserCommand with target ${target} without COMMAND parameter as it is not an executable (skip it)") endif() endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/parse_arguments_multi.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(NOT WIN32 OR __parse_arguments_multi_cmake_INCLUDED__) return() else() set(__parse_arguments_multi_cmake_INCLUDED__ ON) endif() ## This macro allow to process repeating multi value args from a given function which use cmake_parse_arguments module. ## ## cmake_parse_arguments multi args standard behavior: ## function(foo) ## cmake_parse_arguments(arg "" "" "MULTI" ${ARGN}) ## foreach(item IN LISTS arg_MULTI) ## message(STATUS "${item}") ## endforeach() ## endfunction() ## foo(MULTI x y MULTI z w) ## The above code outputs 'z' and 'w'. It originally expected it to output all of 'x' 'y' 'z' 'w'. ## ## Using this macro inside a function which want to handle repeating multi args values ## will recursively iterate onto the multi tags list to process each sub list. ## It take as 1st argument the subTag flag to separate sub list from the main multi list. ## It take as 2nd argument the nameList of the main multi list (the multiValuesArgs from cmake_parse_arguments: here it is MULTI in the example) ## and that's why it is important that it should be a macro and not a function (to get access to external variable). ## Then you give the content of this list allowing to be processed by the macro. ## ## parse_arguments_multi macro call a parse_arguments_multi_function which do actually the process from the given sub-list. ## By default this function only print infos about what variables you are trying to pass/process (only verbose messages), ## but, by overloading this cmake function, you will be able to externalize the process of your multi argument list. ## ## Usage (into a function) : ## parse_arguments_multi( ## [NEED_RESULTS ] [EXTRAS_FLAGS <...> <...> ...] ## ) ## ## Simple usage example [user point of view]: ## foo(MULTI ## SUB_MULTI x y ## SUB_MULTI z w ## ) ## ## Simple usage example [inside a function]: ## function(foo) ## cmake_parse_arguments(arg "" "" "MULTI" ${ARGN}) ## include(parse_arguments_multi) ## function(parse_arguments_multi_function ) ## #message("I'm an overloaded cmake function used by parse_arguments_multi") ## #message("I'm processing first part of my sub list: ${ARGN}") ## message("ARGV0=${ARGV0}") ## message("ARGV1=${ARGV1}") ## endfunction() ## parse_arguments_multi(SUB_MULTI arg_MULTI ${arg_MULTI}) ## this function will process recusively items of the sub-list [default print messages] ## endfunction() ## ## Will print: ## ARGV0=z ## ARGV1=w ## ARGV0=x ## ARGV1=y ## ## WARNING : DO NEVER ADD EXTRA THINGS TO parse_arguments_multi MACRO : ## parse_arguments_multi(SUB_MULTI arg_MULTI ${arg_MULTI} EXTRAS foo bar SOMTHING) => will failed !! ## use EXTRAS_FLAGS instead !! ## ## Advanced usage example [user point of view]: ## bar(C:/prout/test.exe VERBOSE ## PLUGINS ## PLUGIN_PATH_NAME x PLUGIN_PATH_DEST w ## PLUGIN_PATH_NAME a b PLUGIN_PATH_DEST y ## PLUGIN_PATH_NAME c ## ) ## ## Advanced usage example [inside a function]: ## function(bar execFilePathName) ## cmake_parse_arguments(arg "VERBOSE" "" "PLUGINS" ${ARGN}) ## ## include(parse_arguments_multi) ## function(parse_arguments_multi_function results) ## cmake_parse_arguments(pamf "VERBOSE" "PLUGIN_PATH_DEST;EXEC_PATH" "" ${ARGN}) ## EXEC_PATH is for internal use ## message("") ## message("I'm an overloaded cmake function used by parse_arguments_multi from install_runtime function") ## message("I'm processing first part of my sub list: ${ARGN}") ## message("PLUGIN_PATH_NAME = ${pamf_UNPARSED_ARGUMENTS}") ## message(pamf_VERBOSE = ${pamf_VERBOSE}) ## message("pamf_PLUGIN_PATH_DEST = ${pamf_PLUGIN_PATH_DEST}") ## message(pamf_EXEC_PATH = ${pamf_EXEC_PATH}) ## if(NOT ${pamf_PLUGIN_PATH_DEST}) ## set(pamf_PLUGIN_PATH_DEST ${pamf_EXEC_PATH}) ## endif() ## foreach(plugin ${pamf_UNPARSED_ARGUMENTS}) ## get_filename_component(pluginName ${plugin} NAME) ## list(APPEND pluginsList ${pamf_PLUGIN_PATH_DEST}/${pluginName}) ## endforeach() ## set(${results} ${pluginsList} PARENT_SCOPE) ## endfunction() ## ## if(arg_VERBOSE) ## list(APPEND extra_flags_to_add VERBOSE) ## here we transmit the VERNOSE flag ## endif() ## get_filename_component(EXEC_PATH ${execFilePathName} PATH) ## will be the default value if PLUGIN_PATH_DEST option is not provided ## list(APPEND extra_flags_to_add EXEC_PATH ${EXEC_PATH}) ## list(LENGTH arg_PLUGINS arg_PLUGINS_count) ## parse_arguments_multi(PLUGIN_PATH_NAME arg_PLUGINS ${arg_PLUGINS} ## NEED_RESULTS ${arg_PLUGINS_count} ## this is used to check when we are in the first loop (in order to reset parse_arguments_multi_results) ## EXTRAS_FLAGS ${extra_flags_to_add} ## this is used to allow catching VERBOSE and PLUGIN_PATH_DEST flags of our overloaded function ## ) ## endfunction() ## message(parse_arguments_multi_results = ${parse_arguments_multi_results}) ## list of the whole pluginsList ## #Will print w/x;a/y;b/y;C:/prout/c ## ## NOTE that here, since our overloaded function need to provide a result list, we use the other parse_arguments_multi_function signature (the which one with a results arg) ## function(parse_arguments_multi_function_default) ## used in case of you want to reset the default behavior of this function process message("[default function] parse_arguments_multi_function(ARGC=${ARGC} ARGV=${ARGV} ARGN=${ARGN})") message("This function is used by parse_arguments_multi and have to be overloaded to process sub list of multi values args") endfunction() function(parse_arguments_multi_function ) ## => the function to overload parse_arguments_multi_function_default(${ARGN}) endfunction() ## first default signature above ##------------------------------ ## second results signature behind function(parse_arguments_multi_function_default result) ## used in case of you want to reset the default behavior of this function process message("[default function] parse_arguments_multi_function(ARGC=${ARGC} ARGV=${ARGV} ARGN=${ARGN})") message("This function is used by parse_arguments_multi and have to be overloaded to process sub list of muluti values args") endfunction() function(parse_arguments_multi_function result) ## => the function to overload parse_arguments_multi_function_default(result ${ARGN}) endfunction() ## => the macro to use inside your function which use cmake_parse_arguments # NOTE: entry point of parse_arguments_multi, which is called from win3rdPart) macro(parse_arguments_multi multiArgsSubTag multiArgsList #<${multiArgsList}> the content of the list ) # message (STATUS "") # message(STATUS "calling parse_arguemnts_multi defined in parse_arguments_multi.cmake:141") # message(STATUS "multiArgsSubTag = ${multiArgsSubTag}") # CHECK_CACHED_VAR # message(STATUS "multiArgsList = ${multiArgsList}") # it contains the name of the variable which is holding the list i.e w3p_MULTI_SET # message(STATUS "value of ${multiArgsList} = ${${multiArgsList}}") # a semicolon separated list of values passed to SET or MULTISET keyword in win3rdParty # message(STATUS "actual values ARGN = ${ARGN}") # the same as ${${multiArgsList}} ## INFO ## starting from CMake 3.5 cmake_parse_arguments is not a module anymore and now is a native CMake command. ## the behaviour is different though ## In CMake 3.4, if you pass multiple times a multi_value_keyword, CMake returns the values of the LAST match ## In CMake 3.5 and above, CMake returns the whole list of values that were following that multi_value_keyword ## example: ## cmake_parse_arguments( ## ## "" # options ## "" # one value keywords ## "MY_MULTI_VALUE_TAG" ## MY_MULTI_VALUE_TAG value1 value2 ## MY_MULTI_VALUE_TAG value3 value4 ## MY_MULTI_VALUE_TAG value5 value6 ## ) ## result in CMake 3.4 ## _MY_MULTI_VALUE_TAG = "value5;value6" ## ## result in CMake 3.8 ## _MY_MULTI_VALUE_TAG = "value5;value6" #include(CMakeParseArguments) #module CMakeParseArguments is obsolete since cmake 3.5 # cmake_parse_arguments ( args) # : options (flags) pass to the macro # : options that neeed a value # : options that neeed more than one value cmake_parse_arguments(_pam "" "NEED_RESULTS" "${multiArgsSubTag};EXTRAS_FLAGS" ${ARGN}) ## multiArgsList is the name of the list used by the multiValuesOption flag from the cmake_parse_arguments of the user function ## that's why we absolutly need to use MACRO here (and also for passing parse_arguments_multi_results when NEED_RESULTS flag is set) ## for debugging #message("") #message("[parse_arguments_multi] => ARGN = ${ARGN}") #message("_pam_NEED_RESULTS=${_pam_NEED_RESULTS}") #message("_pam_EXTRAS_FLAGS=${_pam_EXTRAS_FLAGS}") # foreach(var ${_pam_${multiArgsSubTag}}) # message("arg=${var}") # endforeach() if (${CMAKE_VERSION} VERSION_GREATER "3.5") # lets make ${_pam_${multiArgsSubTag}} behave as it is in version 3.4 # that means, cmake_parse_arguments should have only the last values of a multi set for a given keyword # message("") # message("values in multiArgsList") # foreach(val ${${multiArgsList}}) # message(STATUS ${val}) # endforeach() # message("end values in multiArgsList") set(lastIndexFound OFF) list(LENGTH ${multiArgsList} argnLength) # message(${argnLength}) math(EXPR argnLength "${argnLength}-1") # make last index a valid one set(recordIndex 0) set(records "") # clear records list set(record0 "") # clear first record list foreach(iter RANGE ${argnLength}) list(GET ${multiArgsList} ${iter} value) # message(STATUS "index=${iter} value=${value}") if (${value} STREQUAL ${multiArgsSubTag}) if (lastIndexFound) list(APPEND records ${recordIndex}) # records store the list NAMES math(EXPR recordIndex "${recordIndex}+1") set(record${recordIndex} "") # clear record list else () set(lastIndexFound ON) endif() set(lastIndex ${iter}) else () if (lastIndexFound) # message(${value}) list(APPEND record${recordIndex} ${value}) endif() endif() endforeach() # save the last list of values if (lastIndexFound) list(APPEND records ${recordIndex}) # records store the list NAMES endif() # set multiArgsList to make it behave like CMake 3.4 # message("") # message("using my records") foreach(recordName ${records}) # message(${recordName}) # foreach(value ${record${recordName}}) # message(${value}) # endforeach() # message("") set(_pam_${multiArgsSubTag} ${record${recordName}}) endforeach() # message(${_pam_${multiArgsSubTag}}) # message("") # message("using argn") # foreach(value ${ARGN}) # message(${value}) # endforeach() endif() # end if cmake > 3.5 # message("values with pam ${_pam_${multiArgsSubTag}}") ## check and init list(LENGTH ${multiArgsList} globalListCount) # GLUT_TRACE: globalListCound=16 in CMake3.4 and CMake3.8 # message(STATUS "nr items in multiArgsList: ${globalListCount}") math(EXPR globalListCount "${globalListCount}-1") ## because it will contain [multiArgsSubTag + ${multiArgsList}] if(_pam_NEED_RESULTS) if(${globalListCount} EQUAL ${_pam_NEED_RESULTS}) ## first time we enter into this macro (because we call it recursively) unset(parse_arguments_multi_results) endif() endif() ## process the part of the multi agrs list ## ${ARGN} shouldn't be passed to the function in order to avoid missmatch size list ${multiArgsList} and _pam_${multiArgsSubTag} ## if you want to pass extra internal flags from your function to this callback, use EXTRAS_FLAGS if(_pam_NEED_RESULTS) parse_arguments_multi_function(parse_arguments_multi_function_result ${_pam_${multiArgsSubTag}} ${_pam_EXTRAS_FLAGS}) list(APPEND parse_arguments_multi_results ${parse_arguments_multi_function_result}) else() # message(STATUS "about to call parse_arguments_multi_function in parse_arguments_multi.cmake:177 ${_pam_${multiArgsSubTag}} and extra flags ${_pam_EXTRAS_FLAGS}") parse_arguments_multi_function(${_pam_${multiArgsSubTag}} ${_pam_EXTRAS_FLAGS}) endif() ## remove just processed items from the main list to process (multiArgsList) list(REVERSE ${multiArgsList}) list(LENGTH _pam_${multiArgsSubTag} subTagListCount) unset(ids) foreach(id RANGE ${subTagListCount}) list(APPEND ids ${id}) endforeach() list(REMOVE_AT ${multiArgsList} ${ids}) list(REVERSE ${multiArgsList}) ## test if remain sub multi list to process (recursive call) or finish the process list(LENGTH ${multiArgsList} mainTagListCount) if(${mainTagListCount} GREATER 1) ## do not pass ${ARGN} just because it will re pass the initial 2 inputs args and we wont as they was consumed (in order to avoir conflicts) # message(STATUS "about to call a parse_arguments_multi but without knowing where the definition is going to be taken from") parse_arguments_multi(${multiArgsSubTag} ${multiArgsList} ${${multiArgsList}} NEED_RESULTS ${_pam_NEED_RESULTS} EXTRAS_FLAGS ${_pam_EXTRAS_FLAGS} ) endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/linux/sibr_library.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr # NOTE # This feature is used to easily download, store and link external dependencies. This # requires to prepare pre-compiled libraries (to download). For now, packages have # only be prepare for Windows 64-bit with Visual Studio 2012. (You should re-build # everything if you want to use another version of Visual Studio/ another compiler). # NOTE ABOUT UNIX SYSTEMS # There is no need for "searching mechanism". This function is discard and your # libraries should be installed is the standard folders that are: # # /usr/include/ # /usr/lib/ # /usr/lib64/ # for packages downloaded using apt-get/yum # # /usr/local/include/ # /usr/local/lib/ # /usr/local/lib64/ # for packages manually installed ("make install") # # if you encounter problems when linking (e.g. lib not found even if it is installed), # please check these folders are in your search PATH environment variables. set(EXTLIBS_PACKAGE_FOLDER "${CMAKE_SOURCE_DIR}/extlibs") function(sibr_addlibrary) if(NOT WIN32) return() endif() file(MAKE_DIRECTORY ${EXTLIBS_PACKAGE_FOLDER}) cmake_parse_arguments(args "VCID" "VERBOSE;TIMEOUT;DEFAULT_USE;NAME;VERSION;MSVC11;MSVC12;MSVC14;MSVC17" "MULTI_SET;SET" ${ARGN}) if (NOT "${args_VERSION}" MATCHES "") message(WARNING "VERSION is not implemented yet") endif() set(lcname "") set(ucname "") string(TOLOWER "${args_NAME}" lcname) string(TOUPPER "${args_NAME}" ucname) set(LIB_PACKAGE_FOLDER "${EXTLIBS_PACKAGE_FOLDER}/${lcname}") win3rdParty(${ucname} $ VERBOSE ${args_VERBOSE} TIMEOUT ${args_TIMEOUT} DEFAULT_USE ${args_DEFAULT_USE} MSVC11 "${LIB_PACKAGE_FOLDER}" "${args_MSVC11}" MSVC12 "${LIB_PACKAGE_FOLDER}" "${args_MSVC12}" MSVC14 "${LIB_PACKAGE_FOLDER}" "${args_MSVC14}" # TODO SV: make sure to build this library if required MSVC17 "${LIB_PACKAGE_FOLDER}" "${args_MSVC17}" SET ${args_SET} MULTI_SET ${args_MULTI_SET} ) # Add include/ directory # and lib/ directories # TODO SV: paths not matching with current hierarchy. example: libraw/libraw-0.17.1/include # SR: The link directories will also be used to lookup for dependency DLLs to copy in the install directory. # Some libraries put the DLLs in the bin/ directory, so we include those. file(GLOB subdirs RELATIVE ${LIB_PACKAGE_FOLDER} ${LIB_PACKAGE_FOLDER}/*) set(dirlist "") foreach(dir ${subdirs}) if(IS_DIRECTORY ${LIB_PACKAGE_FOLDER}/${dir}) # message("adding ${LIB_PACKAGE_FOLDER}/${dir}/include/ to the include directories") include_directories("${LIB_PACKAGE_FOLDER}/${dir}/include/") # message("adding ${LIB_PACKAGE_FOLDER}/${dir}/lib[64] to the link directories") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/lib/") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/lib64/") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/bin/") endif() endforeach() endfunction() include(FetchContent) include(git_describe) include(install_runtime) function(sibr_gitlibrary) cmake_parse_arguments(args "" "TARGET;GIT_REPOSITORY;GIT_TAG;ROOT_DIR;SOURCE_DIR" "INCLUDE_DIRS" ${ARGN}) if(NOT args_TARGET) message(FATAL "Error on sibr_gitlibrary : please define your target name.") return() endif() if(NOT args_ROOT_DIR) set(args_ROOT_DIR ${args_TARGET}) endif() if(NOT args_SOURCE_DIR) set(args_SOURCE_DIR ${args_TARGET}) endif() if(args_GIT_REPOSITORY AND args_GIT_TAG) if(EXISTS ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR}/.git) git_describe( PATH ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} GIT_URL SIBR_GITLIBRARY_URL GIT_BRANCH SIBR_GITLIBRARY_BRANCH GIT_COMMIT_HASH SIBR_GITLIBRARY_COMMIT_HASH GIT_TAG SIBR_GITLIBRARY_TAG ) if((SIBR_GITLIBRARY_URL STREQUAL args_GIT_REPOSITORY) AND ((SIBR_GITLIBRARY_BRANCH STREQUAL args_GIT_TAG) OR (SIBR_GITLIBRARY_TAG STREQUAL args_GIT_TAG) OR (SIBR_GITLIBRARY_COMMIT_HASH STREQUAL args_GIT_TAG))) message(STATUS "Library ${args_TARGET} already available, skipping.") set(SIBR_GITLIBRARY_DECLARED ON) else() message(STATUS "Adding library ${args_TARGET} from git...") endif() endif() FetchContent_Declare(${args_TARGET} GIT_REPOSITORY ${args_GIT_REPOSITORY} GIT_TAG ${args_GIT_TAG} GIT_SHALLOW ON SOURCE_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} SUBBUILD_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/subbuild BINARY_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/build ) FetchContent_GetProperties(${args_TARGET}) string(TOLOWER "" lcTargetName) if((NOT SIBR_GITLIBRARY_DECLARED) AND (NOT ${lcTargetName}_POPULATED)) message(STATUS "Populating library ${args_TARGET}...") FetchContent_Populate(${args_TARGET} QUIET GIT_REPOSITORY ${args_GIT_REPOSITORY} GIT_TAG ${args_GIT_TAG} SOURCE_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} SUBBUILD_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/subbuild BINARY_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/build ) endif() add_subdirectory(${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/build) get_target_property(type ${args_TARGET} TYPE) if(NOT (type STREQUAL "INTERFACE_LIBRARY")) set_target_properties(${args_TARGET} PROPERTIES FOLDER "extlibs") ibr_install_target(${args_TARGET} COMPONENT ${args_TARGET}_install ## will create custom target to install only this project ) endif() list(APPEND ${args_TARGET}_INCLUDE_DIRS ${EXTLIBS_PACKAGE_FOLDER}/${args_ROOT_DIR}) list(APPEND ${args_TARGET}_INCLUDE_DIRS ${EXTLIBS_PACKAGE_FOLDER}/${args_ROOT_DIR}/${args_SOURCE_DIR}) foreach(args_INCLUDE_DIR ${args_INCLUDE_DIRS}) list(APPEND ${args_TARGET}_INCLUDE_DIRS ${EXTLIBS_PACKAGE_FOLDER}/${args_ROOT_DIR}/${args_SOURCE_DIR}/${args_INCLUDE_DIR}) endforeach() include_directories(${${args_TARGET}_INCLUDE_DIRS}) else() message(FATAL "Error on sibr_gitlibrary for target ${args_TARGET}: missing git tag or git url.") endif() endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/MSVCsetUserCommand.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(__MSVCsetUserCommand_cmake_INCLUDED__) return() else() set(__MSVCsetUserCommand_cmake_INCLUDED__ ON) endif() ## Allow to configure the Debugger settings of visual studio ## Note: Using this command under linux doesn't affect anything ## On run Debug Windows local : visual will try to load a specific COMMAND with ARGS in the provided WORKING_DIR ## ## usage: ## MSVCsetUserCommand( ## [COMMAND | [ PATH [FILE ] ] ] ## ARGS ## WORKING_DIR ## ) ## ## Warning 1 : All arugments () must be passed under quotes ## Warning 2 : WORKING_DIR path arg have to finish with remain slah '/' ## Warning 3 : use COMMAND for external app OR PATH (optionaly with FILE) option(s) to set your built/installed/moved target ## ## Example 1: ## include(MSVCsetUserCommand) ## MSVCsetUserCommand( UnityRenderingPlugin ## COMMAND "C:/Program Files (x86)/Unity/Editor/Unity.exe" ## ARGS "-force-opengl -projectPath \"${CMAKE_HOME_DIRECTORY}/UnityPlugins/RenderingPluginExample/UnityProject\"" ## WORKING_DIR "${CMAKE_HOME_DIRECTORY}/UnityPlugins/RenderingPluginExample/UnityProject" ## VERBOSE ## ) ## ## Example 2: ## include(MSVCsetUserCommand) ## MSVCsetUserCommand( ibrApp ## PATH "C:/Program Files (x86)/workspace/IBR/install" ## FILE "ibrApp${CMAKE_EXECUTABLE_SUFFIX}" ## this option line is optional since the target name didn't change between build and install step ## ARGS "-path \"${CMAKE_HOME_DIRECTORY}/dataset\"" ## WORKING_DIR "${CMAKE_HOME_DIRECTORY}" ## VERBOSE ## ) ## function(MSVCsetUserCommand targetName) cmake_parse_arguments(MSVCsuc "VERBOSE" "PATH;FILE;COMMAND;ARGS;WORKING_DIR" "" ${ARGN} ) ## If no arguments are given, do not create an unecessary .vcxproj.user file set(MSVCsuc_DEFAULT OFF) if(MSVCsuc_PATH AND MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() if(MSVCsuc_FILE AND MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() if(NOT MSVCsuc_COMMAND) if(MSVCsuc_PATH AND MSVCsuc_FILE) set(MSVCsuc_COMMAND "${MSVCsuc_PATH}\\${MSVCsuc_FILE}") elseif(MSVCsuc_PATH) set(MSVCsuc_COMMAND "${MSVCsuc_PATH}\\$(TargetFileName)") else() set(MSVCsuc_COMMAND "$(TargetPath)") ## => $(TargetDir)\$(TargetName)$(TargetExt) endif() elseif(MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() # NOTE: there was a typo here. there is an else if written after else statement # changing the order of the else if statement if(MSVCsuc_WORKING_DIR) file(TO_NATIVE_PATH ${MSVCsuc_WORKING_DIR} MSVCsuc_WORKING_DIR) elseif(MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) else() set(MSVCsuc_WORKING_DIR "$(ProjectDir)") endif() if(NOT MSVCsuc_ARGS) set(MSVCsuc_ARGS "") elseif(MSVCsuc_DEFAULT) set(MSVCsuc_DEFAULT OFF) endif() if(MSVC10 OR (MSVC AND MSVC_VERSION GREATER 1600)) # 2010 or newer if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(PLATEFORM_BITS x64) else() set(PLATEFORM_BITS Win32) endif() if(NOT MSVCsuc_DEFAULT AND PLATEFORM_BITS) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${targetName}.vcxproj.user" " ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS} WindowsLocalDebugger ${MSVCsuc_WORKING_DIR} " ) if(MSVCsuc_VERBOSE) message(STATUS "[MSVCsetUserCommand] Write ${CMAKE_CURRENT_BINARY_DIR}/${targetName}.vcxproj.user file") message(STATUS " to execute ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS}") message(STATUS " from derectory ${MSVCsuc_WORKING_DIR}") message(STATUS " on visual studio run debugger button") endif() else() message(WARNING "PLATEFORM_BITS is undefined...") endif() else() if(MSVCsuc_VERBOSE) message(WARNING "MSVCsetUserCommand is disable because too old MSVC is used (need MSVC10 2010 or newer)") endif() endif() endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/Modules/FindASSIMP.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Try to find the ASSIMP library ## Once done this will define ## ## ASSIMP_FOUND - system has ASSIMP ## ASSIMP_INCLUDE_DIR - The ASSIMP include directory ## ASSIMP_LIBRARIES - The libraries needed to use ASSIMP ## ASSIMP_CMD - the full path of ASSIMP executable ## ASSIMP_DYNAMIC_LIB - the Assimp dynamic lib (available only on windows as .dll file for the moment) ## ## Edited for using a bugfixed version of Assimp if(NOT ASSIMP_DIR) set(ASSIMP_DIR "$ENV{ASSIMP_DIR}" CACHE PATH "ASSIMP root directory") endif() if(ASSIMP_DIR) file(TO_CMAKE_PATH ${ASSIMP_DIR} ASSIMP_DIR) endif() ## set the LIB POSTFIX to find in a right directory according to what kind of compiler we use (32/64bits) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(ASSIMP_SEARCH_LIB "lib64") set(ASSIMP_SEARCH_BIN "bin64") set(ASSIMP_SEARCH_LIB_PATHSUFFIXE "x64") else() set(ASSIMP_SEARCH_LIB "lib32") set(ASSIMP_SEARCH_BIN "bin32") set(ASSIMP_SEARCH_LIB_PATHSUFFIXE "x86") endif() set(PROGRAMFILESx86 "PROGRAMFILES(x86)") FIND_PATH(ASSIMP_INCLUDE_DIR NAMES assimp/config.h PATHS ${ASSIMP_DIR} ## linux /usr /usr/local /opt/local ## windows "$ENV{PROGRAMFILES}/Assimp" "$ENV{${PROGRAMFILESx86}}/Assimp" "$ENV{ProgramW6432}/Assimp" PATH_SUFFIXES include ) FIND_LIBRARY(ASSIMP_LIBRARY NAMES assimp-vc140-mt PATHS ${ASSIMP_DIR}/${ASSIMP_SEARCH_LIB} ${ASSIMP_DIR}/lib ${ASSIMP_DIR}/lib64 ## linux /usr/${ASSIMP_SEARCH_LIB} /usr/local/${ASSIMP_SEARCH_LIB} /opt/local/${ASSIMP_SEARCH_LIB} /usr/lib /usr/local/lib /opt/local/lib ## windows "$ENV{PROGRAMFILES}/Assimp/${ASSIMP_SEARCH_LIB}" "$ENV{${PROGRAMFILESx86}}/Assimp/${ASSIMP_SEARCH_LIB}" "$ENV{ProgramW6432}/Assimp/${ASSIMP_SEARCH_LIB}" "$ENV{PROGRAMFILES}/Assimp/lib" "$ENV{${PROGRAMFILESx86}}/Assimp/lib" "$ENV{ProgramW6432}/Assimp/lib" PATH_SUFFIXES ${ASSIMP_SEARCH_LIB_PATHSUFFIXE} ) set(ASSIMP_LIBRARIES ${ASSIMP_LIBRARY}) if(ASSIMP_LIBRARY) get_filename_component(ASSIMP_LIBRARY_DIR ${ASSIMP_LIBRARY} PATH) file(GLOB ASSIMP_DYNAMIC_LIB "${ASSIMP_LIBRARY_DIR}/assimp*.dll") if(NOT ASSIMP_DYNAMIC_LIB) message("ASSIMP_DYNAMIC_LIB is missing... at ${ASSIMP_LIBRARY_DIR}") endif() set(ASSIMP_DYNAMIC_LIB ${ASSIMP_DYNAMIC_LIB} CACHE PATH "Windows dll location") endif() MARK_AS_ADVANCED(ASSIMP_DYNAMIC_LIB ASSIMP_INCLUDE_DIR ASSIMP_LIBRARIES) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(ASSIMP REQUIRED_VARS ASSIMP_INCLUDE_DIR ASSIMP_LIBRARIES FAIL_MESSAGE "ASSIMP wasn't found correctly. Set ASSIMP_DIR to the root SDK installation directory." ) if(NOT ASSIMP_FOUND) set(ASSIMP_DIR "" CACHE STRING "Path to ASSIMP install directory") endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/Modules/FindEmbree.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Important Note: ## This is not an official Find*cmake. It has been written for searching through ## a custom path (EMBREE_DIR) before checking elsewhere. ## ## FindEMBREE.cmake ## Find EMBREE's includes and library ## ## This module defines : ## [in] EMBREE_DIR, The base directory to search for EMBREE (as cmake var or env var) ## [out] EMBREE_INCLUDE_DIR where to find EMBREE.h ## [out] EMBREE_LIBRARIES, EMBREE_LIBRARY, libraries to link against to use EMBREE ## [out] EMBREE_FOUND, If false, do not try to use EMBREE. ## if(NOT EMBREE_DIR) set(EMBREE_DIR "$ENV{EMBREE_DIR}" CACHE PATH "EMBREE root directory") endif() if(EMBREE_DIR) file(TO_CMAKE_PATH ${EMBREE_DIR} EMBREE_DIR) endif() ## set the LIB POSTFIX to find in a right directory according to what kind of compiler we use (32/64bits) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(EMBREE_SEARCH_LIB "lib64") set(EMBREE_SEARCH_BIN "bin64") set(EMBREE_SEARCH_LIB_PATHSUFFIXE "x64") else() set(EMBREE_SEARCH_LIB "lib32") set(EMBREE_SEARCH_BIN "bin32") set(EMBREE_SEARCH_LIB_PATHSUFFIXE "x86") endif() set(PROGRAMFILESx86 "PROGRAMFILES(x86)") FIND_PATH(EMBREE_INCLUDE_DIR NAMES embree3/rtcore_geometry.h PATHS ${EMBREE_DIR} ## linux /usr /usr/local /opt/local ## windows "$ENV{PROGRAMFILES}/EMBREE" "$ENV{${PROGRAMFILESx86}}/EMBREE" "$ENV{ProgramW6432}/EMBREE" PATH_SUFFIXES include ) FIND_LIBRARY(EMBREE_LIBRARY NAMES embree3 PATHS ${EMBREE_DIR}/${EMBREE_SEARCH_LIB} ${EMBREE_DIR}/lib ## linux /usr/${EMBREE_SEARCH_LIB} /usr/local/${EMBREE_SEARCH_LIB} /opt/local/${EMBREE_SEARCH_LIB} /usr/lib /usr/local/lib /opt/local/lib ## windows "$ENV{PROGRAMFILES}/EMBREE/${EMBREE_SEARCH_LIB}" "$ENV{${PROGRAMFILESx86}}/EMBREE/${EMBREE_SEARCH_LIB}" "$ENV{ProgramW6432}/EMBREE/${EMBREE_SEARCH_LIB}" "$ENV{PROGRAMFILES}/EMBREE/lib" "$ENV{${PROGRAMFILESx86}}/EMBREE/lib" "$ENV{ProgramW6432}/EMBREE/lib" PATH_SUFFIXES ${EMBREE_SEARCH_LIB_PATHSUFFIXE} ) set(EMBREE_LIBRARIES ${EMBREE_LIBRARY}) MARK_AS_ADVANCED(EMBREE_INCLUDE_DIR EMBREE_LIBRARIES) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(EMBREE REQUIRED_VARS EMBREE_INCLUDE_DIR EMBREE_LIBRARIES FAIL_MESSAGE "EMBREE wasn't found correctly. Set EMBREE_DIR to the root SDK installation directory." ) if(NOT EMBREE_FOUND) set(EMBREE_DIR "" CACHE STRING "Path to EMBREE install directory") endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/Modules/FindFFmpeg.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Try to find the FFMPEG library ## Once done this will define ## ## FFMPEG_FOUND - system has FFmpeg ## FFMPEG_INCLUDE_DIR - The FFmpeg include directory ## FFMPEG_LIBRARIES - The libraries needed to use FFmpeg ## FFMPEG_DYNAMIC_LIBS - DLLs for windows if(NOT FFMPEG_DIR) set(FFMPEG_DIR "$ENV{FFMPEG_DIR}" CACHE PATH "FFMPEG_DIR root directory") endif() if(FFMPEG_DIR) file(TO_CMAKE_PATH ${FFMPEG_DIR} FFMPEG_DIR) endif() MACRO(FFMPEG_FIND varname shortname headername) # Path to include dirs FIND_PATH(FFMPEG_${varname}_INCLUDE_DIRS NAMES "lib${shortname}/${headername}" PATHS "${FFMPEG_DIR}/include" # modify this to adapt according to OS/compiler ) #Add libraries IF(${FFMPEG_${varname}_INCLUDE_DIRS} STREQUAL "FFMPEG_${varname}_INCLUDE_DIR-NOTFOUND") MESSAGE(STATUS "Can't find includes for ${shortname}...") ELSE() FIND_LIBRARY(FFMPEG_${varname}_LIBRARIES NAMES ${shortname} PATHS ${FFMPEG_DIR}/lib ) # set libraries and other variables SET(FFMPEG_${varname}_FOUND 1) SET(FFMPEG_${varname}_INCLUDE_DIRS ${FFMPEG_${varname}_INCLUDE_DIR}) SET(FFMPEG_${varname}_LIBS ${FFMPEG_${varname}_LIBRARIES}) ENDIF() ENDMACRO(FFMPEG_FIND) #Calls to ffmpeg_find to get librarires ------------------------------ FFMPEG_FIND(LIBAVFORMAT avformat avformat.h) FFMPEG_FIND(LIBAVDEVICE avdevice avdevice.h) FFMPEG_FIND(LIBAVCODEC avcodec avcodec.h) FFMPEG_FIND(LIBAVUTIL avutil avutil.h) FFMPEG_FIND(LIBSWSCALE swscale swscale.h) # check if libs are found and set FFMPEG related variables #SET(FFMPEG_FOUND "NO") IF(FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVDEVICE_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND FFMPEG_LIBSWSCALE_FOUND) # All ffmpeg libs are here SET(FFMPEG_FOUND "YES") SET(FFMPEG_INCLUDE_DIR ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS}) SET(FFMPEG_LIBRARY_DIRS ${FFMPEG_LIBAVFORMAT_LIBRARY_DIRS}) SET(FFMPEG_LIBRARIES ${FFMPEG_LIBAVFORMAT_LIBS} ${FFMPEG_LIBAVDEVICE_LIBS} ${FFMPEG_LIBAVCODEC_LIBS} ${FFMPEG_LIBAVUTIL_LIBS} ${FFMPEG_LIBSWSCALE_LIBS} ) # add dynamic libraries if(WIN32) file(GLOB FFMPEG_DYNAMIC_LIBS "${FFMPEG_DIR}/bin/*.dll") if(NOT FFMPEG_DYNAMIC_LIBS) message("FFMPEG_DYNAMIC_LIBS is missing...") endif() set(FFMPEG_DYNAMIC_LIBS ${FFMPEG_DYNAMIC_LIBS} CACHE PATH "Windows dll location") endif() mark_as_advanced(FFMPEG_INCLUDE_DIR FFMPEG_LIBRARY_DIRS FFMPEG_LIBRARIES FFMPEG_DYNAMIC_LIBS) ELSE () MESSAGE(STATUS "Could not find FFMPEG") ENDIF() INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFMPEG REQUIRED_VARS FFMPEG_INCLUDE_DIR FFMPEG_LIBRARIES FAIL_MESSAGE "FFmpeg wasn't found correctly. Set FFMPEG_DIR to the root SDK installation directory." ) if(NOT FFMPEG_FOUND) set(FFMPEG_DIR "" CACHE STRING "Path to FFmpeg install directory") endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/Win3rdParty.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## This file should be include and use only on WIN32 OS and once ## It allow to auto check/download and use a preconfigured 3rdParty binaries for cmake usage ## It use the downloadAndExtractZipFile cmake module to work. ## if(__Win3rdParty_cmake_INCLUDED__) return() else() set(__Win3rdParty_cmake_INCLUDED__ ON) endif() ## ## To be sure to reset an empty cached variable but keep any other kind of variables ## ## Usage: ## check_cached_var( [FORCE]) ## ## is the cached cmake variable you need to reset ## is the new default value of the reseted cached cmake variable ## is the kind of GUI cache input can be : FILEPATH; PATH; STRING or BOOL ## is the associated GUI cache input documentation display in the GUI ## FORCE option could be use to reset a cached variable even if it is not empty. ## macro(check_cached_var var resetedCachedValue cacheType cacheDoc) # message(STATUS "inside check_cached_var macro. argn=${ARGN}") cmake_parse_arguments(ccv "FORCE" "" "" ${ARGN}) if(ccv_FORCE) set(FORCE FORCE) else() set(FORCE ) endif() if(NOT ${var} OR ccv_FORCE) unset(${var} CACHE) # message(STATUS "setting new cache value. var ${var} = ${resetedCachedValue}") set(${var} "${resetedCachedValue}" CACHE ${cacheType} "${cacheDoc}" ${FORCE}) endif() endmacro() ## ## Win3rdParty function allow to specify a directory which contain all necessary windows dependenties. ## By uploading 3rdParty directory (which contain dependencies, *.lib, *.dll... for a specific version of compiler) onto Gforge file tab, ## you get back an URL of download you can give to this function with a directory name. So you can provide multiple 3rdParty version of same dependencies (MSVC11, MSVC12...). ## By providing a prefix to this function, you allow to use different kind of 3rdParty which can be handled by CMAKE OPTIONS depending on what your framework need for example. ## ## Usage 1: ## Win3rdParty( MSVC ## [MSVC ] [...] ## [VCID] [DEFAULT_USE] [VERBOSE] ) ## ## * allow to identify which 3rdParty you process (prefix name) ## * MSVC flag could be MSVC11 or MSVC12 (any element of the MSVC_VERSIONS_LIST) and refer to a 3rdParty compiler with : ## * which will be the local pathName of the downloaded 3rdParty : relative to CMAKE_BINARY_DIR ## * which is the link location of the 3rdParty zip ## * VCID flag will make available a cache variable ${prefix}_WIN3RDPARTY_VCID ## * DEFAULT_USE flag [ON|OFF] may be used to set default value of cmake cached variable : _WIN3RDPARTY_USE [default to ON] ## ## WARNING: ## This function define CACHE variables you can use after : ## * ${prefix}_WIN3RDPARTY_USE : allow to check/downloaded win3rdParty dir (it will force the cached variables for this dependency folder generally _DIR>) ## * ${prefix}_WIN3RDPARTY_DIR : where is your local win3rdParty dir (the PATH) ## * ${prefix}_WIN3RDPARTY_VCID : [if VCID flag is used] the MSVC id (commonly used to prefix/suffix library name, see boost or CGAL) ## ## If you want to add a win3rdParty version, please: ## 1- build dependencies on your local side with the compiler you want ## 2- build your own zip with your built dependencies ## 3- upload it (onto the forge where the project is stored) and copy the link location in order to use it for this function ## 4- if you just introduced a new MSVC version, add it to the MSVC_VERSIONS_LIST bellow ## ## In a second pass, you can also use this function to set necessary cmake cached variables in order to let cmake find packages of these 3rdParty. ## ## Usage 2: ## win3rdParty( [VERBOSE] MULTI_SET|SET ## CHECK_CACHED_VAR [LIST] [DOC ] ## [ CHECK_CACHED_VAR [LIST] [DOC ] ] [...] ## ## * MULTI_SET or SET flags are used to tell cmake that all next arguments will use repeated flags with differents entries (SET mean we will provide only one set of arguments, without repetition) ## * CHECK_CACHED_VAR are the repeated flag which contain differents entries ## * is the cmake variable you want to be cached for the project ## * is the kind of cmake variable (couble be: FILEPATH; PATH; STRING or BOOL) => see check_cached_var. ## * LIST optional flag could be used with CHECK_CACHED_VAR when = STRING. It allow to handle multiple STRINGS value list. ## * is the value of the variable (if FILEPATH, PATH or STRING: use quotes, if BOOL : use ON/OFF) ## * DOC optional flag is used to have a tooltips info about this new cmake variable entry into the GUI (use quotes). ## ## Full example 1 : ## win3rdParty(COMMON MSVC11 "win3rdParty-MSVC11" "https://path.to/an.archive.7z" ## SET CHECK_CACHED_VAR SuiteSparse_DIR PATH "SuiteSparse-4.2.1" DOC "default empty doc" ## ) ## ## WARNING: ## For the 2nd usage (with MULTI_SET), if you planned to set some CACHED_VAR using/composed by ${prefix}_WIN3RDPARTY_* just set in this macro (usage 1), ## then (due to the not yet existing var) you will need to call this function 2 times : ## One for the 1st usage (downloading of the current compiler 3rdParty). ## One for the MLUTI_SET flag which will use existsing ${prefix}_WIN3RDPARTY_* cached var. ## ## Full example 2 : ## win3rdParty(COMMON MSVC11 "win3rdParty-MSVC11" "https://path.to/an.archive.7z") ## win3rdParty(COMMON MULTI_SET ## CHECK_CACHED_VAR CGAL_INCLUDE_DIR PATH "CGAL-4.3/include" DOC "default empty doc" ## CHECK_CACHED_VAR CGAL_LIBRARIES STRING LIST "debug;CGAL-4.3/lib${LIB_POSTFIX}/CGAL-${WIN3RDPARTY_COMMON_VCID}-mt-gd-4.3.lib;optimized;CGAL-4.3/lib${LIB_POSTFIX}/CGAL-${WIN3RDPARTY_COMMON_VCID}-mt-4.3.lib" ## ## ## WARNING: This function use internaly : ## * downloadAndExtractZipFile.cmake ## * parse_arguments_multi.cmake ## * check_cached_var macro ## function(win3rdParty prefix ) # ARGV: list of all arguments given to the macro/function # ARGN: list of remaining arguments if(NOT WIN32) return() endif() ## set the handled version of MSVC ## if you plan to add a win3rdParty dir to download with a new MSVC version: build the win3rdParty dir and add the MSCV entry here. set(MSVC_VERSIONS_LIST "MSVC17;MSVC11;MSVC12;MSVC14") #include(CMakeParseArguments) # CMakeParseArguments is obsolete since cmake 3.5 # cmake_parse_arguments ( args) # : options (flags) pass to the macro # : options that neeed a value # : options that neeed more than one value cmake_parse_arguments(w3p "VCID" "VERBOSE;TIMEOUT;DEFAULT_USE" "${MSVC_VERSIONS_LIST};MULTI_SET;SET" ${ARGN}) # message(STATUS "value of w3p_VCID = ${w3p_VCID}") # message(STATUS "value of w3p_VERBOSE = ${w3p_VERBOSE}") # message(STATUS "value of w3p_TIMEOUT = ${w3p_TIMEOUT}") # message(STATUS "value of w3p_DEFAULT_USE = ${w3p_DEFAULT_USE}") # foreach (loop_var ${MSVC_VERSIONS_LIST}) # message(STATUS "value of w3p_${loop_var} = ${w3p_${loop_var}}") # endforeach(loop_var) # message(STATUS "value of w3p_MULTI_SET = ${w3p_MULTI_SET}") # message(STATUS "value of w3p_SET = ${w3p_SET}") # message("values for MSVC = ${w3p_MSVC14}") if(NOT w3p_TIMEOUT) set(w3p_TIMEOUT 300) endif() if(NOT DEFINED w3p_DEFAULT_USE) set(w3p_DEFAULT_USE ON) endif() ## 1st use (check/update|download) : set(${prefix}_WIN3RDPARTY_USE ${w3p_DEFAULT_USE} CACHE BOOL "Use required 3rdParty binaries from ${prefix}_WIN3RDPARTY_DIR or download it if not exist") ## We want to test if each version of MSVC was filled by the function (see associated parameters) ## As CMake is running only for one version of MSVC, if that MSVC version was filled, we get back associated parameters, ## otherwise we can't use the downloadAndExtractZipFile with win3rdParty. set(enableWin3rdParty OFF) foreach(MSVC_VER ${MSVC_VERSIONS_LIST}) if(${MSVC_VER} AND w3p_${MSVC_VER} OR ${MSVC_TOOLSET_VERSION} EQUAL 143 AND ${MSVC_VER} STREQUAL "MSVC17") list(LENGTH w3p_${MSVC_VER} count) if("${count}" LESS "2") #message(WARNING "You are using ${MSVC_VER} with ${prefix}_WIN3RDPARTY_USE=${${prefix}_WIN3RDPARTY_USE}, but win3rdParty function isn't filled for ${MSVC_VER}!") else() list(GET w3p_${MSVC_VER} 0 Win3rdPartyName) list(GET w3p_${MSVC_VER} 1 Win3rdPartyUrl) if(w3p_VCID) ## try to get the VcId of MSVC. See also MSVC_VERSION cmake var in the doc. string(REGEX REPLACE "MS([A-Za-z_0-9-]+)" "\\1" vcId ${MSVC_VER}) string(TOLOWER ${vcId} vcId) set(${prefix}_WIN3RDPARTY_VCID "${vcId}0" CACHE STRING "the MSVC id (commonly used to prefix/suffix library name, see boost or CGAL)") mark_as_advanced(${prefix}_WIN3RDPARTY_VCID) endif() set(enableWin3rdParty ON) set(suffixCompilerID ${MSVC_VER}) break() endif() endif() endforeach() ## If previous step succeed to get MSVC dirname and URL of the current MSVC version, use it to auto download/update the win3rdParty dir if(enableWin3rdParty AND ${prefix}_WIN3RDPARTY_USE) if(IS_ABSOLUTE "${Win3rdPartyName}") else() set(Win3rdPartyName "${CMAKE_BINARY_DIR}/${Win3rdPartyName}") endif() if(NOT EXISTS "${Win3rdPartyName}") file(MAKE_DIRECTORY ${Win3rdPartyName}) endif() include(downloadAndExtractZipFile) downloadAndExtractZipFile( "${Win3rdPartyUrl}" ## URL link location "Win3rdParty-${prefix}-${suffixCompilerID}.7z" ## where download it: relative path, so default to CMAKE_BINARY_DIR "${Win3rdPartyName}" ## where extract it : fullPath (default relative to CMAKE_BINARY_DIR) CHECK_DIRTY_URL "${Win3rdPartyName}/Win3rdPartyUrl" ## last downloaded url file : fullPath (default relative to CMAKE_BINARY_DIR) TIMEOUT ${w3p_TIMEOUT} VERBOSE ${w3p_VERBOSE} ) file(GLOB checkDl "${Win3rdPartyName}/*") list(LENGTH checkDl checkDlCount) if("${checkDlCount}" GREATER "1") else() message("The downloadAndExtractZipFile didn't work...?") set(enableWin3rdParty OFF) endif() endif() ## Try to auto set ${prefix}_WIN3RDPARTY_DIR or let user set it manually set(${prefix}_WIN3RDPARTY_DIR "" CACHE PATH "windows ${Win3rdPartyName} dir to ${prefix} dependencies of the project") if(NOT ${prefix}_WIN3RDPARTY_DIR AND ${prefix}_WIN3RDPARTY_USE) if(EXISTS "${Win3rdPartyName}") unset(${prefix}_WIN3RDPARTY_DIR CACHE) set(${prefix}_WIN3RDPARTY_DIR "${Win3rdPartyName}" CACHE PATH "dir to ${prefix} dependencies of the project") endif() endif() if(EXISTS ${${prefix}_WIN3RDPARTY_DIR}) message(STATUS "Found a 3rdParty ${prefix} dir : ${${prefix}_WIN3RDPARTY_DIR}.") set(enableWin3rdParty ON) elseif(${prefix}_WIN3RDPARTY_USE) message(WARNING "${prefix}_WIN3RDPARTY_USE=${${prefix}_WIN3RDPARTY_USE} but ${prefix}_WIN3RDPARTY_DIR=${${prefix}_WIN3RDPARTY_DIR}.") set(enableWin3rdParty OFF) endif() ## Final check if(NOT enableWin3rdParty) message("Disable ${prefix}_WIN3RDPARTY_USE (cmake cached var will be not set), due to a win3rdParty problem.") message("You still can set ${prefix}_WIN3RDPARTY_DIR to an already downloaded Win3rdParty directory location.") set(${prefix}_WIN3RDPARTY_USE OFF CACHE BOOL "Use required 3rdParty binaries from ${prefix}_WIN3RDPARTY_DIR or download it if not exist" FORCE) endif() ## 2nd use : handle multi values args to set cached cmake variables in order to ease the next find_package call if(${prefix}_WIN3RDPARTY_USE AND ${prefix}_WIN3RDPARTY_DIR) if(w3p_VERBOSE) message(STATUS "Try to set cmake cached variables for ${prefix} required libraries directly from : ${${prefix}_WIN3RDPARTY_DIR}.") endif() include(parse_arguments_multi) # message (STATUS "before defining an override of parse_arguments_multi_function") function(parse_arguments_multi_function ) ## overloaded function to handle all CHECK_CACHED_VAR values list (see: parse_arguments_multi) # message(STATUS "inside overloaded parse_arguments_multi_function defined in Win3rdParty.cmake") # message(STATUS ${ARGN}) ## we know the function take 3 args : var cacheType resetedCachedValue (see check_cached_var) cmake_parse_arguments(pamf "" "DOC" "LIST" ${ARGN}) ## var and cacheType are mandatory (with the resetedCachedValue) set(var ${ARGV0}) set(cacheType ${ARGV1}) # message(STATUS "var=${var} and cacheType=${cacheType} list=${pamf_LIST}") if(pamf_DOC) set(cacheDoc ${pamf_DOC}) else() set(cacheDoc "") endif() if(pamf_LIST) set(value ${pamf_LIST}) else() # message("USING ARGV2 with value ${ARGV2}") set(value ${ARGV2}) endif() # message("inside override function in Win3rdparty.cmake value+ ${value}") if("${cacheType}" MATCHES "PATH" AND EXISTS "${${prefix}_WIN3RDPARTY_DIR}/${value}") # message("math with path") set(resetedCachedValue "${${prefix}_WIN3RDPARTY_DIR}/${value}") ## path relative to ${prefix}_WIN3RDPARTY_DIR elseif ("${cacheType}" MATCHES "PATH" AND EXISTS "${${prefix}_WIN3RDPARTY_DIR}") set(resetedCachedValue "${${prefix}_WIN3RDPARTY_DIR}") ## path relative to ${prefix}_WIN3RDPARTY_DIR elseif("${cacheType}" MATCHES "STRING") foreach(var IN LISTS value) if(EXISTS "${${prefix}_WIN3RDPARTY_DIR}/${var}") list(APPEND resetedCachedValue "${${prefix}_WIN3RDPARTY_DIR}/${var}") ## string item of the string list is a path => make relative to ${prefix}_WIN3RDPARTY_DIR else() list(APPEND resetedCachedValue ${var}) ## string item of the string list is not an existing path => simply use the item endif() endforeach() else() set(resetedCachedValue "${value}") ## could be a BOOL or a STRING endif() ## call our macro to reset cmake cache variable if empty check_cached_var(${var} "${resetedCachedValue}" ${cacheType} "${cacheDoc}" FORCE) endfunction() # message (STATUS "after defining an override of parse_arguments_multi_function") if(w3p_MULTI_SET) parse_arguments_multi(CHECK_CACHED_VAR w3p_MULTI_SET ${w3p_MULTI_SET}) ## internaly will call our overloaded parse_arguments_multi_function elseif(w3p_SET) # message("calling set version of parse_arguments_multi with w3p_set = ${w3p_SET}") parse_arguments_multi(CHECK_CACHED_VAR w3p_SET ${w3p_SET}) endif() endif() endfunction() ## cmake variables introspection to globally activate/deactivate ${prefix}_WIN3RDPARTY_USE ## This "one shot" call (only one for the next cmake configure) will automatically then reset the global variable WIN3RDPARTY_USE to UserDefined (do nothing). ## use (call it) before and after the call of all your win3rdParty functions function(Win3rdPartyGlobalCacheAction ) set(WIN3RDPARTY_USE "UserDefined" CACHE STRING "Choose how to handle all cmake cached *_WIN3RDPARTY_USE for the next configure.\nCould be:\nUserDefined [default]\nActivateAll\nDesactivateAll" ) set_property(CACHE WIN3RDPARTY_USE PROPERTY STRINGS "UserDefined;ActivateAll;DesactivateAll" ) if(${WIN3RDPARTY_USE} MATCHES "UserDefined") else() if(${WIN3RDPARTY_USE} MATCHES "ActivateAll") set(win3rdPvalue ON) elseif(${WIN3RDPARTY_USE} MATCHES "DesactivateAll") set(win3rdPvalue OFF) endif() get_cmake_property(_variableNames CACHE_VARIABLES) foreach (_variableName ${_variableNames}) string(REGEX MATCH "[A-Za-z_0-9-]+_WIN3RDPARTY_USE" win3rdpartyUseCacheVar ${_variableName}) if(win3rdpartyUseCacheVar) string(REGEX REPLACE "([A-Za-z_0-9-]+_WIN3RDPARTY_USE)" "\\1" win3rdpartyUseCacheVar ${_variableName}) set(${win3rdpartyUseCacheVar} ${win3rdPvalue} CACHE BOOL "Use required 3rdParty binaries from ${prefix}_WIN3RDPARTY_DIR or download it if not exist" FORCE) message(STATUS "${win3rdpartyUseCacheVar} cached variable set to ${win3rdPvalue}.") endif() endforeach() set(WIN3RDPARTY_USE "UserDefined" CACHE STRING "Choose how to handle all cmake cached *_WIN3RDPARTY_USE for the next configure.\nCould be:\nUserDefined [default]\nActivateAll\nDesactivateAll" FORCE) message(STATUS "reset WIN3RDPARTY_USE to UserDefined.") endif() mark_as_advanced(WIN3RDPARTY_USE) endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/cmake_policies.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(__set_policies_INCLUDED__) return() else() set(__set_policies_INCLUDED__ ON) endif() macro(setPolicies) # No more policies to enforce endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/dependencies.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## Included once for all sub project. ## It contain the whole cmake instructions to find necessary common dependencies. ## 3rdParty (provided by sibr_addlibrary win3rdParty or from external packages) are then available in cmake sub projects. ## ## Do not include this file more than once but you can modify it to fit to your own project. ## So please, read it carefully because you can use on of these dependencies for your project or appen new one. ## ## As it is included after camke options, you can use conditional if()/endif() to encapsulate your 3rdParty. ## ## win3rdParty function allowing to auto check/download/update binaries dependencies for current windows compiler ## Please open this file in order to get more documentation and usage examples. include(Win3rdParty) include(sibr_library) Win3rdPartyGlobalCacheAction() find_package(OpenGL REQUIRED) ############ ## Find GLEW ############ if (MSVC11 OR MSVC12) set(glew_multiset_arguments CHECK_CACHED_VAR GLEW_INCLUDE_DIR PATH "glew-1.10.0/include" DOC "default empty doc" CHECK_CACHED_VAR GLEW_LIBRARIES STRING LIST "debug;glew-1.10.0/${LIB_BUILT_DIR}/glew32d.lib;optimized;glew-1.10.0/${LIB_BUILT_DIR}/glew32.lib" DOC "default empty doc" ) elseif (MSVC14) set(glew_multiset_arguments CHECK_CACHED_VAR GLEW_INCLUDE_DIR PATH "glew-2.0.0/include" DOC "default empty doc" CHECK_CACHED_VAR GLEW_SHARED_LIBRARY_RELEASE PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32.lib" CHECK_CACHED_VAR GLEW_STATIC_LIBRARY_RELEASE PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32s.lib" CHECK_CACHED_VAR GLEW_SHARED_LIBRARY_DEBUG PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32d.lib" CHECK_CACHED_VAR GLEW_STATIC_LIBRARY_DEBUG PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32sd.lib" ) else () message("There is no provided GLEW library for your version of MSVC") endif() sibr_addlibrary(NAME GLEW #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/glew-1.10.0.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/glew-1.10.0.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glew-2.0.0.7z" # using recompiled version of glew MULTI_SET ${glew_multiset_arguments} ) set(GLEW_VERBOSE ON) FIND_PACKAGE(GLEW REQUIRED) IF(GLEW_FOUND) INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) ELSE(GLEW_FOUND) MESSAGE("GLEW not found. Set GLEW_DIR to base directory of GLEW.") ENDIF(GLEW_FOUND) ############## ## Find ASSIMP ############## if (MSVC11 OR MSVC12) set(assimp_set_arguments CHECK_CACHED_VAR ASSIMP_DIR PATH "Assimp_3.1_fix" ) elseif (MSVC14) set(assimp_set_arguments CHECK_CACHED_VAR ASSIMP_DIR PATH "Assimp-4.1.0" ) else () message("There is no provided ASSIMP library for your version of MSVC") endif() sibr_addlibrary(NAME ASSIMP #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/Assimp_3.1_fix.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/Assimp_3.1_fix.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/Assimp-4.1.0.7z" MULTI_SET ${assimp_set_arguments} ) find_package(ASSIMP REQUIRED) include_directories(${ASSIMP_INCLUDE_DIR}) ################ ## Find FFMPEG ################ sibr_addlibrary(NAME FFMPEG MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/ffmpeg.zip" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/ffmpeg.zip" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/ffmpeg-4.0.2-win64-win3rdParty.7z" SET CHECK_CACHED_VAR FFMPEG_DIR PATH ${FFMPEG_WIN3RDPARTY_DIR} ) find_package(FFMPEG QUIET) include_directories(${FFMPEG_INCLUDE_DIR}) ################### ## Find embree3 ################### sibr_addlibrary( NAME embree3 MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/embree2.7.0.x64.windows.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/embree-3.6.1.x64.vc14.windows.7z" # TODO SV: provide a valid version if required ) ################### ## Find eigen3 ################### sibr_addlibrary( NAME eigen3 #MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/eigen-eigen-dc6cfdf9bcec.7z" #MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/eigen-eigen-dc6cfdf9bcec.7z" # TODO SV: provide a valid version if required MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/eigen3.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/eigen3.7z" SET CHECK_CACHED_VAR eigen3_DIR PATH "eigen/share/eigen3/cmake" ) include_directories(/usr/include/eigen3) add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO) ############# ## Find Boost ############# set(Boost_REQUIRED_COMPONENTS "system;chrono;filesystem;date_time" CACHE INTERNAL "Boost Required Components") if (WIN32) # boost multiset arguments if (MSVC11 OR MSVC12) set(boost_multiset_arguments CHECK_CACHED_VAR BOOST_ROOT PATH "boost_1_55_0" CHECK_CACHED_VAR BOOST_INCLUDEDIR PATH "boost_1_55_0" CHECK_CACHED_VAR BOOST_LIBRARYDIR PATH "boost_1_55_0/${LIB_BUILT_DIR}" #CHECK_CACHED_VAR Boost_COMPILER STRING "-${Boost_WIN3RDPARTY_VCID}" DOC "vcid (eg: -vc110 for MSVC11)" CHECK_CACHED_VAR Boost_COMPILER STRING "-vc110" DOC "vcid (eg: -vc110 for MSVC11)" # NOTE: if it doesnt work, uncomment this option and set the right value for VisualC id ) elseif (MSVC14) set(boost_multiset_arguments CHECK_CACHED_VAR BOOST_ROOT PATH "boost-1.71" CHECK_CACHED_VAR BOOST_INCLUDEDIR PATH "boost-1.71" CHECK_CACHED_VAR BOOST_LIBRARYDIR PATH "boost-1.71/${LIB_BUILT_DIR}" CHECK_CACHED_VAR Boost_COMPILER STRING "-vc141" DOC "vcid (eg: -vc110 for MSVC11)" # NOTE: if it doesnt work, uncomment this option and set the right value for VisualC id ) option(BOOST_MINIMAL_VERSION "Only get minimal Boost dependencies" ON) if(${BOOST_MINIMAL_VERSION}) set(BOOST_MSVC14_ZIP "boost-1.71-ibr-minimal.7z") else() set(BOOST_MSVC14_ZIP "boost-1.71.7z") endif() else () message("There is no provided Boost library for your version of MSVC") endif() sibr_addlibrary(NAME Boost VCID TIMEOUT 600 #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/boost_1_55_0.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/boost_1_55_0.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/${BOOST_MSVC14_ZIP}" # boost compatible with msvc14 MULTI_SET ${boost_multiset_arguments} CHECK_CACHED_VAR Boost_NO_SYSTEM_PATHS BOOL ON DOC "Set to ON to disable searching in locations not specified by these boost cached hint variables" CHECK_CACHED_VAR Boost_NO_BOOST_CMAKE BOOL ON DOC "Set to ON to disable the search for boost-cmake (package cmake config file if boost was built with cmake)" ) if(NOT Boost_COMPILER AND Boost_WIN3RDPARTY_USE) message(WARNING "Boost_COMPILER is not set and it's needed.") endif() endif() find_package(Boost 1.71.0 REQUIRED COMPONENTS ${Boost_REQUIRED_COMPONENTS}) if(WIN32) add_compile_options("$<$:/EHsc>") #add_definitions(/EHsc) endif() if(Boost_LIB_DIAGNOSTIC_DEFINITIONS) add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) endif() #if(WIN32) add_definitions(-DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB) #endif() include_directories(${BOOST_INCLUDEDIR} ${Boost_INCLUDE_DIRS}) link_directories(${BOOST_LIBRARYDIR} ${Boost_LIBRARY_DIRS}) ############## ## Find OpenMP ############## find_package(OpenMP) sibr_addlibrary( NAME NativeFileDialog MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/nfd.7z" ) ############## ## Find OpenCV ############## if (WIN32) if (${MSVC_TOOLSET_VERSION} EQUAL 143) MESSAGE("SPECIAL OPENCV HANDLING") set(opencv_set_arguments CHECK_CACHED_VAR OpenCV_DIR PATH "install" ## see OpenCVConfig.cmake ) elseif (MSVC11 OR MSVC12) set(opencv_set_arguments CHECK_CACHED_VAR OpenCV_DIR PATH "opencv/build" ## see OpenCVConfig.cmake ) elseif (MSVC14) set(opencv_set_arguments CHECK_CACHED_VAR OpenCV_DIR PATH "opencv-4.5.0/build" ## see OpenCVConfig.cmake ) else () message("There is no provided OpenCV library for your compiler, relying on find_package to find it") endif() else() message("There is no provided OpenCV library for your compiler, relying on find_package to find it") endif() sibr_addlibrary(NAME OpenCV #VERBOSE ON MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv.7z" MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv-4.5.0.7z" # opencv compatible with msvc14 and with contribs MSVC17 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv4-8.7z" SET ${opencv_set_arguments} ) find_package(OpenCV REQUIRED) ## Use directly the OpenCVConfig.cmake provided ##https://stackoverflow.com/questions/24262081/cmake-relwithdebinfo-links-to-debug-libs set_target_properties(${OpenCV_LIBS} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) add_definitions(-DOPENCV_TRAITS_ENABLE_DEPRECATED) if(OpenCV_INCLUDE_DIRS) foreach(inc ${OpenCV_INCLUDE_DIRS}) if(NOT EXISTS ${inc}) set(OpenCV_INCLUDE_DIR "" CACHE PATH "additional custom include DIR (in case of trouble to find it (fedora 17 opencv package))") endif() endforeach() if(OpenCV_INCLUDE_DIR) list(APPEND OpenCV_INCLUDE_DIRS ${OpenCV_INCLUDE_DIR}) include_directories(${OpenCV_INCLUDE_DIRS}) endif() endif() ################### ## Find GLFW ################### sibr_addlibrary( NAME GLFW MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glfw-3.2.1.7z" MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glfw-3.2.1.7z" # TODO SV: provide a valid version if required ) sibr_gitlibrary(TARGET imgui GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/imgui.git" GIT_TAG "e7f0fa31b9fa3ee4ecd2620b9951f131b4e377c6" ) sibr_gitlibrary(TARGET mrf GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/mrf.git" GIT_TAG "564e5e0b395c788d2f8b2cf4f879fed2493faea7" ) sibr_gitlibrary(TARGET nanoflann GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/nanoflann.git" GIT_TAG "7a20a9ac0a1d34850fc3a9e398fc4a7618e8a69a" ) sibr_gitlibrary(TARGET picojson GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/picojson.git" GIT_TAG "7cf8feee93c8383dddbcb6b64cf40b04e007c49f" ) sibr_gitlibrary(TARGET rapidxml GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/rapidxml.git" GIT_TAG "069e87f5ec5ce1745253bd64d89644d6b894e516" ) sibr_gitlibrary(TARGET xatlas GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/xatlas.git" GIT_TAG "0fbe06a5368da13fcdc3ee48d4bdb2919ed2a249" INCLUDE_DIRS "source/xatlas" ) Win3rdPartyGlobalCacheAction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/downloadAndExtractZipFile.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## downloadAndExtractZipFile cmake function ## Provide a way to download zip file from public internet ZIP_URL host ## and to extract it in a specific EXCTRATED_ZIP_PATH destination. ## This function use 7-Zip external tool to maximize the compatibles formats. ## This will be not download again if the EXCTRATED_ZIP_PATH already exist and DL_FORCE is set to OFF. ## This will try to unzip file if already exist in the ZIP_DL_PATH. ## ## If EXCTRATED_ZIP_PATH and/or ZIP_DL_PATH are not full path, ## it will be interpreted relative to CMAKE_BINARY_DIR ## ## Usage example : ## include(downloadAndExtractZipFile) ## downloadAndExtractZipFile( ## http://www.cs.cornell.edu/~snavely/bundler/distr/bundler-v0.4-source.zip ## ${CMAKE_BINARY_DIR}/Bundler/bundler-v0.4-source.zip ## ${CMAKE_BINARY_DIR}/Bundler ## [DL_FORCE ON|OFF] ## [TIMEOUT] ## [CHECK_DIRTY_URL] ## ) ## ## option DL_FORCE will redownload the zip file [deafult to OFF] ## option TIMEOUT will end the unzip process after this period of time [default to 600s] ## option CHECK_DIRTY_URL will write into the given file the downloaded URL and then, ## next time, if the URL was updated, it detect it with this file ## and will download the last version. This prevent to alway set manually DL_FORCE to ON... ## if(__downloadAndExtractZipFile_cmake_INCLUDED__) return() else() set(__downloadAndExtractZipFile_cmake_INCLUDED__ ON) endif() function(downloadAndExtractZipFile ZIP_URL ZIP_DL_PATH EXCTRATED_ZIP_PATH) # message(STATUS "zipUrl=${ZIP_URL} zipDlPath=${ZIP_DL_PATH} extractedZipPath=${EXCTRATED_ZIP_PATH}") cmake_parse_arguments(dwnlezf "" "VERBOSE;DL_FORCE;TIMEOUT;CHECK_DIRTY_URL" "" ${ARGN}) set(PROGRAMFILESx86 "PROGRAMFILES(x86)") ## Check entries mandatory args if(IS_ABSOLUTE "${ZIP_DL_PATH}") else() set(ZIP_DL_PATH "${CMAKE_BINARY_DIR}/${ZIP_DL_PATH}") endif() if(IS_ABSOLUTE "${EXCTRATED_ZIP_PATH}") else() set(EXCTRATED_ZIP_PATH "${CMAKE_BINARY_DIR}/${EXCTRATED_ZIP_PATH}") endif() if(NOT EXISTS "${EXCTRATED_ZIP_PATH}") file(MAKE_DIRECTORY ${EXCTRATED_ZIP_PATH}) endif() # SB: Once, one of downloaded zip was corrupted by an error message coming from the server. if(EXISTS "${ZIP_DL_PATH}") # So I check for removing such corrupted files message("Removing previous ${ZIP_DL_PATH} (might be corrupted)") file(REMOVE "${ZIP_DL_PATH}") if(EXISTS "${dwnlezf_CHECK_DIRTY_URL}") # and remove the previous (corrupted) made 'Win3rdPartyUrl' file file(REMOVE "${dwnlezf_CHECK_DIRTY_URL}") endif() endif() ## Check entries optional args macro(readDirtyUrl ) if(dwnlezf_CHECK_DIRTY_URL) if(IS_ABSOLUTE "${dwnlezf_CHECK_DIRTY_URL}") else() set(dwnlezf_CHECK_DIRTY_URL "${CMAKE_BINARY_DIR}/${dwnlezf_CHECK_DIRTY_URL}") endif() get_filename_component(unzipDir ${EXCTRATED_ZIP_PATH} NAME) get_filename_component(unzipPath ${EXCTRATED_ZIP_PATH} PATH) message(STATUS "Checking ${unzipDir} [from ${unzipPath}]...") if(EXISTS "${dwnlezf_CHECK_DIRTY_URL}") get_filename_component(CHECK_DIRTY_URL_FILENAME ${dwnlezf_CHECK_DIRTY_URL} NAME) file(STRINGS "${dwnlezf_CHECK_DIRTY_URL}" contents) list(GET contents 0 downloadURL) list(REMOVE_AT contents 0) if("${downloadURL}" MATCHES "${ZIP_URL}") if(dwnlezf_VERBOSE) message(STATUS "Your downloaded version (URL) seems to be up to date. Let me check if nothing is missing... (see ${dwnlezf_CHECK_DIRTY_URL}).") endif() file(GLOB PATHNAME_PATTERN_LIST "${EXCTRATED_ZIP_PATH}/*") ## is there something inside the downloaded destination ? unset(NAME_PATTERN_LIST) foreach(realPathPattern ${PATHNAME_PATTERN_LIST}) get_filename_component(itemName ${realPathPattern} NAME) list(APPEND NAME_PATTERN_LIST ${itemName}) endforeach() if(NAME_PATTERN_LIST) foreach(item ${contents}) list(FIND NAME_PATTERN_LIST ${item} id) if(${id} MATCHES "-1") message(STATUS "${item} is missing, your downloaded version content changed, need to redownload it.") set(ZIP_DL_FORCE ON) break() else() list(REMOVE_AT NAME_PATTERN_LIST ${id}) set(ZIP_DL_FORCE OFF) endif() endforeach() if(NOT ZIP_DL_FORCE AND NAME_PATTERN_LIST) message("Yours seems to be up to date (regarding to ${CHECK_DIRTY_URL_FILENAME})!\nBut there are additional files/folders into your downloaded destination (feel free to clean it if you want).") foreach(item ${NAME_PATTERN_LIST}) if(item) message("${item}") endif() endforeach() endif() endif() else() set(ZIP_DL_FORCE ON) message(STATUS "Your downloaded version is dirty (too old).") endif() else() file(GLOB PATHNAME_PATTERN_LIST "${EXCTRATED_ZIP_PATH}/*") ## is there something inside the downloaded destination ? if(NOT PATHNAME_PATTERN_LIST) message("We found nothing into ${EXCTRATED_ZIP_PATH}, we will try to download it for you now.") endif() set(ZIP_DL_FORCE ON) endif() endif() endmacro() readDirtyUrl() if(NOT ZIP_DL_FORCE) return() ## do not need to further (as we are up to date, just exit the function endif() macro(writeDirtyUrl ) if(dwnlezf_CHECK_DIRTY_URL) file(WRITE "${dwnlezf_CHECK_DIRTY_URL}" "${ZIP_URL}\n") file(GLOB PATHNAME_PATTERN_LIST "${EXCTRATED_ZIP_PATH}/*") ## is there something inside the downloaded destination ? unset(NAME_PATTERN_LIST) foreach(realPathPattern ${PATHNAME_PATTERN_LIST}) get_filename_component(itemName ${realPathPattern} NAME) list(APPEND NAME_PATTERN_LIST ${itemName}) endforeach() if(NAME_PATTERN_LIST) foreach(item ${NAME_PATTERN_LIST}) file(APPEND "${dwnlezf_CHECK_DIRTY_URL}" "${item}\n") endforeach() endif() endif() endmacro() if(dwnlezf_DL_FORCE) set(ZIP_DL_FORCE ON) endif() if(NOT dwnlezf_TIMEOUT) set(dwnlezf_TIMEOUT 600) endif() math(EXPR dwnlezf_TIMEOUT_MIN "${dwnlezf_TIMEOUT}/60") macro(unzip whichZipFile) if(NOT SEVEN_ZIP_CMD) find_program(SEVEN_ZIP_CMD NAMES 7z 7za p7zip DOC "7-zip executable" PATHS "$ENV{PROGRAMFILES}/7-Zip" "$ENV{${PROGRAMFILESx86}}/7-Zip" "$ENV{ProgramW6432}/7-Zip") endif() if(SEVEN_ZIP_CMD) if(dwnlezf_VERBOSE) message(STATUS "UNZIP: please, WAIT UNTIL ${SEVEN_ZIP_CMD} finished...\n(no more than ${dwnlezf_TIMEOUT_MIN} min)") else() message(STATUS "UNZIP...wait...") endif() execute_process( COMMAND ${SEVEN_ZIP_CMD} x ${whichZipFile} -y WORKING_DIRECTORY ${EXCTRATED_ZIP_PATH} TIMEOUT ${dwnlezf_TIMEOUT} RESULT_VARIABLE resVar OUTPUT_VARIABLE outVar ERROR_VARIABLE errVar ) if(${resVar} MATCHES "0") if(dwnlezf_VERBOSE) message(STATUS "SUCESS to unzip in ${EXCTRATED_ZIP_PATH}. Now we can remove the downloaded zip file.") endif() execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${whichZipFile}) mark_as_advanced(SEVEN_ZIP_CMD) else() message(WARNING "something wrong in ${EXCTRATED_ZIP_PATH}\n with \"${SEVEN_ZIP_CMD} x ${whichZipFile} -y\", redo or try to unzip by yourself...") message("unzip: resVar=${resVar}") message("unzip: outVar=${outVar}") message("unzip: errVar=${errVar}") message("unzip: failed or canceled or timeout") endif() else() message(WARNING "You need 7zip (http://www.7-zip.org/download.html) to unzip the downloaded dir.") set(SEVEN_ZIP_CMD "" CACHE FILEPATH "7-zip executable") mark_as_advanced(CLEAR SEVEN_ZIP_CMD) endif() endmacro() if(dwnlezf_VERBOSE) message(STATUS "Trying to look ${ZIP_DL_PATH} if a zip file exist...") endif() if(EXISTS "${ZIP_DL_PATH}") ## already downloaded, so just unzip it unzip(${ZIP_DL_PATH}) writeDirtyUrl() elseif(ZIP_DL_FORCE) ## the download part (+ unzip) message(STATUS "Let me try to download package for you : ${ZIP_URL}") if(dwnlezf_VERBOSE) message(STATUS "Downloading...\n SRC=${ZIP_URL}\n DEST=${ZIP_DL_PATH}.tmp\n INACTIVITY_TIMEOUT=180s") endif() file(DOWNLOAD ${ZIP_URL} ${ZIP_DL_PATH}.tmp INACTIVITY_TIMEOUT 360 STATUS status SHOW_PROGRESS) list(GET status 0 numResult) if(${numResult} MATCHES "0") if(dwnlezf_VERBOSE) message(STATUS "Download succeed, so let me rename the tmp file to unzip it") endif() execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${ZIP_DL_PATH}.tmp ${ZIP_DL_PATH}) unzip(${ZIP_DL_PATH}) writeDirtyUrl() else() list(GET status 1 errMsg) message(WARNING "DOWNLOAD ${ZIP_URL} to ${ZIP_DL_PATH} failed\n:${errMsg}") message(WARNING "OK, you need to download the ${ZIP_URL} manually and put it into ${ZIP_DL_PATH}") message("Take a look at the project website page to check available URL.") endif() endif() ## clean up the tmp downloaded file if(EXISTS "${ZIP_DL_PATH}.tmp") execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${ZIP_DL_PATH}.tmp) endif() endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/git_describe.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(__git_describe_INCLUDED__) return() else() set(__git_describe_INCLUDED__ ON) endif() find_package(Git) if(Git_FOUND) message(STATUS "Git found: ${GIT_EXECUTABLE}") else() message(FATAL_ERROR "Git not found. Aborting") endif() macro(git_describe) cmake_parse_arguments(GIT_DESCRIBE "" "GIT_URL;GIT_BRANCH;GIT_COMMIT_HASH;GIT_TAG;GIT_VERSION;PATH" "" ${ARGN}) if(NOT GIT_DESCRIBE_PATH) set(GIT_DESCRIBE_PATH ${CMAKE_SOURCE_DIR}) endif() if(GIT_DESCRIBE_GIT_URL) # Get the current remote execute_process( COMMAND git remote WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE GIT_DESCRIBE_GIT_REMOTE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) # Get the current remote execute_process( COMMAND git remote get-url ${GIT_DESCRIBE_GIT_REMOTE} WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_URL} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_BRANCH) # Get the current working branch execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_BRANCH} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_COMMIT_HASH) # Get the latest abbreviated commit hash of the working branch execute_process( COMMAND git rev-parse HEAD WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_COMMIT_HASH} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_TAG) # Get the tag execute_process( COMMAND git describe --tags --exact-match WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_TAG} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() if(GIT_DESCRIBE_GIT_VERSION) # Get the version from git describe execute_process( COMMAND git describe WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_VERSION} OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) if(${GIT_DESCRIBE_GIT_VERSION} STREQUAL "") execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE GIT_DESCRIBE_GIT_VERSION_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) execute_process( COMMAND git log -1 --format=%h WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} OUTPUT_VARIABLE GIT_DESCRIBE_GIT_VERSION_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) set(${GIT_DESCRIBE_GIT_VERSION} "${GIT_DESCRIBE_GIT_VERSION_BRANCH}-${GIT_DESCRIBE_GIT_VERSION_COMMIT}") endif() endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/include_once.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr macro(include_once file) get_filename_component(INCLUDE_ONCE_FILEPATH ${file} REALPATH) string(REGEX REPLACE "(\\.|\\/+|\\:|\\\\+)" "_" INCLUDE_ONCE_FILEPATH ${INCLUDE_ONCE_FILEPATH}) get_property(INCLUDED_${INCLUDE_ONCE_FILEPATH}_LOCAL GLOBAL PROPERTY INCLUDED_${INCLUDE_ONCE_FILEPATH}) if (INCLUDED_${INCLUDE_ONCE_FILEPATH}_LOCAL) return() else() set_property(GLOBAL PROPERTY INCLUDED_${INCLUDE_ONCE_FILEPATH} true) include(${file}) endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/install_runtime.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ## This file is mainly used to allow runtime installation ## There are some utilities cmake functions to ease the generic deployement (abstract common usage of cmake)... ## ## You cannot run your programm automaticaly from your CNAKE_BINARY_DIR when you build ## as it will miss all dependencies and ressources files... ## You have to run install target in order to test your programm. ## ## The only one function/macros you may use inside your sub-CMakeLists.txt (sub-project) is : ## ****************** ## ibr_install_target macro => see documentation at the end of this file ## ****************** ## It use these utilities cmake functions to abstract the installation in an uniform way for all sub-projects. ## if(__install_runtime_cmake_INCLUDED__) return() else() set(__install_runtime_cmake_INCLUDED__ ON) endif() ## ## Allow to write a resource config file which contain additional ressource paths ## (used by IBR_Common Resource system to load shaders and potentialy images, plugins and so on) ## ## ADD option list all the paths to add in the file (relative paths are interpreted relative to working dir of the executable) ## INSTALL option to specify where we want to install this file ## ## Example usage: ## resourceFile(ADD "shaders" "${PROJECT_NAME}_rsc" INSTALL bin) ## macro(resourceFile) cmake_parse_arguments(rsc "" "INSTALL;FILE_PATH;CONFIG_TYPE" "ADD" ${ARGN}) ## both args are directory path if(rsc_ADD) unset(IBR_RSC_FILE_CONTENT_LIST) if(EXISTS "${rsc_FILE_PATH}") file(READ "${rsc_FILE_PATH}" IBR_RSC_FILE_CONTENT) string(REGEX REPLACE "\n" ";" IBR_RSC_FILE_CONTENT_LIST "${IBR_RSC_FILE_CONTENT}") endif() list(APPEND IBR_RSC_FILE_CONTENT_LIST "${rsc_ADD}") list(REMOVE_DUPLICATES IBR_RSC_FILE_CONTENT_LIST) file(WRITE "${rsc_FILE_PATH}" "") foreach(rscDir ${IBR_RSC_FILE_CONTENT_LIST}) file(APPEND "${rsc_FILE_PATH}" "${rscDir}\n") endforeach() unset(rsc_ADD) endif() if(rsc_INSTALL) install(FILES ${rsc_FILE_PATH} CONFIGURATIONS ${rsc_CONFIG_TYPE} DESTINATION ${rsc_INSTALL}) unset(rsc_INSTALL) endif() endmacro() ## ## Install *.pdb generated file for the current cmake project ## assuming the output target name is the cmake project name. ## This macro is useful for crossplateform multi config mode. ## ## Usage Example: ## ## if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based ## installPDB(${PROJECT_NAME} ${CMAKE_BUILD_TYPE} RUNTIME_DEST bin ARCHIVE_DEST lib LIBRARY_DEST lib) ## endif() ## foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) ## installPDB(${PROJECT_NAME} ${CONFIG_TYPES} RUNTIME_DEST bin ARCHIVE_DEST lib LIBRARY_DEST lib) ## endforeach() ## macro(installPDB targetName configType) cmake_parse_arguments(instpdb "" "COMPONENT" "ARCHIVE_DEST;LIBRARY_DEST;RUNTIME_DEST" ${ARGN}) ## both args are directory path if(NOT MSVC) return() endif() ## Check if DESTINATION are provided according to the TYPE of the given target (see install command doc to see correspodances) get_target_property(type ${targetName} TYPE) if(${type} MATCHES "EXECUTABLE" AND instpdb_RUNTIME_DEST) set(pdb_DESTINATION ${instpdb_RUNTIME_DEST}) elseif(${type} MATCHES "STATIC_LIBRARY" AND instpdb_ARCHIVE_DEST) set(pdb_DESTINATION ${instpdb_ARCHIVE_DEST}) elseif(${type} MATCHES "MODULE_LIBRARY" AND instpdb_LIBRARY_DEST) set(pdb_DESTINATION ${instpdb_LIBRARY_DEST}) elseif(${type} MATCHES "SHARED_LIBRARY") if(WIN32 AND instpdb_RUNTIME_DEST) set(pdb_DESTINATION ${instpdb_RUNTIME_DEST}) else() set(pdb_DESTINATION ${instpdb_LIBRARY_DEST}) endif() endif() if(NOT pdb_DESTINATION) set(pdb_DESTINATION bin) ## default destination of the pdb file endif() if(NOT instpdb_COMPONENT) set(instpdb_COMPONENT ) else() set(instpdb_COMPONENT COMPONENT ${instpdb_COMPONENT}) endif() string(TOUPPER ${configType} CONFIG_TYPES_UC) get_target_property(PDB_PATH ${targetName} PDB_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}) get_target_property(confModePostfix ${targetName} ${CONFIG_TYPES_UC}_POSTFIX) if(NOT confModePostfix) set(confModePostfix "") endif() set_target_properties(${targetName} PROPERTIES PDB_NAME_${CONFIG_TYPES_UC} ${targetName}${confModePostfix}) get_target_property(PDB_NAME ${targetName} PDB_NAME_${CONFIG_TYPES_UC})# if not set, this is empty if(EXISTS "${PDB_PATH}/${PDB_NAME}.pdb") install(FILES "${PDB_PATH}/${PDB_NAME}.pdb" CONFIGURATIONS ${configType} DESTINATION ${pdb_DESTINATION} ${instpdb_COMPONENT} OPTIONAL) endif() endmacro() ## ## Add additional target to install a project independently and based on its component ## configMode is used to prevent default Release installation (we want also to install in other build/config type) ## macro(installTargetProject targetOfProject targetOfInstallProject) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based set(configMode ${CMAKE_BUILD_TYPE}) elseif(MSVC) ## $(Configuration) will be one of the following : Debug, Release, MinSizeRel, RelWithDebInfo set(configMode $(Configuration)) endif() if(configMode) get_target_property(srcFiles ${targetOfProject} SOURCES) add_custom_target( ${targetOfInstallProject} #ALL ${CMAKE_COMMAND} -DBUILD_TYPE=${configMode} -DCOMPONENT=${targetOfInstallProject} -P ${CMAKE_BINARY_DIR}/cmake_install.cmake DEPENDS ${srcFiles} COMMENT "run the installation only for ${targetOfProject}" VERBATIM ) add_dependencies(${targetOfInstallProject} ${targetOfProject}) get_target_property(INSTALL_BUILD_FOLDER ${targetOfProject} FOLDER) set_target_properties(${targetOfInstallProject} PROPERTIES FOLDER ${INSTALL_BUILD_FOLDER}) endif() endmacro() # Collect all currently added targets in all subdirectories # # Parameters: # - _result the list containing all found targets # - _dir root directory to start looking from function(get_all_targets _result _dir) get_property(_subdirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES) foreach(_subdir IN LISTS _subdirs) get_all_targets(${_result} "${_subdir}") endforeach() get_directory_property(_sub_targets DIRECTORY "${_dir}" BUILDSYSTEM_TARGETS) set(${_result} ${${_result}} ${_sub_targets} PARENT_SCOPE) endfunction() ## ## Add targets for building and installing subdirectories macro(subdirectory_target target directory build_folder) add_custom_target(${target} COMMENT "run build for all projects in this directory" VERBATIM ) get_all_targets(ALL_TARGETS ${directory}) add_dependencies(${target} ${ALL_TARGETS}) add_custom_target(${target}_install ${CMAKE_COMMAND} -DBUILD_TYPE=$ -DCOMPONENT=${target}_install -P ${CMAKE_BINARY_DIR}/cmake_install.cmake COMMENT "run install for all projects in this directory" VERBATIM ) add_dependencies(${target}_install ${target}) set_target_properties(${target} PROPERTIES FOLDER ${build_folder}) set_target_properties(${target}_install PROPERTIES FOLDER ${build_folder}) endmacro() ## CMAKE install all required dependencies for an application (included system OS files like msvc*.dll for example) ## ## install_runtime( ## [TARGET name] ## [PLUGINS name [nameN ...] [PLUGIN_PATH_NAME currentPathName [FROM_REL_PATH matchDirFromCurrentPathName] [PLUGIN_PATH_DEST installDir] ] ## [PLUGINS ...] ## [DIRS path [pathN ...] ] ## [TARGET_LIBRARIES filePath [filePathN ...] ] ## [TARGET_PACKAGES packageName [packageNameN ...] ] ## [COMPONENT installComponentName] ## [PLAUSIBLES_POSTFIX Debug_postfix [MinSizeRel_postfix relWithDebInfo_postfix ...] ] ## [VERBOSE] ## ) ## ## installedFilePathTargetAppToResolve : the final installed targetApp absolute full file path name you want to resolve ## ## TARGET : The target app we want to install. If given, it's used to look for link libraries paths (best choice to use, strongly advised to use it) ## ## PLUGINS : Some application built use/load some plugins which can't be detect inside its binary, ## so, here you can specify which plugins the application use/load in order to install them ## and resolve also there dependencies. ## With PLUGINS multi FLAGS : ## PLUGIN_PATH_NAME : The current plugin full file path we want to install ## FROM_REL_PATH : [optional: default only the file is kept] From which matching dir of the plugin path we want to install (keep the directories structure) ## PLUGIN_PATH_DEST : [optional: default relative to executable directory] Where (full path to the install directory) we will install the plugin file (or file path) ## ## DIRS : A list of directories to looking for dependencies ## TARGET_LIBRARIES : DEPRECATED (use TARGET flag instead) : The cmake content variables used for the target_link_libraries( ...) ## TARGET_PACKAGES : DEPRECATED (use TARGET flag instead) : The cmake package names used for the findPackage(...) for your targetApp ## ADVICE: This flag add entries in cache (like: _DIR), it could be useful to fill these variable! ## COMPONENT : (default to runtime) Is the component name associated to the installation ## It is used when you want to install separatly some part of your projets (see install cmake doc) ## VERBOSE : For debug or to get more informations in the output console ## ## Usage: ## install_runtime(${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_NAME}${CMAKE_EXECUTABLE_SUFFIX} ## VERBOSE ## TARGET ${PROJECT_NAME} ## PLAUSIBLES_POSTFIX _d ## PLUGINS ## PLUGIN_PATH_NAME ${PLUGIN_PATH_NAME}${CMAKE_SHARED_MODULE_SUFFIX} ## will be installed (default exec path if no PLUGINS_DEST) and then will be resolved ## FROM_REL_PATH plugins ## optional, used especially for keeping qt plugins tree structure ## PLUGIN_PATH_DEST ${CMAKE_INSTALL_PREFIX}/plugins ## (or relative path 'plugins' will be interpreted relative to installed executable) ## DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ## TARGET_LIBRARIES ${OPENGL_LIBRARIES} ## DEPRECATED (use TARGET flag instead) ## ${GLEW_LIBRARIES} ## ${GLUT_LIBRARIES} ## ${Boost_LIBRARIES} ## ${SuiteSparse_LIBRARIES} ## ${CGAL_LIBRARIES} ## TARGET_PACKAGES OPENGL ## DEPRECATED (use TARGET flag instead) ## GLEW ## GLUT ## CGAL ## Boost ## SuiteSparse ## ) ## ## For plugins part, it use our internal parse_arguments_multi.cmake ## function(install_runtime installedFilePathTargetAppToResolve) set(optionsArgs "VERBOSE") set(oneValueArgs "COMPONENT;INSTALL_FOLDER;CONFIG_TYPE") set(multiValueArgs "DIRS;PLUGINS;TARGET_LIBRARIES;TARGET_PACKAGES;TARGET;PLAUSIBLES_POSTFIX") cmake_parse_arguments(inst_run "${optionsArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) if(IS_ABSOLUTE ${installedFilePathTargetAppToResolve}) else() set(installedFilePathTargetAppToResolve ${inst_run_INSTALL_FOLDER}/${installedFilePathTargetAppToResolve}) endif() get_filename_component(EXEC_NAME ${installedFilePathTargetAppToResolve} NAME_WE) get_filename_component(EXEC_PATH ${installedFilePathTargetAppToResolve} PATH) if(NOT inst_run_COMPONENT) set(inst_run_COMPONENT runtime) endif() ## Try to append as more possible as possible paths to find dependencies (deprecated since we can use target_properties to get back paths) set(libPaths ) foreach(libraryFileName ${inst_run_TARGET_LIBRARIES}) if(IS_DIRECTORY "${libraryFileName}") list(APPEND libPaths "${libraryFileName}") else() get_filename_component(libpath "${libraryFileName}" PATH) if(EXISTS "${libpath}") list(APPEND libPaths "${libpath}") endif() endif() endforeach() ## This macro is used internaly here to recursilvely get path of LINK_LIBRARIES of each non imported target ## Typically if you have 2 internal dependencies between cmake targets, we want cmake to be able to get back path where are these dependencies macro(recurseDepList target) get_target_property(linkLibs ${target} LINK_LIBRARIES) foreach(lib ${linkLibs}) string(FIND ${lib} ">" strId) ## cmake is using generator-expression? if(TARGET ${lib}) ## Skipping interface libraries as they're system ones get_target_property(type ${lib} TYPE) get_target_property(imported ${lib} IMPORTED) if(type STREQUAL "INTERFACE_LIBRARY") get_target_property(imp_loc ${lib} INTERFACE_IMPORTED_LOCATION) if(imp_loc) get_filename_component(imp_loc ${imp_loc} PATH) list(APPEND targetLibPath ${imp_loc}) endif() get_target_property(loc ${lib} INTERFACE_LOCATION) if(loc) get_filename_component(loc ${loc} PATH) list(APPEND targetLibPath ${loc}) endif() ## it's not a path but a single target name ## for build-target which are part of the current cmake configuration : nothing to do as cmake already know the output path ## for imported target, we need to look for theire imported location elseif(imported) get_target_property(imp_loc ${lib} IMPORTED_LOCATION) if(imp_loc) get_filename_component(imp_loc ${imp_loc} PATH) list(APPEND targetLibPath ${imp_loc}) endif() get_target_property(loc ${lib} LOCATION) if(loc) get_filename_component(loc ${loc} PATH) list(APPEND targetLibPath ${loc}) endif() else() recurseDepList(${lib}) endif() elseif(NOT ${strId} MATCHES -1) ## mean cmake use generator-expression (CMAKE VERSION > 3.0) string(REGEX MATCH ">:[@A-Za-z_:/.0-9-]+" targetLibPath ${lib}) string(REGEX REPLACE ">:([@A-Za-z_:/.0-9-]+)" "\\1" targetLibPath ${targetLibPath}) get_filename_component(targetLibPath ${targetLibPath} PATH) elseif(EXISTS ${lib}) set(targetLibPath ${lib}) get_filename_component(targetLibPath ${targetLibPath} PATH) else() #message(STATUS "[install_runtime] skip link library : ${lib} , of target ${target}") endif() if(targetLibPath) list(APPEND targetLinkLibsPathList ${targetLibPath}) endif() endforeach() if(targetLinkLibsPathList) list(REMOVE_DUPLICATES targetLinkLibsPathList) endif() endmacro() if(inst_run_TARGET) recurseDepList(${inst_run_TARGET}) if(targetLinkLibsPathList) list(APPEND libPaths ${targetLinkLibsPathList}) endif() endif() if(libPaths) list(REMOVE_DUPLICATES libPaths) foreach(libPath ${libPaths}) get_filename_component(path ${libPath} PATH) list(APPEND libPaths ${path}) endforeach() endif() ## possible speciale dir(s) according to the build system and OS if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(BUILD_TYPES_FOR_DLL "x64") if(WIN32) list(APPEND BUILD_TYPES_FOR_DLL "Win64") endif() else() set(BUILD_TYPES_FOR_DLL "x86") if(WIN32) list(APPEND BUILD_TYPES_FOR_DLL "Win32") endif() endif() ## Try to append as more as possible paths to find dependencies (here, mainly for *.dll) foreach(dir ${inst_run_DIRS} ${libPaths}) if(EXISTS "${dir}/bin") list(APPEND inst_run_DIRS "${dir}/bin") elseif(EXISTS "${dir}") list(APPEND inst_run_DIRS "${dir}") endif() endforeach() list(REMOVE_DUPLICATES inst_run_DIRS) foreach(dir ${inst_run_DIRS}) if(EXISTS "${dir}") list(APPEND argDirs ${dir}) foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${dir}/${BUILD_TYPE_FOR_DLL}") list(APPEND argDirs "${dir}/${BUILD_TYPE_FOR_DLL}") endif() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${dir}/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") list(APPEND argDirs "${dir}/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") endif() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${dir}/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") list(APPEND argDirs "${dir}/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") endif() endif() endforeach() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${dir}/${OUTPUTCONFIG}") list(APPEND argDirs "${dir}/${OUTPUTCONFIG}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${dir}/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") list(APPEND argDirs "${dir}/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${dir}/${CMAKE_BUILD_TYPE}") list(APPEND argDirs "${dir}/${CMAKE_BUILD_TYPE}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${dir}/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") list(APPEND argDirs "${dir}/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endif() endif() endforeach() if(argDirs) list(REMOVE_DUPLICATES argDirs) endif() ## Try to append as more possible paths to find dependencies (here, mainly for *.dll) foreach(packageName ${inst_run_TARGET_PACKAGES}) if(EXISTS "${${packageName}_DIR}") list(APPEND packageDirs ${${packageName}_DIR}) list(APPEND packageDirs ${${packageName}_DIR}/bin) foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}") endif() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${OUTPUTCONFIG}") endif() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${BUILD_TYPE_FOR_DLL}/${CMAKE_BUILD_TYPE}") endif() endif() endforeach() foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) ## for windows multi-generator (MSVC) if(EXISTS "${${packageName}_DIR}/bin/${OUTPUTCONFIG}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${OUTPUTCONFIG}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${${packageName}_DIR}/bin/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${OUTPUTCONFIG}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endforeach() if(CMAKE_BUILD_TYPE) ## for single generator (makefiles) if(EXISTS "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}") endif() foreach(BUILD_TYPE_FOR_DLL ${BUILD_TYPES_FOR_DLL}) if(EXISTS "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") list(APPEND packageDirs "${${packageName}_DIR}/bin/${CMAKE_BUILD_TYPE}/${BUILD_TYPE_FOR_DLL}") endif() endforeach() endif() else() set(${packageName}_DIR "$ENV{${packageName}_DIR}" CACHE PATH "${packageName}_DIR root directory for looking for dirs containning *.dll") endif() endforeach() if(packageDirs) list(REMOVE_DUPLICATES packageDirs) endif() set(dirsToLookFor "${EXEC_PATH}") if(packageDirs) list(APPEND dirsToLookFor ${packageDirs}) endif() if(argDirs) list(APPEND dirsToLookFor ${argDirs}) endif() get_property(used_LINK_DIRECTORIES DIRECTORY PROPERTY LINK_DIRECTORIES) if (used_LINK_DIRECTORIES) list(APPEND dirsToLookFor ${used_LINK_DIRECTORIES}) list(REMOVE_DUPLICATES dirsToLookFor) endif() ## handle plugins set(pluginsList "") include(parse_arguments_multi) ## this function will process recursively items of the sub-list [default print messages] function(parse_arguments_multi_function results) cmake_parse_arguments(pamf "VERBOSE" "PLUGIN_PATH_DEST;FROM_REL_PATH;EXEC_PATH;COMPONENT" "" ${ARGN}) ## EXEC_PATH and COMPONENT are for exclusive internal use list(REMOVE_DUPLICATES pamf_UNPARSED_ARGUMENTS) foreach(PLUGIN_PATH_NAME ${pamf_UNPARSED_ARGUMENTS}) if(EXISTS ${PLUGIN_PATH_NAME}) if(IS_DIRECTORY ${PLUGIN_PATH_NAME}) if(pamf_VERBOSE) message(WARNING "${PLUGIN_PATH_NAME} IS_DIRECTORY, cannot installed a directory, please give a path filename") endif() else() if(NOT pamf_PLUGIN_PATH_DEST) set(PLUGIN_PATH_DEST ${pamf_EXEC_PATH}) ## the default dest value else() set(PLUGIN_PATH_DEST ${pamf_PLUGIN_PATH_DEST}) endif() if(pamf_FROM_REL_PATH) file(TO_CMAKE_PATH ${PLUGIN_PATH_NAME} PLUGIN_PATH_NAME) get_filename_component(PLUGIN_PATH ${PLUGIN_PATH_NAME} PATH) unset(PLUGIN_PATH_LIST) unset(PLUGIN_PATH_LIST_COUNT) unset(PLUGIN_REL_PATH_LIST) unset(PLUGIN_REL_PATH) string(REPLACE "/" ";" PLUGIN_PATH_LIST ${PLUGIN_PATH}) ## create a list of dir list(FIND PLUGIN_PATH_LIST ${pamf_FROM_REL_PATH} id) list(LENGTH PLUGIN_PATH_LIST PLUGIN_PATH_LIST_COUNT) if(${id} GREATER 0) math(EXPR id "${id}+1") ## matches relative path not include math(EXPR PLUGIN_PATH_LIST_COUNT "${PLUGIN_PATH_LIST_COUNT}-1") ## the end of the list foreach(i RANGE ${id} ${PLUGIN_PATH_LIST_COUNT}) list(GET PLUGIN_PATH_LIST ${i} out) list(APPEND PLUGIN_REL_PATH_LIST ${out}) endforeach() foreach(dir ${PLUGIN_REL_PATH_LIST}) set(PLUGIN_REL_PATH "${PLUGIN_REL_PATH}/${dir}") endforeach() endif() set(PLUGIN_PATH_DEST ${PLUGIN_PATH_DEST}${PLUGIN_REL_PATH}) endif() install(FILES ${PLUGIN_PATH_NAME} CONFIGURATIONS ${inst_run_CONFIG_TYPE} DESTINATION ${PLUGIN_PATH_DEST} COMPONENT ${pamf_COMPONENT}) get_filename_component(pluginName ${PLUGIN_PATH_NAME} NAME) if(IS_ABSOLUTE ${PLUGIN_PATH_DEST}) else() set(PLUGIN_PATH_DEST ${inst_run_INSTALL_FOLDER}/${PLUGIN_PATH_DEST}) endif() list(APPEND pluginsList ${PLUGIN_PATH_DEST}/${pluginName}) endif() else() message(WARNING "You need to provide a valid PLUGIN_PATH_NAME") set(pluginsList ) endif() endforeach() set(${results} ${pluginsList} PARENT_SCOPE) endfunction() if(inst_run_VERBOSE) list(APPEND extra_flags_to_add VERBOSE) endif() list(APPEND extra_flags_to_add EXEC_PATH ${EXEC_PATH} COMPONENT ${inst_run_COMPONENT}) ## for internal use inside overloaded function list(LENGTH inst_run_PLUGINS inst_run_PLUGINS_count) if(${inst_run_PLUGINS_count} GREATER 0) parse_arguments_multi(PLUGIN_PATH_NAME inst_run_PLUGINS ${inst_run_PLUGINS} ## see internal overload parse_arguments_multi_function for processing each sub-list NEED_RESULTS ${inst_run_PLUGINS_count} ## this is used to check when we are in the first loop (in order to reset parse_arguments_multi_results) EXTRAS_FLAGS ${extra_flags_to_add} ## this is used to allow catching additional internal flags of our overloaded function ) endif() #message(parse_arguments_multi_results = ${parse_arguments_multi_results}) list(APPEND pluginsList ${parse_arguments_multi_results}) ## Install rules for required system runtimes such as MSVCRxx.dll set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP ON) include(InstallRequiredSystemLibraries) if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS) install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} CONFIGURATIONS ${inst_run_CONFIG_TYPE} DESTINATION ${EXEC_PATH} COMPONENT ${inst_run_COMPONENT} ) endif() ## print what we are doing to do if(inst_run_VERBOSE) message(STATUS "[install_runtime] On install target call, cmake will try to resolve dependencies for given app:\n ${installedFilePathTargetAppToResolve} (with plausible postfix: ${inst_run_PLAUSIBLES_POSTFIX})") if(pluginsList) message(STATUS " and also for plugins :") foreach(plugin ${pluginsList}) message(STATUS " ${plugin}") endforeach() endif() message(STATUS " Looking for dependencies into:") foreach(dir ${dirsToLookFor}) message(STATUS " ${dir}") endforeach() endif() ## Install rules for required dependencies libs/plugins for the target app ## will resolve all installed target files with config modes postfixes string(TOUPPER ${inst_run_CONFIG_TYPE} inst_run_CONFIG_TYPE_UC) get_target_property(postfix ${inst_run_TARGET} "${inst_run_CONFIG_TYPE_UC}_POSTFIX") install(CODE "set(target \"${inst_run_TARGET}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(inst_run_CONFIG_TYPE \"${inst_run_CONFIG_TYPE}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(inst_run_INSTALL_FOLDER \"${inst_run_INSTALL_FOLDER}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(app \"${EXEC_PATH}/${EXEC_NAME}${postfix}${CMAKE_EXECUTABLE_SUFFIX}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE "set(dirsToLookFor \"${dirsToLookFor}\")" COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE}) install(CODE [[ if("${CMAKE_INSTALL_CONFIG_NAME}" STREQUAL "${inst_run_CONFIG_TYPE}") message(STATUS "Installing ${target} dependencies...") file(GET_RUNTIME_DEPENDENCIES EXECUTABLES ${app} RESOLVED_DEPENDENCIES_VAR _r_deps UNRESOLVED_DEPENDENCIES_VAR _u_deps CONFLICTING_DEPENDENCIES_PREFIX _c_deps DIRECTORIES ${dirsToLookFor} PRE_EXCLUDE_REGEXES "api-ms-*" POST_EXCLUDE_REGEXES ".*system32/.*\\.dll" ".*SysWOW64/.*\\.dll" ) if(_u_deps) message(WARNING "There were unresolved dependencies for executable ${EXEC_FILE}: \"${_u_deps}\"!") endif() if(_c_deps_FILENAMES) message(WARNING "There were conflicting dependencies for executable ${EXEC_FILE}: \"${_c_deps_FILENAMES}\"!") endif() foreach(_file ${_r_deps}) file(INSTALL DESTINATION "${inst_run_INSTALL_FOLDER}/bin" TYPE SHARED_LIBRARY FOLLOW_SYMLINK_CHAIN FILES "${_file}" ) endforeach() endif() ]] COMPONENT ${inst_run_COMPONENT} CONFIGURATIONS ${CONFIG_TYPE} ) endfunction() ## High level macro to install resources in the correct folder ## ## EXECUTABLE: [opt] option to copy files as programs ## RELATIVE : [opt] copy files relatively to current folder ## TYPE : [opt] type and folder where to store the files ## FOLDER : [opt] subfolder to use ## FILES : [opt] contains a list of resources files to copy to install folder macro(ibr_install_rsc target) cmake_parse_arguments(install_rsc_${target} "EXECUTABLE;RELATIVE" "TYPE;FOLDER" "FILES" ${ARGN}) set(rsc_target "${target}_${install_rsc_${target}_TYPE}") if(install_rsc_${target}_FOLDER) set(rsc_folder "${install_rsc_${target}_TYPE}/${install_rsc_${target}_FOLDER}") else() set(rsc_folder "${install_rsc_${target}_TYPE}") endif() add_custom_target(${rsc_target} COMMENT "run the ${install_rsc_${target}_TYPE} installation only for ${target} (component ${rsc_target})" VERBATIM) foreach(scriptFile ${install_rsc_${target}_FILES}) if(install_rsc_${target}_RELATIVE) file(RELATIVE_PATH relativeFilename ${CMAKE_CURRENT_SOURCE_DIR} ${scriptFile}) else() get_filename_component(relativeFilename ${scriptFile} NAME) endif() if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based add_custom_command(TARGET ${rsc_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${scriptFile} ${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/${rsc_folder}/${relativeFilename}) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) add_custom_command(TARGET ${rsc_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${scriptFile} ${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/${rsc_folder}/${relativeFilename}) endforeach() endforeach() get_target_property(INSTALL_RSC_BUILD_FOLDER ${target} FOLDER) set_target_properties(${rsc_target} PROPERTIES FOLDER ${INSTALL_RSC_BUILD_FOLDER}) add_dependencies(${target} ${rsc_target}) add_dependencies(PREBUILD ${rsc_target}) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based resourceFile(ADD ${rsc_folder} CONFIG_TYPE ${CMAKE_BUILD_TYPE} FILE_PATH "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/ibr_resources.ini") if(install_rsc_${target}_EXECUTABLE) install( PROGRAMS ${install_rsc_${target}_FILES} CONFIGURATIONS ${CMAKE_BUILD_TYPE} DESTINATION "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/${rsc_folder}" ) else() install( FILES ${install_rsc_${target}_FILES} CONFIGURATIONS ${CMAKE_BUILD_TYPE} DESTINATION "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}/${rsc_folder}" ) endif() endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) resourceFile(ADD ${rsc_folder} CONFIG_TYPE ${CONFIG_TYPES} FILE_PATH "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/ibr_resources.ini") if(install_rsc_${target}_EXECUTABLE) install( PROGRAMS ${install_rsc_${target}_FILES} CONFIGURATIONS ${CONFIG_TYPES} DESTINATION "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/${rsc_folder}" ) else() install( FILES ${install_rsc_${target}_FILES} CONFIGURATIONS ${CONFIG_TYPES} DESTINATION "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}/${rsc_folder}" ) endif() endforeach() endmacro() ## High level macro to install in an homogen way all our ibr targets (it use some functions inside this file) ## ## RSC_FILE_ADD : [opt] is used to auto write/append relative paths of target resources into a common file ## INSTALL_PDB : [opt] is used to auto install PDB file (when using MSVC according to the target type) ## STANDALONE : [opt] bool ON/OFF var to call install_runtime or not (for bundle resolution) ## DIRS : [opt] used if STANDALONE set to ON, see install_runtime doc ## PLUGINS: [opt] used if STANDALONE set to ON, see install_runtime doc ## MSVC_CMD : [opt] used to specify an absolute filePathName application to launch with the MSVC IDE Debugger associated to this target (project file) ## MSVC_ARGS : [opt] load the MSVC debugger with correct settings (app path, args, working dir) ## macro(ibr_install_target target) cmake_parse_arguments(ibrInst${target} "VERBOSE;INSTALL_PDB" "COMPONENT;MSVC_ARGS;STANDALONE;RSC_FOLDER" "SHADERS;RESOURCES;SCRIPTS;DIRS;PLUGINS" ${ARGN}) if(ibrInst${target}_RSC_FOLDER) set(rsc_folder "${ibrInst${target}_RSC_FOLDER}") else() set(rsc_folder "${target}") endif() if(ibrInst${target}_SHADERS) ibr_install_rsc(${target} EXECUTABLE TYPE "shaders" FOLDER ${rsc_folder} FILES "${ibrInst${target}_SHADERS}") endif() if(ibrInst${target}_RESOURCES) ibr_install_rsc(${target} TYPE "resources" FOLDER ${rsc_folder} FILES "${ibrInst${target}_RESOURCES}") endif() if(ibrInst${target}_SCRIPTS) ibr_install_rsc(${target} EXECUTABLE TYPE "scripts" FOLDER ${rsc_folder} FILES "${ibrInst${target}_SCRIPTS}") endif() if(ibrInst${target}_COMPONENT) set(installCompArg COMPONENT ${ibrInst${target}_COMPONENT}) ## Create a custom install target based on COMPONENT installTargetProject(${target} ${ibrInst${target}_COMPONENT}) endif() if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based string(TOUPPER ${CMAKE_BUILD_TYPE} CONFIG_TYPES_UC) set_target_properties(${target} PROPERTIES ${CONFIG_TYPES_UC}_POSTFIX "${CMAKE_${CONFIG_TYPES_UC}_POSTFIX}") get_target_property(CURRENT_TARGET_BUILD_TYPE_POSTFIX ${target} ${CONFIG_TYPES_UC}_POSTFIX) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) set_target_properties(${target} PROPERTIES ${CONFIG_TYPES_UC}_POSTFIX "${CMAKE_${CONFIG_TYPES_UC}_POSTFIX}") get_target_property(CURRENT_TARGET_BUILD_TYPE_POSTFIX ${target} ${CONFIG_TYPES_UC}_POSTFIX) endforeach() ## Specify default installation rules if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based string(TOUPPER ${CMAKE_BUILD_TYPE} CONFIG_TYPES_UC) install(TARGETS ${target} CONFIGURATIONS ${CMAKE_BUILD_TYPE} LIBRARY DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} ARCHIVE DESTINATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} RUNTIME DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ${installCompArg} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) install(TARGETS ${target} CONFIGURATIONS ${CONFIG_TYPES} LIBRARY DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} ARCHIVE DESTINATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} RUNTIME DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${installCompArg} ) endforeach() if(ibrInst${target}_INSTALL_PDB) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based installPDB(${target} ${CMAKE_BUILD_TYPE} LIBRARY_DEST ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ARCHIVE_DEST ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} RUNTIME_DEST ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE}} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) installPDB(${target} ${CONFIG_TYPES} LIBRARY_DEST ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ARCHIVE_DEST ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} RUNTIME_DEST ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ) endforeach() endif() ## install dynamic necessary dependencies if(ibrInst${target}_STANDALONE) get_target_property(type ${target} TYPE) if(${type} MATCHES "EXECUTABLE") if(ibrInst${target}_VERBOSE) set(VERBOSE VERBOSE) else() set(VERBOSE ) endif() if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based install_runtime(bin/${target}${CMAKE_EXECUTABLE_SUFFIX} ## default relative to CMAKE_INSTALL_PREFIX INSTALL_FOLDER "${CMAKE_INSTALL_PREFIX_${CMAKE_BUILD_TYPE}}" CONFIG_TYPE ${CMAKE_BUILD_TYPE} ${VERBOSE} TARGET ${target} ${installCompArg} PLUGINS ## will be installed ${ibrInst${target}_PLUGINS} DIRS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${ibrInst${target}_DIRS} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) install_runtime(bin/${target}${CMAKE_EXECUTABLE_SUFFIX} ## default relative to CMAKE_INSTALL_PREFIX INSTALL_FOLDER "${CMAKE_INSTALL_PREFIX_${CONFIG_TYPES_UC}}" CONFIG_TYPE ${CONFIG_TYPES} ${VERBOSE} TARGET ${target} ${installCompArg} PLUGINS ## will be installed ${ibrInst${target}_PLUGINS} DIRS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPES_UC}} ${ibrInst${target}_DIRS} ) endforeach() else() message(WARNING "STANDALONE option is only compatible with EXECUTABLES target type. Skip the STANDALONE installation process.") endif() endif() ## Provide a way to directly load the MSVC debugger with correct settings if(MSVC) if(ibrInst${target}_MSVC_CMD) ## command absolute filePathName is optional as the default is to use the installed target file application set(msvcCmdArg COMMAND ${ibrInst${target}_MSVC_CMD}) ## flag following by the value (both to pass to the MSVCsetUserCommand function) endif() if(ibrInst${target}_MSVC_ARGS) ## args (between quotes) are optional set(msvcArgsArg ARGS ${ibrInst${target}_MSVC_ARGS}) ## flag following by the value (both to pass to the MSVCsetUserCommand function) endif() get_target_property(type ${target} TYPE) if( (ibrInst${target}_MSVC_CMD OR ibrInst${target}_MSVC_ARGS) OR (${type} MATCHES "EXECUTABLE") ) include(MSVCsetUserCommand) if(DEFINED CMAKE_BUILD_TYPE) ## for make/nmake based MSVCsetUserCommand( ${target} PATH ${CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE}} ##FILE option not necessary since it deduced from targetName ARGS "${SIBR_PROGRAMARGS}" ${msvcCmdArg} #${msvcArgsArg} WORKING_DIR ${CMAKE_OUTPUT_BIN_${CMAKE_BUILD_TYPE}} ) endif() foreach(CONFIG_TYPES ${CMAKE_CONFIGURATION_TYPES}) ## for multi config types (MSVC based) string(TOUPPER ${CONFIG_TYPES} CONFIG_TYPES_UC) MSVCsetUserCommand( ${target} PATH ${CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC}} ##FILE option not necessary since it deduced from targetName ARGS "${SIBR_PROGRAMARGS}" ${msvcCmdArg} #${msvcArgsArg} WORKING_DIR ${CMAKE_OUTPUT_BIN_${CONFIG_TYPES_UC}} ) endforeach() elseif(NOT ${type} MATCHES "EXECUTABLE") #message("Cannot set MSVCsetUserCommand with target ${target} without COMMAND parameter as it is not an executable (skip it)") endif() endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/parse_arguments_multi.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr if(NOT WIN32 OR __parse_arguments_multi_cmake_INCLUDED__) return() else() set(__parse_arguments_multi_cmake_INCLUDED__ ON) endif() ## This macro allow to process repeating multi value args from a given function which use cmake_parse_arguments module. ## ## cmake_parse_arguments multi args standard behavior: ## function(foo) ## cmake_parse_arguments(arg "" "" "MULTI" ${ARGN}) ## foreach(item IN LISTS arg_MULTI) ## message(STATUS "${item}") ## endforeach() ## endfunction() ## foo(MULTI x y MULTI z w) ## The above code outputs 'z' and 'w'. It originally expected it to output all of 'x' 'y' 'z' 'w'. ## ## Using this macro inside a function which want to handle repeating multi args values ## will recursively iterate onto the multi tags list to process each sub list. ## It take as 1st argument the subTag flag to separate sub list from the main multi list. ## It take as 2nd argument the nameList of the main multi list (the multiValuesArgs from cmake_parse_arguments: here it is MULTI in the example) ## and that's why it is important that it should be a macro and not a function (to get access to external variable). ## Then you give the content of this list allowing to be processed by the macro. ## ## parse_arguments_multi macro call a parse_arguments_multi_function which do actually the process from the given sub-list. ## By default this function only print infos about what variables you are trying to pass/process (only verbose messages), ## but, by overloading this cmake function, you will be able to externalize the process of your multi argument list. ## ## Usage (into a function) : ## parse_arguments_multi( ## [NEED_RESULTS ] [EXTRAS_FLAGS <...> <...> ...] ## ) ## ## Simple usage example [user point of view]: ## foo(MULTI ## SUB_MULTI x y ## SUB_MULTI z w ## ) ## ## Simple usage example [inside a function]: ## function(foo) ## cmake_parse_arguments(arg "" "" "MULTI" ${ARGN}) ## include(parse_arguments_multi) ## function(parse_arguments_multi_function ) ## #message("I'm an overloaded cmake function used by parse_arguments_multi") ## #message("I'm processing first part of my sub list: ${ARGN}") ## message("ARGV0=${ARGV0}") ## message("ARGV1=${ARGV1}") ## endfunction() ## parse_arguments_multi(SUB_MULTI arg_MULTI ${arg_MULTI}) ## this function will process recusively items of the sub-list [default print messages] ## endfunction() ## ## Will print: ## ARGV0=z ## ARGV1=w ## ARGV0=x ## ARGV1=y ## ## WARNING : DO NEVER ADD EXTRA THINGS TO parse_arguments_multi MACRO : ## parse_arguments_multi(SUB_MULTI arg_MULTI ${arg_MULTI} EXTRAS foo bar SOMTHING) => will failed !! ## use EXTRAS_FLAGS instead !! ## ## Advanced usage example [user point of view]: ## bar(C:/prout/test.exe VERBOSE ## PLUGINS ## PLUGIN_PATH_NAME x PLUGIN_PATH_DEST w ## PLUGIN_PATH_NAME a b PLUGIN_PATH_DEST y ## PLUGIN_PATH_NAME c ## ) ## ## Advanced usage example [inside a function]: ## function(bar execFilePathName) ## cmake_parse_arguments(arg "VERBOSE" "" "PLUGINS" ${ARGN}) ## ## include(parse_arguments_multi) ## function(parse_arguments_multi_function results) ## cmake_parse_arguments(pamf "VERBOSE" "PLUGIN_PATH_DEST;EXEC_PATH" "" ${ARGN}) ## EXEC_PATH is for internal use ## message("") ## message("I'm an overloaded cmake function used by parse_arguments_multi from install_runtime function") ## message("I'm processing first part of my sub list: ${ARGN}") ## message("PLUGIN_PATH_NAME = ${pamf_UNPARSED_ARGUMENTS}") ## message(pamf_VERBOSE = ${pamf_VERBOSE}) ## message("pamf_PLUGIN_PATH_DEST = ${pamf_PLUGIN_PATH_DEST}") ## message(pamf_EXEC_PATH = ${pamf_EXEC_PATH}) ## if(NOT ${pamf_PLUGIN_PATH_DEST}) ## set(pamf_PLUGIN_PATH_DEST ${pamf_EXEC_PATH}) ## endif() ## foreach(plugin ${pamf_UNPARSED_ARGUMENTS}) ## get_filename_component(pluginName ${plugin} NAME) ## list(APPEND pluginsList ${pamf_PLUGIN_PATH_DEST}/${pluginName}) ## endforeach() ## set(${results} ${pluginsList} PARENT_SCOPE) ## endfunction() ## ## if(arg_VERBOSE) ## list(APPEND extra_flags_to_add VERBOSE) ## here we transmit the VERNOSE flag ## endif() ## get_filename_component(EXEC_PATH ${execFilePathName} PATH) ## will be the default value if PLUGIN_PATH_DEST option is not provided ## list(APPEND extra_flags_to_add EXEC_PATH ${EXEC_PATH}) ## list(LENGTH arg_PLUGINS arg_PLUGINS_count) ## parse_arguments_multi(PLUGIN_PATH_NAME arg_PLUGINS ${arg_PLUGINS} ## NEED_RESULTS ${arg_PLUGINS_count} ## this is used to check when we are in the first loop (in order to reset parse_arguments_multi_results) ## EXTRAS_FLAGS ${extra_flags_to_add} ## this is used to allow catching VERBOSE and PLUGIN_PATH_DEST flags of our overloaded function ## ) ## endfunction() ## message(parse_arguments_multi_results = ${parse_arguments_multi_results}) ## list of the whole pluginsList ## #Will print w/x;a/y;b/y;C:/prout/c ## ## NOTE that here, since our overloaded function need to provide a result list, we use the other parse_arguments_multi_function signature (the which one with a results arg) ## function(parse_arguments_multi_function_default) ## used in case of you want to reset the default behavior of this function process message("[default function] parse_arguments_multi_function(ARGC=${ARGC} ARGV=${ARGV} ARGN=${ARGN})") message("This function is used by parse_arguments_multi and have to be overloaded to process sub list of multi values args") endfunction() function(parse_arguments_multi_function ) ## => the function to overload parse_arguments_multi_function_default(${ARGN}) endfunction() ## first default signature above ##------------------------------ ## second results signature behind function(parse_arguments_multi_function_default result) ## used in case of you want to reset the default behavior of this function process message("[default function] parse_arguments_multi_function(ARGC=${ARGC} ARGV=${ARGV} ARGN=${ARGN})") message("This function is used by parse_arguments_multi and have to be overloaded to process sub list of muluti values args") endfunction() function(parse_arguments_multi_function result) ## => the function to overload parse_arguments_multi_function_default(result ${ARGN}) endfunction() ## => the macro to use inside your function which use cmake_parse_arguments # NOTE: entry point of parse_arguments_multi, which is called from win3rdPart) macro(parse_arguments_multi multiArgsSubTag multiArgsList #<${multiArgsList}> the content of the list ) # message (STATUS "") # message(STATUS "calling parse_arguemnts_multi defined in parse_arguments_multi.cmake:141") # message(STATUS "multiArgsSubTag = ${multiArgsSubTag}") # CHECK_CACHED_VAR # message(STATUS "multiArgsList = ${multiArgsList}") # it contains the name of the variable which is holding the list i.e w3p_MULTI_SET # message(STATUS "value of ${multiArgsList} = ${${multiArgsList}}") # a semicolon separated list of values passed to SET or MULTISET keyword in win3rdParty # message(STATUS "actual values ARGN = ${ARGN}") # the same as ${${multiArgsList}} ## INFO ## starting from CMake 3.5 cmake_parse_arguments is not a module anymore and now is a native CMake command. ## the behaviour is different though ## In CMake 3.4, if you pass multiple times a multi_value_keyword, CMake returns the values of the LAST match ## In CMake 3.5 and above, CMake returns the whole list of values that were following that multi_value_keyword ## example: ## cmake_parse_arguments( ## ## "" # options ## "" # one value keywords ## "MY_MULTI_VALUE_TAG" ## MY_MULTI_VALUE_TAG value1 value2 ## MY_MULTI_VALUE_TAG value3 value4 ## MY_MULTI_VALUE_TAG value5 value6 ## ) ## result in CMake 3.4 ## _MY_MULTI_VALUE_TAG = "value5;value6" ## ## result in CMake 3.8 ## _MY_MULTI_VALUE_TAG = "value5;value6" #include(CMakeParseArguments) #module CMakeParseArguments is obsolete since cmake 3.5 # cmake_parse_arguments ( args) # : options (flags) pass to the macro # : options that neeed a value # : options that neeed more than one value cmake_parse_arguments(_pam "" "NEED_RESULTS" "${multiArgsSubTag};EXTRAS_FLAGS" ${ARGN}) ## multiArgsList is the name of the list used by the multiValuesOption flag from the cmake_parse_arguments of the user function ## that's why we absolutly need to use MACRO here (and also for passing parse_arguments_multi_results when NEED_RESULTS flag is set) ## for debugging #message("") #message("[parse_arguments_multi] => ARGN = ${ARGN}") #message("_pam_NEED_RESULTS=${_pam_NEED_RESULTS}") #message("_pam_EXTRAS_FLAGS=${_pam_EXTRAS_FLAGS}") # foreach(var ${_pam_${multiArgsSubTag}}) # message("arg=${var}") # endforeach() if (${CMAKE_VERSION} VERSION_GREATER "3.5") # lets make ${_pam_${multiArgsSubTag}} behave as it is in version 3.4 # that means, cmake_parse_arguments should have only the last values of a multi set for a given keyword # message("") # message("values in multiArgsList") # foreach(val ${${multiArgsList}}) # message(STATUS ${val}) # endforeach() # message("end values in multiArgsList") set(lastIndexFound OFF) list(LENGTH ${multiArgsList} argnLength) # message(${argnLength}) math(EXPR argnLength "${argnLength}-1") # make last index a valid one set(recordIndex 0) set(records "") # clear records list set(record0 "") # clear first record list foreach(iter RANGE ${argnLength}) list(GET ${multiArgsList} ${iter} value) # message(STATUS "index=${iter} value=${value}") if (${value} STREQUAL ${multiArgsSubTag}) if (lastIndexFound) list(APPEND records ${recordIndex}) # records store the list NAMES math(EXPR recordIndex "${recordIndex}+1") set(record${recordIndex} "") # clear record list else () set(lastIndexFound ON) endif() set(lastIndex ${iter}) else () if (lastIndexFound) # message(${value}) list(APPEND record${recordIndex} ${value}) endif() endif() endforeach() # save the last list of values if (lastIndexFound) list(APPEND records ${recordIndex}) # records store the list NAMES endif() # set multiArgsList to make it behave like CMake 3.4 # message("") # message("using my records") foreach(recordName ${records}) # message(${recordName}) # foreach(value ${record${recordName}}) # message(${value}) # endforeach() # message("") set(_pam_${multiArgsSubTag} ${record${recordName}}) endforeach() # message(${_pam_${multiArgsSubTag}}) # message("") # message("using argn") # foreach(value ${ARGN}) # message(${value}) # endforeach() endif() # end if cmake > 3.5 # message("values with pam ${_pam_${multiArgsSubTag}}") ## check and init list(LENGTH ${multiArgsList} globalListCount) # GLUT_TRACE: globalListCound=16 in CMake3.4 and CMake3.8 # message(STATUS "nr items in multiArgsList: ${globalListCount}") math(EXPR globalListCount "${globalListCount}-1") ## because it will contain [multiArgsSubTag + ${multiArgsList}] if(_pam_NEED_RESULTS) if(${globalListCount} EQUAL ${_pam_NEED_RESULTS}) ## first time we enter into this macro (because we call it recursively) unset(parse_arguments_multi_results) endif() endif() ## process the part of the multi agrs list ## ${ARGN} shouldn't be passed to the function in order to avoid missmatch size list ${multiArgsList} and _pam_${multiArgsSubTag} ## if you want to pass extra internal flags from your function to this callback, use EXTRAS_FLAGS if(_pam_NEED_RESULTS) parse_arguments_multi_function(parse_arguments_multi_function_result ${_pam_${multiArgsSubTag}} ${_pam_EXTRAS_FLAGS}) list(APPEND parse_arguments_multi_results ${parse_arguments_multi_function_result}) else() # message(STATUS "about to call parse_arguments_multi_function in parse_arguments_multi.cmake:177 ${_pam_${multiArgsSubTag}} and extra flags ${_pam_EXTRAS_FLAGS}") parse_arguments_multi_function(${_pam_${multiArgsSubTag}} ${_pam_EXTRAS_FLAGS}) endif() ## remove just processed items from the main list to process (multiArgsList) list(REVERSE ${multiArgsList}) list(LENGTH _pam_${multiArgsSubTag} subTagListCount) unset(ids) foreach(id RANGE ${subTagListCount}) list(APPEND ids ${id}) endforeach() list(REMOVE_AT ${multiArgsList} ${ids}) list(REVERSE ${multiArgsList}) ## test if remain sub multi list to process (recursive call) or finish the process list(LENGTH ${multiArgsList} mainTagListCount) if(${mainTagListCount} GREATER 1) ## do not pass ${ARGN} just because it will re pass the initial 2 inputs args and we wont as they was consumed (in order to avoir conflicts) # message(STATUS "about to call a parse_arguments_multi but without knowing where the definition is going to be taken from") parse_arguments_multi(${multiArgsSubTag} ${multiArgsList} ${${multiArgsList}} NEED_RESULTS ${_pam_NEED_RESULTS} EXTRAS_FLAGS ${_pam_EXTRAS_FLAGS} ) endif() endmacro() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/cmake/windows/sibr_library.cmake ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr # NOTE # This feature is used to easily download, store and link external dependencies. This # requires to prepare pre-compiled libraries (to download). For now, packages have # only be prepare for Windows 64-bit with Visual Studio 2012. (You should re-build # everything if you want to use another version of Visual Studio/ another compiler). # NOTE ABOUT UNIX SYSTEMS # There is no need for "searching mechanism". This function is discard and your # libraries should be installed is the standard folders that are: # # /usr/include/ # /usr/lib/ # /usr/lib64/ # for packages downloaded using apt-get/yum # # /usr/local/include/ # /usr/local/lib/ # /usr/local/lib64/ # for packages manually installed ("make install") # # if you encounter problems when linking (e.g. lib not found even if it is installed), # please check these folders are in your search PATH environment variables. set(EXTLIBS_PACKAGE_FOLDER "${CMAKE_SOURCE_DIR}/extlibs") function(sibr_addlibrary) if(NOT WIN32) return() endif() file(MAKE_DIRECTORY ${EXTLIBS_PACKAGE_FOLDER}) cmake_parse_arguments(args "VCID" "VERBOSE;TIMEOUT;DEFAULT_USE;NAME;VERSION;MSVC11;MSVC12;MSVC14;MSVC17" "MULTI_SET;SET" ${ARGN}) if (NOT "${args_VERSION}" MATCHES "") message(WARNING "VERSION is not implemented yet") endif() set(lcname "") set(ucname "") string(TOLOWER "${args_NAME}" lcname) string(TOUPPER "${args_NAME}" ucname) set(LIB_PACKAGE_FOLDER "${EXTLIBS_PACKAGE_FOLDER}/${lcname}") win3rdParty(${ucname} $ VERBOSE ${args_VERBOSE} TIMEOUT ${args_TIMEOUT} DEFAULT_USE ${args_DEFAULT_USE} MSVC11 "${LIB_PACKAGE_FOLDER}" "${args_MSVC11}" MSVC12 "${LIB_PACKAGE_FOLDER}" "${args_MSVC12}" MSVC14 "${LIB_PACKAGE_FOLDER}" "${args_MSVC14}" # TODO SV: make sure to build this library if required MSVC17 "${LIB_PACKAGE_FOLDER}" "${args_MSVC17}" SET ${args_SET} MULTI_SET ${args_MULTI_SET} ) # Add include/ directory # and lib/ directories # TODO SV: paths not matching with current hierarchy. example: libraw/libraw-0.17.1/include # SR: The link directories will also be used to lookup for dependency DLLs to copy in the install directory. # Some libraries put the DLLs in the bin/ directory, so we include those. file(GLOB subdirs RELATIVE ${LIB_PACKAGE_FOLDER} ${LIB_PACKAGE_FOLDER}/*) set(dirlist "") foreach(dir ${subdirs}) if(IS_DIRECTORY ${LIB_PACKAGE_FOLDER}/${dir}) # message("adding ${LIB_PACKAGE_FOLDER}/${dir}/include/ to the include directories") include_directories("${LIB_PACKAGE_FOLDER}/${dir}/include/") # message("adding ${LIB_PACKAGE_FOLDER}/${dir}/lib[64] to the link directories") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/lib/") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/lib64/") link_directories("${LIB_PACKAGE_FOLDER}/${dir}/bin/") endif() endforeach() endfunction() include(FetchContent) include(git_describe) function(sibr_gitlibrary) cmake_parse_arguments(args "" "TARGET;GIT_REPOSITORY;GIT_TAG;ROOT_DIR;SOURCE_DIR" "INCLUDE_DIRS" ${ARGN}) if(NOT args_TARGET) message(FATAL "Error on sibr_gitlibrary : please define your target name.") return() endif() if(NOT args_ROOT_DIR) set(args_ROOT_DIR ${args_TARGET}) endif() if(NOT args_SOURCE_DIR) set(args_SOURCE_DIR ${args_TARGET}) endif() if(args_GIT_REPOSITORY AND args_GIT_TAG) if(EXISTS ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR}/.git) git_describe( PATH ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} GIT_URL SIBR_GITLIBRARY_URL GIT_BRANCH SIBR_GITLIBRARY_BRANCH GIT_COMMIT_HASH SIBR_GITLIBRARY_COMMIT_HASH GIT_TAG SIBR_GITLIBRARY_TAG ) if((SIBR_GITLIBRARY_URL STREQUAL args_GIT_REPOSITORY) AND ((SIBR_GITLIBRARY_BRANCH STREQUAL args_GIT_TAG) OR (SIBR_GITLIBRARY_TAG STREQUAL args_GIT_TAG) OR (SIBR_GITLIBRARY_COMMIT_HASH STREQUAL args_GIT_TAG))) message(STATUS "Library ${args_TARGET} already available, skipping.") set(SIBR_GITLIBRARY_DECLARED ON) else() message(STATUS "Adding library ${args_TARGET} from git...") endif() endif() FetchContent_Declare(${args_TARGET} GIT_REPOSITORY ${args_GIT_REPOSITORY} GIT_TAG ${args_GIT_TAG} GIT_SHALLOW ON SOURCE_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} SUBBUILD_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/subbuild BINARY_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/build ) FetchContent_GetProperties(${args_TARGET}) string(TOLOWER "" lcTargetName) if((NOT SIBR_GITLIBRARY_DECLARED) AND (NOT ${lcTargetName}_POPULATED)) message(STATUS "Populating library ${args_TARGET}...") FetchContent_Populate(${args_TARGET} QUIET GIT_REPOSITORY ${args_GIT_REPOSITORY} GIT_TAG ${args_GIT_TAG} SOURCE_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} SUBBUILD_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/subbuild BINARY_DIR ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/build ) endif() add_subdirectory(${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/${args_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/extlibs/${args_ROOT_DIR}/build) get_target_property(type ${args_TARGET} TYPE) if(NOT (type STREQUAL "INTERFACE_LIBRARY")) set_target_properties(${args_TARGET} PROPERTIES FOLDER "extlibs") endif() list(APPEND ${args_TARGET}_INCLUDE_DIRS ${EXTLIBS_PACKAGE_FOLDER}/${args_ROOT_DIR}) list(APPEND ${args_TARGET}_INCLUDE_DIRS ${EXTLIBS_PACKAGE_FOLDER}/${args_ROOT_DIR}/${args_SOURCE_DIR}) foreach(args_INCLUDE_DIR ${args_INCLUDE_DIRS}) list(APPEND ${args_TARGET}_INCLUDE_DIRS ${EXTLIBS_PACKAGE_FOLDER}/${args_ROOT_DIR}/${args_SOURCE_DIR}/${args_INCLUDE_DIR}) endforeach() include_directories(${${args_TARGET}_INCLUDE_DIRS}) else() message(FATAL "Error on sibr_gitlibrary for target ${args_TARGET}: missing git tag or git url.") endif() endfunction() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/docs/CMakeLists.txt ================================================ # Copyright (C) 2020, Inria # GRAPHDECO research group, https://team.inria.fr/graphdeco # All rights reserved. # # This software is free for non-commercial, research and evaluation use # under the terms of the LICENSE.md file. # # For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr ######################################################### # Include doxygen documentation target ######################################################### option(BUILD_DOCUMENTATION "build doxygen documentation ('Build' DOCUMENTATION target, and find the compiled docs in install/docs/index.html)" OFF) if(BUILD_DOCUMENTATION) set(DOXYGEN_REQUIRED_VERSION "1.8.17") find_package(Doxygen) if(NOT DOXYGEN_FOUND) message(FATAL_ERROR "Doxygen not found, unable to generate documentation.") elseif(DOXYGEN_VERSION VERSION_LESS DOXYGEN_REQUIRED_VERSION) message(FATAL_ERROR "Doxygen version is less than ${DOXYGEN_REQUIRED_VERSION} (Current version is ${DOXYGEN_VERSION}).") else() set(DOXY_DOC_DEST_DIR ${CMAKE_INSTALL_ROOT}/docs) ## used in the doxyfile.in set(DOXY_DOC_INPUT_ROOT_DIRS "${CMAKE_HOME_DIRECTORY}/src ${CMAKE_HOME_DIRECTORY}/docs ${CMAKE_CURRENT_BINARY_DIR}/generated") ## used in the doxyfile.in set(DOXY_DOC_EXCLUDE_PATTERNS_DIRS "${DOXY_DOC_EXCLUDE_PATTERNS_DIRS}") ## used in the doxyfile.in set(DOXY_DOC_COMMON_IMG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/img ${CMAKE_HOME_DIRECTORY}/src/projects") set(DOXY_DOC_PAGES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/pages") set(DOXY_DOC_GENERATED_DOC_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_SAMPLES_SUBPAGE_REF "${SIBR_PROJECTS_SAMPLES_SUBPAGE_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_OURS_SUBPAGE_REF "${SIBR_PROJECTS_OURS_SUBPAGE_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_TOOLBOX_SUBPAGE_REF "${SIBR_PROJECTS_TOOLBOX_SUBPAGE_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_OTHERS_SUBPAGE_REF "${SIBR_PROJECTS_OTHERS_SUBPAGE_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_SAMPLES_REF_REF "${SIBR_PROJECTS_SAMPLES_REF_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_OURS_REF_REF "${SIBR_PROJECTS_OURS_REF_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_TOOLBOX_REF_REF "${SIBR_PROJECTS_TOOLBOX_REF_REF}") string(REPLACE "\\" "\\\\" SIBR_PROJECTS_OTHERS_REF_REF "${SIBR_PROJECTS_OTHERS_REF_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_SAMPLES_SUBPAGE_REF "${SIBR_PROJECTS_SAMPLES_SUBPAGE_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_OURS_SUBPAGE_REF "${SIBR_PROJECTS_OURS_SUBPAGE_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_TOOLBOX_SUBPAGE_REF "${SIBR_PROJECTS_TOOLBOX_SUBPAGE_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_OTHERS_SUBPAGE_REF "${SIBR_PROJECTS_OTHERS_SUBPAGE_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_SAMPLES_REF_REF "${SIBR_PROJECTS_SAMPLES_REF_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_OURS_REF_REF "${SIBR_PROJECTS_OURS_REF_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_TOOLBOX_REF_REF "${SIBR_PROJECTS_TOOLBOX_REF_REF}") string(REPLACE "\n" "\\n" SIBR_PROJECTS_OTHERS_REF_REF "${SIBR_PROJECTS_OTHERS_REF_REF}") file(GLOB doxygen_config_files "*.in") foreach(filename ${doxygen_config_files}) message(STATUS "Generating ${filename}...") get_filename_component(output_filename ${filename} NAME_WLE) message(STATUS "Output in ${CMAKE_CURRENT_BINARY_DIR}/${output_filename}...") configure_file(${filename} ${CMAKE_CURRENT_BINARY_DIR}/${output_filename} @ONLY) endforeach() add_custom_target(DOCUMENTATION ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/doxygen_prebuild.cmake COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/doxyfile" WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY} COMMENT "Building user's documentation into ${DOXY_DOC_DEST_DIR} dir..." ) endif() endif() ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/SIBR_viewers/docs/doxyfile.in ================================================ # Doxyfile 1.8.20 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the configuration # file that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = SIBR # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = @SIBR_CORE_VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = @DOXY_DOC_DEST_DIR@ # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all generated output in the proper direction. # Possible values are: None, LTR, RTL and Context. # The default value is: None. OUTPUT_TEXT_DIRECTION = None # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be # interpreted by doxygen. # The default value is: NO. JAVADOC_BANNER = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # By default Python docstrings are displayed as preformatted text and doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the # doxygen's special commands can be used and the contents of the docstring # documentation blocks is shown as doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines (in the resulting output). You can put ^^ in the value part of an # alias to insert a newline as if a physical newline was in the original file. # When you need a literal { or } or , in the value part of an alias you have to # escape them by means of a backslash (\), this can lead to conflicts with the # commands \{ and \} for these it is advised to use the version @{ and @} or use # a double escape (\\{ and \\}) ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice # sources only. Doxygen will then generate output that is more tailored for that # language. For instance, namespaces will be presented as modules, types will be # separated into more groups, etc. # The default value is: NO. OPTIMIZE_OUTPUT_SLICE = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, # Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the # default for Fortran type files). For instance to make doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. # Minimum value: 0, maximum value: 99, default value: 5. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 0 # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = YES # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 # The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, # which efficively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. NUM_PROC_THREADS = 1 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = YES # If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual # methods of a class will be included in the documentation. # The default value is: NO. EXTRACT_PRIV_VIRTUAL = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = YES # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = YES # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # (including Cygwin) and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = YES # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = @CMAKE_CURRENT_BINARY_DIR@/layout.xml # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = NO # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. If # EXTRACT_ALL is set to YES then this flag will automatically be disabled. # The default value is: NO. WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. # The default value is: NO. WARN_AS_ERROR = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = @DOXY_DOC_INPUT_ROOT_DIRS@ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: https://www.gnu.org/software/libiconv/) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, # *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), # *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen # C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, # *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.h \ *.hh \ *.hpp \ *.hxx \ *.cpp \ *.cxx \ *.cc \ *.fp \ *.vp \ *.gp \ *.vs \ *.fs \ *.gs \ *.vert \ *.frag \ *.geom \ *.md \ *.dox \ *.py # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = @DOXY_DOC_EXCLUDE_PATTERNS_DIRS@ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = @DOXY_DOC_COMMON_IMG_PATH@ \ @DOXY_APP_SPECIFIC_IMG_PATH@ # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse_libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = # If clang assisted parsing is enabled you can provide the clang parser with the # path to the directory containing a file called compile_commands.json. This # file is the compilation database (see: # http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the # options used when the source files were built. This is equivalent to # specifying the "-p" option to a clang tool, such as clang-check. These options # will then be passed to the parser. Any options specified with CLANG_OPTIONS # will be added as well. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse_libclang=ON option for CMake. CLANG_DATABASE_PATH = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = NO # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = . # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will # consists of multiple levels of tabs that are statically embedded in every HTML # page. Disable this option to support browsers that do not have JavaScript, # like the Qt help browser. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: https://developer.apple.com/xcode/), introduced with OSX # 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy # genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = YES # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. # Possible values are: png (the default) and svg (looks nicer but requires the # pdf2svg or inkscape tool). # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FORMULA_FORMAT = png # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. FORMULA_MACROFILE = # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from https://www.mathjax.org before deployment. # The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_0.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_0.js ================================================ var searchData= [ ['abs',['abs',['../a00241.html#ga439e60a72eadecfeda2df5449c613a64',1,'glm::abs(genType x)'],['../a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6',1,'glm::abs(vec< L, T, Q > const &x)']]], ['acos',['acos',['../a00373.html#gacc9b092df8257c68f19c9053703e2563',1,'glm']]], ['acosh',['acosh',['../a00373.html#ga858f35dc66fd2688f20c52b5f25be76a',1,'glm']]], ['acot',['acot',['../a00301.html#gaeadfb9c9d71093f7865b2ba2ca8d104d',1,'glm']]], ['acoth',['acoth',['../a00301.html#gafaca98a7100170db8841f446282debfa',1,'glm']]], ['acsc',['acsc',['../a00301.html#ga1b4bed91476b9b915e76b4a30236d330',1,'glm']]], ['acsch',['acsch',['../a00301.html#ga4b50aa5e5afc7e19ec113ab91596c576',1,'glm']]], ['adjugate',['adjugate',['../a00339.html#ga40a38402a30860af6e508fe76211e659',1,'glm::adjugate(mat< 2, 2, T, Q > const &m)'],['../a00339.html#gaddb09f7abc1a9c56a243d32ff3538be6',1,'glm::adjugate(mat< 3, 3, T, Q > const &m)'],['../a00339.html#ga9aaa7d1f40391b0b5cacccb60e104ba8',1,'glm::adjugate(mat< 4, 4, T, Q > const &m)']]], ['affineinverse',['affineInverse',['../a00295.html#gae0fcc5fc8783291f9702272de428fa0e',1,'glm']]], ['aligned_5fbvec1',['aligned_bvec1',['../a00303.html#ga780a35f764020f553a9601a3fcdcd059',1,'glm']]], ['aligned_5fbvec2',['aligned_bvec2',['../a00303.html#gae766b317c5afec852bfb3d74a3c54bc8',1,'glm']]], ['aligned_5fbvec3',['aligned_bvec3',['../a00303.html#gae1964ba70d15915e5b710926decbb3cb',1,'glm']]], ['aligned_5fbvec4',['aligned_bvec4',['../a00303.html#gae164a1f7879f828bc35e50b79d786b05',1,'glm']]], ['aligned_5fdmat2',['aligned_dmat2',['../a00303.html#ga6783859382677d35fcd5dac7dcbefdbd',1,'glm']]], ['aligned_5fdmat2x2',['aligned_dmat2x2',['../a00303.html#ga449a3ec2dde6b6bb4bb94c49a6aad388',1,'glm']]], ['aligned_5fdmat2x3',['aligned_dmat2x3',['../a00303.html#ga53d519a7b1bfb69076b3ec206a6b3bd1',1,'glm']]], ['aligned_5fdmat2x4',['aligned_dmat2x4',['../a00303.html#ga5ccb2baeb0ab57b818c24e0d486c59d0',1,'glm']]], ['aligned_5fdmat3',['aligned_dmat3',['../a00303.html#ga19aa695ffdb45ce29f7ea0b5029627de',1,'glm']]], ['aligned_5fdmat3x2',['aligned_dmat3x2',['../a00303.html#ga5f5123d834bd1170edf8c386834e112c',1,'glm']]], ['aligned_5fdmat3x3',['aligned_dmat3x3',['../a00303.html#ga635bf3732281a2c2ca54d8f9d33d178f',1,'glm']]], ['aligned_5fdmat3x4',['aligned_dmat3x4',['../a00303.html#gaf488c6ad88c185054595d4d5c7ba5b9d',1,'glm']]], ['aligned_5fdmat4',['aligned_dmat4',['../a00303.html#ga001bb387ae8192fa94dbd8b23b600439',1,'glm']]], ['aligned_5fdmat4x2',['aligned_dmat4x2',['../a00303.html#gaa409cfb737bd59b68dc683e9b03930cc',1,'glm']]], ['aligned_5fdmat4x3',['aligned_dmat4x3',['../a00303.html#ga621e89ca1dbdcb7b5a3e7de237c44121',1,'glm']]], ['aligned_5fdmat4x4',['aligned_dmat4x4',['../a00303.html#gac9bda778d0b7ad82f656dab99b71857a',1,'glm']]], ['aligned_5fdvec1',['aligned_dvec1',['../a00303.html#ga4974f46ae5a19415d91316960a53617a',1,'glm']]], ['aligned_5fdvec2',['aligned_dvec2',['../a00303.html#ga18d859f87122b2b3b2992ffe86dbebc0',1,'glm']]], ['aligned_5fdvec3',['aligned_dvec3',['../a00303.html#gaa37869eea77d28419b2fb0ff70b69bf0',1,'glm']]], ['aligned_5fdvec4',['aligned_dvec4',['../a00303.html#ga8a9f0a4795ccc442fa9901845026f9f5',1,'glm']]], ['aligned_5fhighp_5fbvec1',['aligned_highp_bvec1',['../a00303.html#ga862843a45b01c35ffe4d44c47ea774ad',1,'glm']]], ['aligned_5fhighp_5fbvec2',['aligned_highp_bvec2',['../a00303.html#ga0731b593c5e33559954c80f8687e76c6',1,'glm']]], ['aligned_5fhighp_5fbvec3',['aligned_highp_bvec3',['../a00303.html#ga0913bdf048d0cb74af1d2512aec675bc',1,'glm']]], ['aligned_5fhighp_5fbvec4',['aligned_highp_bvec4',['../a00303.html#ga9df1d0c425852cf63a57e533b7a83f4f',1,'glm']]], ['aligned_5fhighp_5fdmat2',['aligned_highp_dmat2',['../a00303.html#ga3a7eeae43cb7673e14cc89bf02f7dd45',1,'glm']]], ['aligned_5fhighp_5fdmat2x2',['aligned_highp_dmat2x2',['../a00303.html#gaef26dfe3855a91644665b55c9096a8c8',1,'glm']]], ['aligned_5fhighp_5fdmat2x3',['aligned_highp_dmat2x3',['../a00303.html#gaa7c9d4ab7ab651cdf8001fe7843e238b',1,'glm']]], ['aligned_5fhighp_5fdmat2x4',['aligned_highp_dmat2x4',['../a00303.html#gaa0d2b8a75f1908dcf32c27f8524bdced',1,'glm']]], ['aligned_5fhighp_5fdmat3',['aligned_highp_dmat3',['../a00303.html#gad8f6abb2c9994850b5d5c04a5f979ed8',1,'glm']]], ['aligned_5fhighp_5fdmat3x2',['aligned_highp_dmat3x2',['../a00303.html#gab069b2fc2ec785fc4e193cf26c022679',1,'glm']]], ['aligned_5fhighp_5fdmat3x3',['aligned_highp_dmat3x3',['../a00303.html#ga66073b1ddef34b681741f572338ddb8e',1,'glm']]], ['aligned_5fhighp_5fdmat3x4',['aligned_highp_dmat3x4',['../a00303.html#ga683c8ca66de323ea533a760abedd0efc',1,'glm']]], ['aligned_5fhighp_5fdmat4',['aligned_highp_dmat4',['../a00303.html#gacaa7407ea00ffdd322ce86a57adb547e',1,'glm']]], ['aligned_5fhighp_5fdmat4x2',['aligned_highp_dmat4x2',['../a00303.html#ga93a23ca3d42818d56e0702213c66354b',1,'glm']]], ['aligned_5fhighp_5fdmat4x3',['aligned_highp_dmat4x3',['../a00303.html#gacab7374b560745cb1d0a306a90353f58',1,'glm']]], ['aligned_5fhighp_5fdmat4x4',['aligned_highp_dmat4x4',['../a00303.html#ga1fbfba14368b742972d3b58a0a303682',1,'glm']]], ['aligned_5fhighp_5fdvec1',['aligned_highp_dvec1',['../a00303.html#gaf0448b0f7ceb8273f7eda3a92205eefc',1,'glm']]], ['aligned_5fhighp_5fdvec2',['aligned_highp_dvec2',['../a00303.html#gab173a333e6b7ce153ceba66ac4a321cf',1,'glm']]], ['aligned_5fhighp_5fdvec3',['aligned_highp_dvec3',['../a00303.html#gae94ef61edfa047d05bc69b6065fc42ba',1,'glm']]], ['aligned_5fhighp_5fdvec4',['aligned_highp_dvec4',['../a00303.html#ga8fad35c5677f228e261fe541f15363a4',1,'glm']]], ['aligned_5fhighp_5fivec1',['aligned_highp_ivec1',['../a00303.html#gad63b8c5b4dc0500d54d7414ef555178f',1,'glm']]], ['aligned_5fhighp_5fivec2',['aligned_highp_ivec2',['../a00303.html#ga41563650f36cb7f479e080de21e08418',1,'glm']]], ['aligned_5fhighp_5fivec3',['aligned_highp_ivec3',['../a00303.html#ga6eca5170bb35eac90b4972590fd31a06',1,'glm']]], ['aligned_5fhighp_5fivec4',['aligned_highp_ivec4',['../a00303.html#ga31bfa801e1579fdba752ec3f7a45ec91',1,'glm']]], ['aligned_5fhighp_5fmat2',['aligned_highp_mat2',['../a00303.html#gaf9db5e8a929c317da5aa12cc53741b63',1,'glm']]], ['aligned_5fhighp_5fmat2x2',['aligned_highp_mat2x2',['../a00303.html#gab559d943abf92bc588bcd3f4c0e4664b',1,'glm']]], ['aligned_5fhighp_5fmat2x3',['aligned_highp_mat2x3',['../a00303.html#ga50c9af5aa3a848956d625fc64dc8488e',1,'glm']]], ['aligned_5fhighp_5fmat2x4',['aligned_highp_mat2x4',['../a00303.html#ga0edcfdd179f8a158342eead48a4d0c2a',1,'glm']]], ['aligned_5fhighp_5fmat3',['aligned_highp_mat3',['../a00303.html#gabab3afcc04459c7b123604ae5dc663f6',1,'glm']]], ['aligned_5fhighp_5fmat3x2',['aligned_highp_mat3x2',['../a00303.html#ga9fc2167b47c9be9295f2d8eea7f0ca75',1,'glm']]], ['aligned_5fhighp_5fmat3x3',['aligned_highp_mat3x3',['../a00303.html#ga2f7b8c99ba6f2d07c73a195a8143c259',1,'glm']]], ['aligned_5fhighp_5fmat3x4',['aligned_highp_mat3x4',['../a00303.html#ga52e00afd0eb181e6738f40cf41787049',1,'glm']]], ['aligned_5fhighp_5fmat4',['aligned_highp_mat4',['../a00303.html#ga058ae939bfdbcbb80521dd4a3b01afba',1,'glm']]], ['aligned_5fhighp_5fmat4x2',['aligned_highp_mat4x2',['../a00303.html#ga84e1f5e0718952a079b748825c03f956',1,'glm']]], ['aligned_5fhighp_5fmat4x3',['aligned_highp_mat4x3',['../a00303.html#gafff1684c4ff19b4a818138ccacc1e78d',1,'glm']]], ['aligned_5fhighp_5fmat4x4',['aligned_highp_mat4x4',['../a00303.html#ga40d49648083a0498a12a4bb41ae6ece8',1,'glm']]], ['aligned_5fhighp_5fuvec1',['aligned_highp_uvec1',['../a00303.html#ga5b80e28396c6ef7d32c6fd18df498451',1,'glm']]], ['aligned_5fhighp_5fuvec2',['aligned_highp_uvec2',['../a00303.html#ga04db692662a4908beeaf5a5ba6e19483',1,'glm']]], ['aligned_5fhighp_5fuvec3',['aligned_highp_uvec3',['../a00303.html#ga073fd6e8b241afade6d8afbd676b2667',1,'glm']]], ['aligned_5fhighp_5fuvec4',['aligned_highp_uvec4',['../a00303.html#gabdd60462042859f876c17c7346c732a5',1,'glm']]], ['aligned_5fhighp_5fvec1',['aligned_highp_vec1',['../a00303.html#ga4d0bd70d5fac49b800546d608b707513',1,'glm']]], ['aligned_5fhighp_5fvec2',['aligned_highp_vec2',['../a00303.html#gac9f8482dde741fb6bab7248b81a45465',1,'glm']]], ['aligned_5fhighp_5fvec3',['aligned_highp_vec3',['../a00303.html#ga65415d2d68c9cc0ca554524a8f5510b2',1,'glm']]], ['aligned_5fhighp_5fvec4',['aligned_highp_vec4',['../a00303.html#ga7cb26d354dd69d23849c34c4fba88da9',1,'glm']]], ['aligned_5fivec1',['aligned_ivec1',['../a00303.html#ga76298aed82a439063c3d55980c84aa0b',1,'glm']]], ['aligned_5fivec2',['aligned_ivec2',['../a00303.html#gae4f38fd2c86cee6940986197777b3ca4',1,'glm']]], ['aligned_5fivec3',['aligned_ivec3',['../a00303.html#ga32794322d294e5ace7fed4a61896f270',1,'glm']]], ['aligned_5fivec4',['aligned_ivec4',['../a00303.html#ga7f79eae5927c9033d84617e49f6f34e4',1,'glm']]], ['aligned_5flowp_5fbvec1',['aligned_lowp_bvec1',['../a00303.html#gac6036449ab1c4abf8efe1ea00fcdd1c9',1,'glm']]], ['aligned_5flowp_5fbvec2',['aligned_lowp_bvec2',['../a00303.html#ga59fadcd3835646e419372ae8b43c5d37',1,'glm']]], ['aligned_5flowp_5fbvec3',['aligned_lowp_bvec3',['../a00303.html#ga83aab4d191053f169c93a3e364f2e118',1,'glm']]], ['aligned_5flowp_5fbvec4',['aligned_lowp_bvec4',['../a00303.html#gaa7a76555ee4853614e5755181a8dd54e',1,'glm']]], ['aligned_5flowp_5fdmat2',['aligned_lowp_dmat2',['../a00303.html#ga79a90173d8faa9816dc852ce447d66ca',1,'glm']]], ['aligned_5flowp_5fdmat2x2',['aligned_lowp_dmat2x2',['../a00303.html#ga07cb8e846666cbf56045b064fb553d2e',1,'glm']]], ['aligned_5flowp_5fdmat2x3',['aligned_lowp_dmat2x3',['../a00303.html#ga7a4536b6e1f2ebb690f63816b5d7e48b',1,'glm']]], ['aligned_5flowp_5fdmat2x4',['aligned_lowp_dmat2x4',['../a00303.html#gab0cf4f7c9a264941519acad286e055ea',1,'glm']]], ['aligned_5flowp_5fdmat3',['aligned_lowp_dmat3',['../a00303.html#gac00e15efded8a57c9dec3aed0fb547e7',1,'glm']]], ['aligned_5flowp_5fdmat3x2',['aligned_lowp_dmat3x2',['../a00303.html#gaa281a47d5d627313984d0f8df993b648',1,'glm']]], ['aligned_5flowp_5fdmat3x3',['aligned_lowp_dmat3x3',['../a00303.html#ga7f3148a72355e39932d6855baca42ebc',1,'glm']]], ['aligned_5flowp_5fdmat3x4',['aligned_lowp_dmat3x4',['../a00303.html#gaea3ccc5ef5b178e6e49b4fa1427605d3',1,'glm']]], ['aligned_5flowp_5fdmat4',['aligned_lowp_dmat4',['../a00303.html#gab92c6d7d58d43dfb8147e9aedfe8351b',1,'glm']]], ['aligned_5flowp_5fdmat4x2',['aligned_lowp_dmat4x2',['../a00303.html#gaf806dfdaffb2e9f7681b1cd2825898ce',1,'glm']]], ['aligned_5flowp_5fdmat4x3',['aligned_lowp_dmat4x3',['../a00303.html#gab0931ac7807fa1428c7bbf249efcdf0d',1,'glm']]], ['aligned_5flowp_5fdmat4x4',['aligned_lowp_dmat4x4',['../a00303.html#gad8220a93d2fca2dd707821b4ab6f809e',1,'glm']]], ['aligned_5flowp_5fdvec1',['aligned_lowp_dvec1',['../a00303.html#ga7f8a2cc5a686e52b1615761f4978ca62',1,'glm']]], ['aligned_5flowp_5fdvec2',['aligned_lowp_dvec2',['../a00303.html#ga0e37cff4a43cca866101f0a35f01db6d',1,'glm']]], ['aligned_5flowp_5fdvec3',['aligned_lowp_dvec3',['../a00303.html#gab9e669c4efd52d3347fc6d5f6b20fd59',1,'glm']]], ['aligned_5flowp_5fdvec4',['aligned_lowp_dvec4',['../a00303.html#ga226f5ec7a953cea559c16fe3aff9924f',1,'glm']]], ['aligned_5flowp_5fivec1',['aligned_lowp_ivec1',['../a00303.html#ga1101d3a82b2e3f5f8828bd8f3adab3e1',1,'glm']]], ['aligned_5flowp_5fivec2',['aligned_lowp_ivec2',['../a00303.html#ga44c4accad582cfbd7226a19b83b0cadc',1,'glm']]], ['aligned_5flowp_5fivec3',['aligned_lowp_ivec3',['../a00303.html#ga65663f10a02e52cedcddbcfe36ddf38d',1,'glm']]], ['aligned_5flowp_5fivec4',['aligned_lowp_ivec4',['../a00303.html#gaae92fcec8b2e0328ffbeac31cc4fc419',1,'glm']]], ['aligned_5flowp_5fmat2',['aligned_lowp_mat2',['../a00303.html#ga17c424412207b00dba1cf587b099eea3',1,'glm']]], ['aligned_5flowp_5fmat2x2',['aligned_lowp_mat2x2',['../a00303.html#ga0e44aeb930a47f9cbf2db15b56433b0f',1,'glm']]], ['aligned_5flowp_5fmat2x3',['aligned_lowp_mat2x3',['../a00303.html#ga7dec6d96bc61312b1e56d137c9c74030',1,'glm']]], ['aligned_5flowp_5fmat2x4',['aligned_lowp_mat2x4',['../a00303.html#gaa694fab1f8df5f658846573ba8ffc563',1,'glm']]], ['aligned_5flowp_5fmat3',['aligned_lowp_mat3',['../a00303.html#ga1eb9076cc28ead5020fd3029fd0472c5',1,'glm']]], ['aligned_5flowp_5fmat3x2',['aligned_lowp_mat3x2',['../a00303.html#ga2d6639f0bd777bae1ee0eba71cd7bfdc',1,'glm']]], ['aligned_5flowp_5fmat3x3',['aligned_lowp_mat3x3',['../a00303.html#gaeaab04e378a90956eec8d68a99d777ed',1,'glm']]], ['aligned_5flowp_5fmat3x4',['aligned_lowp_mat3x4',['../a00303.html#ga1f03696ab066572c6c044e63edf635a2',1,'glm']]], ['aligned_5flowp_5fmat4',['aligned_lowp_mat4',['../a00303.html#ga25ea2f684e36aa5e978b4f2f86593824',1,'glm']]], ['aligned_5flowp_5fmat4x2',['aligned_lowp_mat4x2',['../a00303.html#ga2cb16c3fdfb15e0719d942ee3b548bc4',1,'glm']]], ['aligned_5flowp_5fmat4x3',['aligned_lowp_mat4x3',['../a00303.html#ga7e96981e872f17a780d9f1c22dc1f512',1,'glm']]], ['aligned_5flowp_5fmat4x4',['aligned_lowp_mat4x4',['../a00303.html#gadae3dcfc22d28c64d0548cbfd9d08719',1,'glm']]], ['aligned_5flowp_5fuvec1',['aligned_lowp_uvec1',['../a00303.html#gad09b93acc43c43423408d17a64f6d7ca',1,'glm']]], ['aligned_5flowp_5fuvec2',['aligned_lowp_uvec2',['../a00303.html#ga6f94fcd28dde906fc6cad5f742b55c1a',1,'glm']]], ['aligned_5flowp_5fuvec3',['aligned_lowp_uvec3',['../a00303.html#ga9e9f006970b1a00862e3e6e599eedd4c',1,'glm']]], ['aligned_5flowp_5fuvec4',['aligned_lowp_uvec4',['../a00303.html#ga46b1b0b9eb8625a5d69137bd66cd13dc',1,'glm']]], ['aligned_5flowp_5fvec1',['aligned_lowp_vec1',['../a00303.html#gab34aee3d5e121c543fea11d2c50ecc43',1,'glm']]], ['aligned_5flowp_5fvec2',['aligned_lowp_vec2',['../a00303.html#ga53ac5d252317f1fa43c2ef921857bf13',1,'glm']]], ['aligned_5flowp_5fvec3',['aligned_lowp_vec3',['../a00303.html#ga98f0b5cd65fce164ff1367c2a3b3aa1e',1,'glm']]], ['aligned_5flowp_5fvec4',['aligned_lowp_vec4',['../a00303.html#ga82f7275d6102593a69ce38cdad680409',1,'glm']]], ['aligned_5fmat2',['aligned_mat2',['../a00303.html#ga5a8a5f8c47cd7d5502dd9932f83472b9',1,'glm']]], ['aligned_5fmat2x2',['aligned_mat2x2',['../a00303.html#gabb04f459d81d753d278b2072e2375e8e',1,'glm']]], ['aligned_5fmat2x3',['aligned_mat2x3',['../a00303.html#ga832476bb1c59ef673db37433ff34e399',1,'glm']]], ['aligned_5fmat2x4',['aligned_mat2x4',['../a00303.html#gadab11a7504430825b648ff7c7e36b725',1,'glm']]], ['aligned_5fmat3',['aligned_mat3',['../a00303.html#ga43a92a24ca863e0e0f3b65834b3cf714',1,'glm']]], ['aligned_5fmat3x2',['aligned_mat3x2',['../a00303.html#ga5c0df24ba85eafafc0eb0c90690510ed',1,'glm']]], ['aligned_5fmat3x3',['aligned_mat3x3',['../a00303.html#gadb065dbe5c11271fef8cf2ea8608f187',1,'glm']]], ['aligned_5fmat3x4',['aligned_mat3x4',['../a00303.html#ga88061c72c997b94c420f2b0a60d9df26',1,'glm']]], ['aligned_5fmat4',['aligned_mat4',['../a00303.html#gab0fddcf95dd51cbcbf624ea7c40dfeb8',1,'glm']]], ['aligned_5fmat4x2',['aligned_mat4x2',['../a00303.html#gac9a2d0fb815fd5c2bd58b869c55e32d3',1,'glm']]], ['aligned_5fmat4x3',['aligned_mat4x3',['../a00303.html#ga452bbbfd26e244de216e4d004d50bb74',1,'glm']]], ['aligned_5fmat4x4',['aligned_mat4x4',['../a00303.html#ga8b8fb86973a0b768c5bd802c92fac1a1',1,'glm']]], ['aligned_5fmediump_5fbvec1',['aligned_mediump_bvec1',['../a00303.html#gadd3b8bd71a758f7fb0da8e525156f34e',1,'glm']]], ['aligned_5fmediump_5fbvec2',['aligned_mediump_bvec2',['../a00303.html#gacb183eb5e67ec0d0ea5a016cba962810',1,'glm']]], ['aligned_5fmediump_5fbvec3',['aligned_mediump_bvec3',['../a00303.html#gacfa4a542f1b20a5b63ad702dfb6fd587',1,'glm']]], ['aligned_5fmediump_5fbvec4',['aligned_mediump_bvec4',['../a00303.html#ga91bc1f513bb9b0fd60281d57ded9a48c',1,'glm']]], ['aligned_5fmediump_5fdmat2',['aligned_mediump_dmat2',['../a00303.html#ga62a2dfd668c91072b72c3109fc6cda28',1,'glm']]], ['aligned_5fmediump_5fdmat2x2',['aligned_mediump_dmat2x2',['../a00303.html#ga9b7feec247d378dd407ba81f56ea96c8',1,'glm']]], ['aligned_5fmediump_5fdmat2x3',['aligned_mediump_dmat2x3',['../a00303.html#gafcb189f4f93648fe7ca802ca4aca2eb8',1,'glm']]], ['aligned_5fmediump_5fdmat2x4',['aligned_mediump_dmat2x4',['../a00303.html#ga92f8873e3bbd5ca1323c8bbe5725cc5e',1,'glm']]], ['aligned_5fmediump_5fdmat3',['aligned_mediump_dmat3',['../a00303.html#ga6dc2832b747c00e0a0df621aba196960',1,'glm']]], ['aligned_5fmediump_5fdmat3x2',['aligned_mediump_dmat3x2',['../a00303.html#ga5a97f0355d801de3444d42c1d5b40438',1,'glm']]], ['aligned_5fmediump_5fdmat3x3',['aligned_mediump_dmat3x3',['../a00303.html#ga649d0acf01054b17e679cf00e150e025',1,'glm']]], ['aligned_5fmediump_5fdmat3x4',['aligned_mediump_dmat3x4',['../a00303.html#ga45e155a4840f69b2fa4ed8047a676860',1,'glm']]], ['aligned_5fmediump_5fdmat4',['aligned_mediump_dmat4',['../a00303.html#ga8a9376d82f0e946e25137eb55543e6ce',1,'glm']]], ['aligned_5fmediump_5fdmat4x2',['aligned_mediump_dmat4x2',['../a00303.html#gabc25e547f4de4af62403492532cd1b6d',1,'glm']]], ['aligned_5fmediump_5fdmat4x3',['aligned_mediump_dmat4x3',['../a00303.html#gae84f4763ecdc7457ecb7930bad12057c',1,'glm']]], ['aligned_5fmediump_5fdmat4x4',['aligned_mediump_dmat4x4',['../a00303.html#gaa292ebaa907afdecb2d5967fb4fb1247',1,'glm']]], ['aligned_5fmediump_5fdvec1',['aligned_mediump_dvec1',['../a00303.html#ga7180b685c581adb224406a7f831608e3',1,'glm']]], ['aligned_5fmediump_5fdvec2',['aligned_mediump_dvec2',['../a00303.html#ga9af1eabe22f569e70d9893be72eda0f5',1,'glm']]], ['aligned_5fmediump_5fdvec3',['aligned_mediump_dvec3',['../a00303.html#ga058e7ddab1428e47f2197bdd3a5a6953',1,'glm']]], ['aligned_5fmediump_5fdvec4',['aligned_mediump_dvec4',['../a00303.html#gaffd747ea2aea1e69c2ecb04e68521b21',1,'glm']]], ['aligned_5fmediump_5fivec1',['aligned_mediump_ivec1',['../a00303.html#ga20e63dd980b81af10cadbbe219316650',1,'glm']]], ['aligned_5fmediump_5fivec2',['aligned_mediump_ivec2',['../a00303.html#gaea13d89d49daca2c796aeaa82fc2c2f2',1,'glm']]], ['aligned_5fmediump_5fivec3',['aligned_mediump_ivec3',['../a00303.html#gabbf0f15e9c3d9868e43241ad018f82bd',1,'glm']]], ['aligned_5fmediump_5fivec4',['aligned_mediump_ivec4',['../a00303.html#ga6099dd7878d0a78101a4250d8cd2d736',1,'glm']]], ['aligned_5fmediump_5fmat2',['aligned_mediump_mat2',['../a00303.html#gaf6f041b212c57664d88bc6aefb7e36f3',1,'glm']]], ['aligned_5fmediump_5fmat2x2',['aligned_mediump_mat2x2',['../a00303.html#ga04bf49316ee777d42fcfe681ee37d7be',1,'glm']]], ['aligned_5fmediump_5fmat2x3',['aligned_mediump_mat2x3',['../a00303.html#ga26a0b61e444a51a37b9737cf4d84291b',1,'glm']]], ['aligned_5fmediump_5fmat2x4',['aligned_mediump_mat2x4',['../a00303.html#ga163facc9ed2692ea1300ed57c5d12b17',1,'glm']]], ['aligned_5fmediump_5fmat3',['aligned_mediump_mat3',['../a00303.html#ga3b76ba17ae5d53debeb6f7e55919a57c',1,'glm']]], ['aligned_5fmediump_5fmat3x2',['aligned_mediump_mat3x2',['../a00303.html#ga80dee705d714300378e0847f45059097',1,'glm']]], ['aligned_5fmediump_5fmat3x3',['aligned_mediump_mat3x3',['../a00303.html#ga721f5404caf40d68962dcc0529de71d9',1,'glm']]], ['aligned_5fmediump_5fmat3x4',['aligned_mediump_mat3x4',['../a00303.html#ga98f4dc6722a2541a990918c074075359',1,'glm']]], ['aligned_5fmediump_5fmat4',['aligned_mediump_mat4',['../a00303.html#gaeefee8317192174596852ce19b602720',1,'glm']]], ['aligned_5fmediump_5fmat4x2',['aligned_mediump_mat4x2',['../a00303.html#ga46f372a006345c252a41267657cc22c0',1,'glm']]], ['aligned_5fmediump_5fmat4x3',['aligned_mediump_mat4x3',['../a00303.html#ga0effece4545acdebdc2a5512a303110e',1,'glm']]], ['aligned_5fmediump_5fmat4x4',['aligned_mediump_mat4x4',['../a00303.html#ga312864244cae4e8f10f478cffd0f76de',1,'glm']]], ['aligned_5fmediump_5fuvec1',['aligned_mediump_uvec1',['../a00303.html#gacb78126ea2eb779b41c7511128ff1283',1,'glm']]], ['aligned_5fmediump_5fuvec2',['aligned_mediump_uvec2',['../a00303.html#ga081d53e0a71443d0b68ea61c870f9adc',1,'glm']]], ['aligned_5fmediump_5fuvec3',['aligned_mediump_uvec3',['../a00303.html#gad6fc921bdde2bdbc7e09b028e1e9b379',1,'glm']]], ['aligned_5fmediump_5fuvec4',['aligned_mediump_uvec4',['../a00303.html#ga73ea0c1ba31580e107d21270883f51fc',1,'glm']]], ['aligned_5fmediump_5fvec1',['aligned_mediump_vec1',['../a00303.html#ga6b797eec76fa471e300158f3453b3b2e',1,'glm']]], ['aligned_5fmediump_5fvec2',['aligned_mediump_vec2',['../a00303.html#ga026a55ddbf2bafb1432f1157a2708616',1,'glm']]], ['aligned_5fmediump_5fvec3',['aligned_mediump_vec3',['../a00303.html#ga3a25e494173f6a64637b08a1b50a2132',1,'glm']]], ['aligned_5fmediump_5fvec4',['aligned_mediump_vec4',['../a00303.html#ga320d1c661cff2ef214eb50241f2928b2',1,'glm']]], ['aligned_5fuvec1',['aligned_uvec1',['../a00303.html#ga1ff8ed402c93d280ff0597c1c5e7c548',1,'glm']]], ['aligned_5fuvec2',['aligned_uvec2',['../a00303.html#ga074137e3be58528d67041c223d49f398',1,'glm']]], ['aligned_5fuvec3',['aligned_uvec3',['../a00303.html#ga2a8d9c3046f89d854eb758adfa0811c0',1,'glm']]], ['aligned_5fuvec4',['aligned_uvec4',['../a00303.html#gabf842c45eea186170c267a328e3f3b7d',1,'glm']]], ['aligned_5fvec1',['aligned_vec1',['../a00303.html#ga05e6d4c908965d04191c2070a8d0a65e',1,'glm']]], ['aligned_5fvec2',['aligned_vec2',['../a00303.html#ga0682462f8096a226773e20fac993cde5',1,'glm']]], ['aligned_5fvec3',['aligned_vec3',['../a00303.html#ga7cf643b66664e0cd3c48759ae66c2bd0',1,'glm']]], ['aligned_5fvec4',['aligned_vec4',['../a00303.html#ga85d89e83cb8137e1be1446de8c3b643a',1,'glm']]], ['all',['all',['../a00374.html#ga87e53f50b679f5f95c5cb4780311b3dd',1,'glm']]], ['angle',['angle',['../a00257.html#ga8aa248b31d5ade470c87304df5eb7bd8',1,'glm::angle(qua< T, Q > const &x)'],['../a00367.html#ga2e2917b4cb75ca3d043ac15ff88f14e1',1,'glm::angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['angleaxis',['angleAxis',['../a00257.html#ga5c0095cfcb218c75a4b79d7687950036',1,'glm']]], ['any',['any',['../a00374.html#ga911b3f8e41459dd551ccb6d385d91061',1,'glm']]], ['arecollinear',['areCollinear',['../a00368.html#ga13da4a787a2ff70e95d561fb19ff91b4',1,'glm']]], ['areorthogonal',['areOrthogonal',['../a00368.html#gac7b95b3f798e3c293262b2bdaad47c57',1,'glm']]], ['areorthonormal',['areOrthonormal',['../a00368.html#ga1b091c3d7f9ee3b0708311c001c293e3',1,'glm']]], ['asec',['asec',['../a00301.html#ga2c5b7f962c2c9ff684e6d2de48db1f10',1,'glm']]], ['asech',['asech',['../a00301.html#gaec7586dccfe431f850d006f3824b8ca6',1,'glm']]], ['asin',['asin',['../a00373.html#ga0552d2df4865fa8c3d7cfc3ec2caac73',1,'glm']]], ['asinh',['asinh',['../a00373.html#ga3ef16b501ee859fddde88e22192a5950',1,'glm']]], ['associated_5fmin_5fmax_2ehpp',['associated_min_max.hpp',['../a00007.html',1,'']]], ['associatedmax',['associatedMax',['../a00308.html#ga7d9c8785230c8db60f72ec8975f1ba45',1,'glm::associatedMax(T x, U a, T y, U b)'],['../a00308.html#ga5c6758bc50aa7fbe700f87123a045aad',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#ga0d169d6ce26b03248df175f39005d77f',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)'],['../a00308.html#ga4086269afabcb81dd7ded33cb3448653',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gaec891e363d91abbf3a4443cf2f652209',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c)'],['../a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)'],['../a00308.html#ga19f59d1141a51a3b2108a9807af78f7f',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)'],['../a00308.html#ga3038ffcb43eaa6af75897a99a5047ccc',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], ['associatedmin',['associatedMin',['../a00308.html#gacc01bd272359572fc28437ae214a02df',1,'glm::associatedMin(T x, U a, T y, U b)'],['../a00308.html#gac2f0dff90948f2e44386a5eafd941d1c',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#gacfec519c820331d023ef53a511749319',1,'glm::associatedMin(T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)'],['../a00308.html#ga4757c7cab2d809124a8525d0a9deeb37',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gad0aa8f86259a26d839d34a3577a923fc',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c)'],['../a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#ga432224ebe2085eaa2b63a077ecbbbff6',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#ga66b08118bc88f0494bcacb7cdb940556',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68',1,'glm::associatedMin(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#ga2db7e351994baee78540a562d4bb6d3b',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], ['atan',['atan',['../a00373.html#gac61629f3a4aa14057e7a8cae002291db',1,'glm::atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)'],['../a00373.html#ga5229f087eaccbc466f1c609ce3107b95',1,'glm::atan(vec< L, T, Q > const &y_over_x)']]], ['atan2',['atan2',['../a00315.html#gac63011205bf6d0be82589dc56dd26708',1,'glm::atan2(T x, T y)'],['../a00315.html#ga83bc41bd6f89113ee8006576b12bfc50',1,'glm::atan2(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y)'],['../a00315.html#gac39314f5087e7e51e592897cabbc1927',1,'glm::atan2(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y)'],['../a00315.html#gaba86c28da7bf5bdac64fecf7d56e8ff3',1,'glm::atan2(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y)']]], ['atanh',['atanh',['../a00373.html#gabc925650e618357d07da255531658b87',1,'glm']]], ['axis',['axis',['../a00257.html#ga764254f10248b505e936e5309a88c23d',1,'glm']]], ['axisangle',['axisAngle',['../a00337.html#gafefe32ce5a90a135287ba34fac3623bc',1,'glm']]], ['axisanglematrix',['axisAngleMatrix',['../a00337.html#ga3a788e2f5223397df5c426413ecc2f6b',1,'glm']]], ['angle_20and_20trigonometry_20functions',['Angle and Trigonometry Functions',['../a00373.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_1.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_1.js ================================================ var searchData= [ ['backeasein',['backEaseIn',['../a00318.html#ga93cddcdb6347a44d5927cc2bf2570816',1,'glm::backEaseIn(genType const &a)'],['../a00318.html#ga33777c9dd98f61d9472f96aafdf2bd36',1,'glm::backEaseIn(genType const &a, genType const &o)']]], ['backeaseinout',['backEaseInOut',['../a00318.html#gace6d24722a2f6722b56398206eb810bb',1,'glm::backEaseInOut(genType const &a)'],['../a00318.html#ga68a7b760f2afdfab298d5cd6d7611fb1',1,'glm::backEaseInOut(genType const &a, genType const &o)']]], ['backeaseout',['backEaseOut',['../a00318.html#gabf25069fa906413c858fd46903d520b9',1,'glm::backEaseOut(genType const &a)'],['../a00318.html#ga640c1ac6fe9d277a197da69daf60ee4f',1,'glm::backEaseOut(genType const &a, genType const &o)']]], ['ballrand',['ballRand',['../a00300.html#ga7c53b7797f3147af68a11c767679fa3f',1,'glm']]], ['bit_2ehpp',['bit.hpp',['../a00008.html',1,'']]], ['bitcount',['bitCount',['../a00370.html#ga44abfe3379e11cbd29425a843420d0d6',1,'glm::bitCount(genType v)'],['../a00370.html#gaac7b15e40bdea8d9aa4c4cb34049f7b5',1,'glm::bitCount(vec< L, T, Q > const &v)']]], ['bitfield_2ehpp',['bitfield.hpp',['../a00009.html',1,'']]], ['bitfielddeinterleave',['bitfieldDeinterleave',['../a00288.html#ga091d934233a2e121df91b8c7230357c8',1,'glm::bitfieldDeinterleave(glm::uint16 x)'],['../a00288.html#ga7d1cc24dfbcdd932c3a2abbb76235f98',1,'glm::bitfieldDeinterleave(glm::uint32 x)'],['../a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60',1,'glm::bitfieldDeinterleave(glm::uint64 x)']]], ['bitfieldextract',['bitfieldExtract',['../a00370.html#ga346b25ab11e793e91a4a69c8aa6819f2',1,'glm']]], ['bitfieldfillone',['bitfieldFillOne',['../a00288.html#ga46f9295abe3b5c7658f5b13c7f819f0a',1,'glm::bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1',1,'glm::bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], ['bitfieldfillzero',['bitfieldFillZero',['../a00288.html#ga697b86998b7d74ee0a69d8e9f8819fee',1,'glm::bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2',1,'glm::bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], ['bitfieldinsert',['bitfieldInsert',['../a00370.html#ga2e82992340d421fadb61a473df699b20',1,'glm']]], ['bitfieldinterleave',['bitfieldInterleave',['../a00288.html#ga24cad0069f9a0450abd80b3e89501adf',1,'glm::bitfieldInterleave(int8 x, int8 y)'],['../a00288.html#ga9a4976a529aec2cee56525e1165da484',1,'glm::bitfieldInterleave(uint8 x, uint8 y)'],['../a00288.html#ga4a76bbca39c40153f3203d0a1926e142',1,'glm::bitfieldInterleave(u8vec2 const &v)'],['../a00288.html#gac51c33a394593f0631fa3aa5bb778809',1,'glm::bitfieldInterleave(int16 x, int16 y)'],['../a00288.html#ga94f3646a5667f4be56f8dcf3310e963f',1,'glm::bitfieldInterleave(uint16 x, uint16 y)'],['../a00288.html#ga406c4ee56af4ca37a73f449f154eca3e',1,'glm::bitfieldInterleave(u16vec2 const &v)'],['../a00288.html#gaebb756a24a0784e3d6fba8bd011ab77a',1,'glm::bitfieldInterleave(int32 x, int32 y)'],['../a00288.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd',1,'glm::bitfieldInterleave(uint32 x, uint32 y)'],['../a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78',1,'glm::bitfieldInterleave(u32vec2 const &v)'],['../a00288.html#ga8fdb724dccd4a07d57efc01147102137',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z)'],['../a00288.html#ga9fc2a0dd5dcf8b00e113f272a5feca93',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z)'],['../a00288.html#gaa901c36a842fa5d126ea650549f17b24',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z)'],['../a00288.html#ga3afd6d38881fe3948c53d4214d2197fd',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z)'],['../a00288.html#gad2075d96a6640121edaa98ea534102ca',1,'glm::bitfieldInterleave(int32 x, int32 y, int32 z)'],['../a00288.html#gab19fbc739fc0cf7247978602c36f7da8',1,'glm::bitfieldInterleave(uint32 x, uint32 y, uint32 z)'],['../a00288.html#ga8a44ae22f5c953b296c42d067dccbe6d',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)'],['../a00288.html#ga14bb274d54a3c26f4919dd7ed0dd0c36',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)'],['../a00288.html#ga180a63161e1319fbd5a53c84d0429c7a',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)'],['../a00288.html#gafca8768671a14c8016facccb66a89f26',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)']]], ['bitfieldreverse',['bitfieldReverse',['../a00370.html#ga750a1d92464489b7711dee67aa3441b6',1,'glm']]], ['bitfieldrotateleft',['bitfieldRotateLeft',['../a00288.html#ga2eb49678a344ce1495bdb5586d9896b9',1,'glm::bitfieldRotateLeft(genIUType In, int Shift)'],['../a00288.html#gae186317091b1a39214ebf79008d44a1e',1,'glm::bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)']]], ['bitfieldrotateright',['bitfieldRotateRight',['../a00288.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca',1,'glm::bitfieldRotateRight(genIUType In, int Shift)'],['../a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88',1,'glm::bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)']]], ['bool1',['bool1',['../a00315.html#gaddcd7aa2e30e61af5b38660613d3979e',1,'glm']]], ['bool1x1',['bool1x1',['../a00315.html#ga7f895c936f0c29c8729afbbf22806090',1,'glm']]], ['bool2',['bool2',['../a00315.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9',1,'glm']]], ['bool2x2',['bool2x2',['../a00315.html#gadb3703955e513632f98ba12fe051ba3e',1,'glm']]], ['bool2x3',['bool2x3',['../a00315.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0',1,'glm']]], ['bool2x4',['bool2x4',['../a00315.html#ga4d7fa65be8e8e4ad6d920b45c44e471f',1,'glm']]], ['bool3',['bool3',['../a00315.html#ga99629f818737f342204071ef8296b2ed',1,'glm']]], ['bool3x2',['bool3x2',['../a00315.html#gac7d7311f7e0fa8b6163d96dab033a755',1,'glm']]], ['bool3x3',['bool3x3',['../a00315.html#ga6c97b99aac3e302053ffb58aace9033c',1,'glm']]], ['bool3x4',['bool3x4',['../a00315.html#gae7d6b679463d37d6c527d478fb470fdf',1,'glm']]], ['bool4',['bool4',['../a00315.html#ga13c3200b82708f73faac6d7f09ec91a3',1,'glm']]], ['bool4x2',['bool4x2',['../a00315.html#ga9ed830f52408b2f83c085063a3eaf1d0',1,'glm']]], ['bool4x3',['bool4x3',['../a00315.html#gad0f5dc7f22c2065b1b06d57f1c0658fe',1,'glm']]], ['bool4x4',['bool4x4',['../a00315.html#ga7d2a7d13986602ae2896bfaa394235d4',1,'glm']]], ['bounceeasein',['bounceEaseIn',['../a00318.html#gaac30767f2e430b0c3fc859a4d59c7b5b',1,'glm']]], ['bounceeaseinout',['bounceEaseInOut',['../a00318.html#gadf9f38eff1e5f4c2fa5b629a25ae413e',1,'glm']]], ['bounceeaseout',['bounceEaseOut',['../a00318.html#ga94007005ff0dcfa0749ebfa2aec540b2',1,'glm']]], ['bvec1',['bvec1',['../a00265.html#ga067af382616d93f8e850baae5154cdcc',1,'glm']]], ['bvec2',['bvec2',['../a00281.html#ga0b6123e03653cc1bbe366fc55238a934',1,'glm']]], ['bvec3',['bvec3',['../a00281.html#ga197151b72dfaf289daf98b361760ffe7',1,'glm']]], ['bvec4',['bvec4',['../a00281.html#ga9f7b9712373ff4342d9114619b55f5e3',1,'glm']]], ['byte',['byte',['../a00354.html#ga3005cb0d839d546c616becfa6602c607',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_10.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_10.js ================================================ var searchData= [ ['stable_20extensions',['Stable extensions',['../a00285.html',1,'']]], ['saturate',['saturate',['../a00315.html#ga0fd09e616d122bc2ed9726682ffd44b7',1,'glm::saturate(T x)'],['../a00315.html#gaee97b8001c794a78a44f5d59f62a8aba',1,'glm::saturate(const vec< 2, T, Q > &x)'],['../a00315.html#ga39bfe3a421286ee31680d45c31ccc161',1,'glm::saturate(const vec< 3, T, Q > &x)'],['../a00315.html#ga356f8c3a7e7d6376d3d4b0a026407183',1,'glm::saturate(const vec< 4, T, Q > &x)']]], ['saturation',['saturation',['../a00312.html#ga01a97152b44e1550edcac60bd849e884',1,'glm::saturation(T const s)'],['../a00312.html#ga2156cea600e90148ece5bc96fd6db43a',1,'glm::saturation(T const s, vec< 3, T, Q > const &color)'],['../a00312.html#gaba0eacee0736dae860e9371cc1ae4785',1,'glm::saturation(T const s, vec< 4, T, Q > const &color)']]], ['scalar_5fcommon_2ehpp',['scalar_common.hpp',['../a00144.html',1,'']]], ['scalar_5fconstants_2ehpp',['scalar_constants.hpp',['../a00145.html',1,'']]], ['scalar_5fint_5fsized_2ehpp',['scalar_int_sized.hpp',['../a00146.html',1,'']]], ['scalar_5finteger_2ehpp',['scalar_integer.hpp',['../a00147.html',1,'']]], ['scalar_5fmultiplication_2ehpp',['scalar_multiplication.hpp',['../a00148.html',1,'']]], ['scalar_5fuint_5fsized_2ehpp',['scalar_uint_sized.hpp',['../a00151.html',1,'']]], ['scalar_5fulp_2ehpp',['scalar_ulp.hpp',['../a00152.html',1,'']]], ['scale',['scale',['../a00247.html#ga05051adbee603fb3c5095d8cf5cc229b',1,'glm::scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gadb47d2ad2bd984b213e8ff7d9cd8154e',1,'glm::scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#gafbeefee8fec884d566e4ada0049174d7',1,'glm::scale(vec< 3, T, Q > const &v)']]], ['scalebias',['scaleBias',['../a00363.html#gabf249498b236e62c983d90d30d63c99c',1,'glm::scaleBias(T scale, T bias)'],['../a00363.html#gae2bdd91a76759fecfbaef97e3020aa8e',1,'glm::scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)']]], ['sec',['sec',['../a00301.html#gae4bcbebee670c5ea155f0777b3acbd84',1,'glm']]], ['sech',['sech',['../a00301.html#ga9a5cfd1e7170104a7b33863b1b75e5ae',1,'glm']]], ['shearx',['shearX',['../a00341.html#ga2a118ece5db1e2022112b954846012af',1,'glm']]], ['shearx2d',['shearX2D',['../a00363.html#gabf714b8a358181572b32a45555f71948',1,'glm']]], ['shearx3d',['shearX3D',['../a00363.html#ga73e867c6cd4d700fe2054437e56106c4',1,'glm']]], ['sheary',['shearY',['../a00341.html#ga717f1833369c1ac4a40e4ac015af885e',1,'glm']]], ['sheary2d',['shearY2D',['../a00363.html#gac7998d0763d9181550c77e8af09a182c',1,'glm']]], ['sheary3d',['shearY3D',['../a00363.html#gade5bb65ffcb513973db1a1314fb5cfac',1,'glm']]], ['shearz3d',['shearZ3D',['../a00363.html#ga6591e0a3a9d2c9c0b6577bb4dace0255',1,'glm']]], ['shortmix',['shortMix',['../a00352.html#gadc576cc957adc2a568cdcbc3799175bc',1,'glm']]], ['sign',['sign',['../a00241.html#ga1e2e5cfff800056540e32f6c9b604b28',1,'glm::sign(vec< L, T, Q > const &x)'],['../a00333.html#ga04ef803a24f3d4f8c67dbccb33b0fce0',1,'glm::sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)']]], ['simplex',['simplex',['../a00297.html#ga8122468c69015ff397349a7dcc638b27',1,'glm']]], ['sin',['sin',['../a00373.html#ga29747fd108cb7292ae5a284f69691a69',1,'glm']]], ['sineeasein',['sineEaseIn',['../a00318.html#gafb338ac6f6b2bcafee50e3dca5201dbf',1,'glm']]], ['sineeaseinout',['sineEaseInOut',['../a00318.html#gaa46e3d5fbf7a15caa28eff9ef192d7c7',1,'glm']]], ['sineeaseout',['sineEaseOut',['../a00318.html#gab3e454f883afc1606ef91363881bf5a3',1,'glm']]], ['sinh',['sinh',['../a00373.html#gac7c39ff21809e281552b4dbe46f4a39d',1,'glm']]], ['sint',['sint',['../a00330.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], ['size1',['size1',['../a00359.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], ['size1_5ft',['size1_t',['../a00359.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], ['size2',['size2',['../a00359.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], ['size2_5ft',['size2_t',['../a00359.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], ['size3',['size3',['../a00359.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], ['size3_5ft',['size3_t',['../a00359.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], ['size4',['size4',['../a00359.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], ['size4_5ft',['size4_t',['../a00359.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]], ['slerp',['slerp',['../a00248.html#gae7fc3c945be366b9942b842f55da428a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00356.html#ga8b11b18ce824174ea1a5a69ea14e2cee',1,'glm::slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)']]], ['smoothstep',['smoothstep',['../a00241.html#ga562edf7eca082cc5b7a0aaf180436daf',1,'glm']]], ['sphericalrand',['sphericalRand',['../a00300.html#ga22f90fcaccdf001c516ca90f6428e138',1,'glm']]], ['spline_2ehpp',['spline.hpp',['../a00154.html',1,'']]], ['sqrt',['sqrt',['../a00242.html#gaa83e5f1648b7ccdf33b87c07c76cb77c',1,'glm::sqrt(vec< L, T, Q > const &v)'],['../a00256.html#ga64b7b255ed7bcba616fe6b44470b022e',1,'glm::sqrt(qua< T, Q > const &q)'],['../a00330.html#ga7ce36693a75879ccd9bb10167cfa722d',1,'glm::sqrt(int x)'],['../a00330.html#ga1975d318978d6dacf78b6444fa5ed7bc',1,'glm::sqrt(uint x)']]], ['squad',['squad',['../a00352.html#ga0b9bf3459e132ad8a18fe970669e3e35',1,'glm']]], ['std_5fbased_5ftype_2ehpp',['std_based_type.hpp',['../a00155.html',1,'']]], ['step',['step',['../a00241.html#ga015a1261ff23e12650211aa872863cce',1,'glm::step(genType edge, genType x)'],['../a00241.html#ga8f9a911a48ef244b51654eaefc81c551',1,'glm::step(T edge, vec< L, T, Q > const &x)'],['../a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f',1,'glm::step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)']]], ['string_5fcast_2ehpp',['string_cast.hpp',['../a00156.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_11.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_11.js ================================================ var searchData= [ ['tan',['tan',['../a00373.html#ga293a34cfb9f0115cc606b4a97c84f11f',1,'glm']]], ['tanh',['tanh',['../a00373.html#gaa1bccbfdcbe40ed2ffcddc2aa8bfd0f1',1,'glm']]], ['texture_2ehpp',['texture.hpp',['../a00157.html',1,'']]], ['third',['third',['../a00290.html#ga3077c6311010a214b69ddc8214ec13b5',1,'glm']]], ['three_5fover_5ftwo_5fpi',['three_over_two_pi',['../a00290.html#gae94950df74b0ce382b1fc1d978ef7394',1,'glm']]], ['to_5fstring',['to_string',['../a00360.html#ga8f0dced1fd45e67e2d77e80ab93c7af5',1,'glm']]], ['tomat3',['toMat3',['../a00352.html#gaab0afabb894b28a983fb8ec610409d56',1,'glm']]], ['tomat4',['toMat4',['../a00352.html#gadfa2c77094e8cc9adad321d938855ffb',1,'glm']]], ['toquat',['toQuat',['../a00352.html#ga798de5d186499c9a9231cd92c8afaef1',1,'glm::toQuat(mat< 3, 3, T, Q > const &x)'],['../a00352.html#ga5eb36f51e1638e710451eba194dbc011',1,'glm::toQuat(mat< 4, 4, T, Q > const &x)']]], ['transform_2ehpp',['transform.hpp',['../a00158.html',1,'']]], ['transform2_2ehpp',['transform2.hpp',['../a00159.html',1,'']]], ['translate',['translate',['../a00247.html#ga1a4ecc4ad82652b8fb14dcb087879284',1,'glm::translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gaf4573ae47c80938aa9053ef6a33755ab',1,'glm::translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#ga309a30e652e58c396e2c3d4db3ee7658',1,'glm::translate(vec< 3, T, Q > const &v)']]], ['transpose',['transpose',['../a00371.html#gae679d841da8ce9dbcc6c2d454f15bc35',1,'glm']]], ['trianglenormal',['triangleNormal',['../a00344.html#gaff1cb5496925dfa7962df457772a7f35',1,'glm']]], ['trigonometric_2ehpp',['trigonometric.hpp',['../a00160.html',1,'']]], ['trunc',['trunc',['../a00241.html#gaf9375e3e06173271d49e6ffa3a334259',1,'glm']]], ['tweakedinfiniteperspective',['tweakedInfinitePerspective',['../a00243.html#gaaeacc04a2a6f4b18c5899d37e7bb3ef9',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near)'],['../a00243.html#gaf5b3c85ff6737030a1d2214474ffa7a8',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)']]], ['two_5fover_5fpi',['two_over_pi',['../a00290.html#ga74eadc8a211253079683219a3ea0462a',1,'glm']]], ['two_5fover_5froot_5fpi',['two_over_root_pi',['../a00290.html#ga5827301817640843cf02026a8d493894',1,'glm']]], ['two_5fpi',['two_pi',['../a00290.html#gaa5276a4617566abcfe49286f40e3a256',1,'glm']]], ['two_5fthirds',['two_thirds',['../a00290.html#ga9b4d2f4322edcf63a6737b92a29dd1f5',1,'glm']]], ['type_5fmat2x2_2ehpp',['type_mat2x2.hpp',['../a00165.html',1,'']]], ['type_5fmat2x3_2ehpp',['type_mat2x3.hpp',['../a00166.html',1,'']]], ['type_5fmat2x4_2ehpp',['type_mat2x4.hpp',['../a00167.html',1,'']]], ['type_5fmat3x2_2ehpp',['type_mat3x2.hpp',['../a00168.html',1,'']]], ['type_5fmat3x3_2ehpp',['type_mat3x3.hpp',['../a00169.html',1,'']]], ['type_5fmat3x4_2ehpp',['type_mat3x4.hpp',['../a00170.html',1,'']]], ['type_5fmat4x2_2ehpp',['type_mat4x2.hpp',['../a00171.html',1,'']]], ['type_5fmat4x3_2ehpp',['type_mat4x3.hpp',['../a00172.html',1,'']]], ['type_5fmat4x4_2ehpp',['type_mat4x4.hpp',['../a00173.html',1,'']]], ['type_5fprecision_2ehpp',['type_precision.hpp',['../a00174.html',1,'']]], ['type_5fptr_2ehpp',['type_ptr.hpp',['../a00175.html',1,'']]], ['type_5fquat_2ehpp',['type_quat.hpp',['../a00176.html',1,'']]], ['type_5ftrait_2ehpp',['type_trait.hpp',['../a00177.html',1,'']]], ['type_5fvec1_2ehpp',['type_vec1.hpp',['../a00178.html',1,'']]], ['type_5fvec2_2ehpp',['type_vec2.hpp',['../a00179.html',1,'']]], ['type_5fvec3_2ehpp',['type_vec3.hpp',['../a00180.html',1,'']]], ['type_5fvec4_2ehpp',['type_vec4.hpp',['../a00181.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_12.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_12.js ================================================ var searchData= [ ['u16',['u16',['../a00304.html#gaa2d7acc0adb536fab71fe261232a40ff',1,'glm']]], ['u16vec1',['u16vec1',['../a00304.html#ga08c05ba8ffb19f5d14ab584e1e9e9ee5',1,'glm::u16vec1()'],['../a00346.html#ga52cc069a92e126c3a8dcde93424d2ef0',1,'glm::gtx::u16vec1()']]], ['u16vec2',['u16vec2',['../a00304.html#ga2a78447eb9d66a114b193f4a25899c16',1,'glm']]], ['u16vec3',['u16vec3',['../a00304.html#ga1c522ca821c27b862fe51cf4024b064b',1,'glm']]], ['u16vec4',['u16vec4',['../a00304.html#ga529496d75775fb656a07993ea9af2450',1,'glm']]], ['u32',['u32',['../a00304.html#ga8165913e068444f7842302d40ba897b9',1,'glm']]], ['u32vec1',['u32vec1',['../a00304.html#gae627372cfd5f20dd87db490387b71195',1,'glm::u32vec1()'],['../a00346.html#ga9bbc1e14aea65cba5e2dcfef6a67d9f3',1,'glm::gtx::u32vec1()']]], ['u32vec2',['u32vec2',['../a00304.html#ga2a266e46ee218d0c680f12b35c500cc0',1,'glm']]], ['u32vec3',['u32vec3',['../a00304.html#gae267358ff2a41d156d97f5762630235a',1,'glm']]], ['u32vec4',['u32vec4',['../a00304.html#ga31cef34e4cd04840c54741ff2f7005f0',1,'glm']]], ['u64',['u64',['../a00304.html#gaf3f312156984c365e9f65620354da70b',1,'glm']]], ['u64vec1',['u64vec1',['../a00304.html#gaf09f3ca4b671a4a4f84505eb4cc865fd',1,'glm::u64vec1()'],['../a00346.html#ga818de170e2584ab037130f2881925974',1,'glm::gtx::u64vec1()']]], ['u64vec2',['u64vec2',['../a00304.html#gaef3824ed4fe435a019c5b9dddf53fec5',1,'glm']]], ['u64vec3',['u64vec3',['../a00304.html#ga489b89ba93d4f7b3934df78debc52276',1,'glm']]], ['u64vec4',['u64vec4',['../a00304.html#ga3945dd6515d4498cb603e65ff867ab03',1,'glm']]], ['u8',['u8',['../a00304.html#gaecc7082561fc9028b844b6cf3d305d36',1,'glm']]], ['u8vec1',['u8vec1',['../a00304.html#ga29b349e037f0b24320b4548a143daee2',1,'glm::u8vec1()'],['../a00346.html#ga5853fe457f4c8a6bc09343d0e9833980',1,'glm::gtx::u8vec1()']]], ['u8vec2',['u8vec2',['../a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611',1,'glm']]], ['u8vec3',['u8vec3',['../a00304.html#ga7c5706f6bbe5282e5598acf7e7b377e2',1,'glm']]], ['u8vec4',['u8vec4',['../a00304.html#ga20779a61de2fd526a17f12fe53ec46b1',1,'glm']]], ['uaddcarry',['uaddCarry',['../a00370.html#gaedcec48743632dff6786bcc492074b1b',1,'glm']]], ['uint16',['uint16',['../a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e',1,'glm']]], ['uint16_5ft',['uint16_t',['../a00304.html#ga91f91f411080c37730856ff5887f5bcf',1,'glm']]], ['uint32',['uint32',['../a00263.html#ga1134b580f8da4de94ca6b1de4d37975e',1,'glm']]], ['uint32_5ft',['uint32_t',['../a00304.html#ga2171d9dc1fefb1c82e2817f45b622eac',1,'glm']]], ['uint64',['uint64',['../a00263.html#gab630f76c26b50298187f7889104d4b9c',1,'glm']]], ['uint64_5ft',['uint64_t',['../a00304.html#ga3999d3e7ff22025c16ddb601e14dfdee',1,'glm']]], ['uint8',['uint8',['../a00263.html#gadde6aaee8457bee49c2a92621fe22b79',1,'glm']]], ['uint8_5ft',['uint8_t',['../a00304.html#ga28d97808322d3c92186e4a0c067d7e8e',1,'glm']]], ['uintbitstofloat',['uintBitsToFloat',['../a00241.html#gab2bae0d15dcdca6093f88f76b3975d97',1,'glm::uintBitsToFloat(uint const &v)'],['../a00241.html#ga97f46b5f7b42fe44482e13356eb394ae',1,'glm::uintBitsToFloat(vec< L, uint, Q > const &v)']]], ['ulp_2ehpp',['ulp.hpp',['../a00182.html',1,'']]], ['umat2',['umat2',['../a00294.html#ga4cae85566f900debf930c41944b64691',1,'glm']]], ['umat2x2',['umat2x2',['../a00294.html#gabf8acdd33ce8951051edbca5200898aa',1,'glm']]], ['umat2x3',['umat2x3',['../a00294.html#ga1870da7578d5022b973a83155d386ab3',1,'glm']]], ['umat2x4',['umat2x4',['../a00294.html#ga57936a3998e992370e59a223e0ee4fd4',1,'glm']]], ['umat3',['umat3',['../a00294.html#ga5085e3ff02abbac5e537eb7b89ab63b6',1,'glm']]], ['umat3x2',['umat3x2',['../a00294.html#ga9cd7fa637a4a6788337f45231fad9e1a',1,'glm']]], ['umat3x3',['umat3x3',['../a00294.html#ga1f2cfcf3357db0cdf31fcb15e3c6bafb',1,'glm']]], ['umat3x4',['umat3x4',['../a00294.html#gae7c78ff3fc4309605ab0fa186c8d48ba',1,'glm']]], ['umat4',['umat4',['../a00294.html#ga38bc7bb6494e344185df596deeb4544c',1,'glm']]], ['umat4x2',['umat4x2',['../a00294.html#ga70fa2d05896aa83cbc8c07672a429b53',1,'glm']]], ['umat4x3',['umat4x3',['../a00294.html#ga87581417945411f75cb31dd6ca1dba98',1,'glm']]], ['umat4x4',['umat4x4',['../a00294.html#gaf72e6d399c42985db6872c50f53d7eb8',1,'glm']]], ['umulextended',['umulExtended',['../a00370.html#ga732e2fb56db57ea541c7e5c92b7121be',1,'glm']]], ['unpackdouble2x32',['unpackDouble2x32',['../a00372.html#ga5f4296dc5f12f0aa67ac05b8bb322483',1,'glm']]], ['unpackf2x11_5f1x10',['unpackF2x11_1x10',['../a00298.html#ga2b1fd1e854705b1345e98409e0a25e50',1,'glm']]], ['unpackf3x9_5fe1x5',['unpackF3x9_E1x5',['../a00298.html#gab9e60ebe3ad3eeced6a9ec6eb876d74e',1,'glm']]], ['unpackhalf',['unpackHalf',['../a00298.html#ga30d6b2f1806315bcd6047131f547d33b',1,'glm']]], ['unpackhalf1x16',['unpackHalf1x16',['../a00298.html#gac37dedaba24b00adb4ec6e8f92c19dbf',1,'glm']]], ['unpackhalf2x16',['unpackHalf2x16',['../a00372.html#gaf59b52e6b28da9335322c4ae19b5d745',1,'glm']]], ['unpackhalf4x16',['unpackHalf4x16',['../a00298.html#ga57dfc41b2eb20b0ac00efae7d9c49dcd',1,'glm']]], ['unpacki3x10_5f1x2',['unpackI3x10_1x2',['../a00298.html#ga9a05330e5490be0908d3b117d82aff56',1,'glm']]], ['unpackint2x16',['unpackInt2x16',['../a00298.html#gaccde055882918a3175de82f4ca8b7d8e',1,'glm']]], ['unpackint2x32',['unpackInt2x32',['../a00298.html#gab297c0bfd38433524791eb0584d8f08d',1,'glm']]], ['unpackint2x8',['unpackInt2x8',['../a00298.html#gab0c59f1e259fca9e68adb2207a6b665e',1,'glm']]], ['unpackint4x16',['unpackInt4x16',['../a00298.html#ga52c154a9b232b62c22517a700cc0c78c',1,'glm']]], ['unpackint4x8',['unpackInt4x8',['../a00298.html#ga1cd8d2038cdd33a860801aa155a26221',1,'glm']]], ['unpackrgbm',['unpackRGBM',['../a00298.html#ga5c1ec97894b05ea21a05aea4f0204a02',1,'glm']]], ['unpacksnorm',['unpackSnorm',['../a00298.html#ga6d49b31e5c3f9df8e1f99ab62b999482',1,'glm']]], ['unpacksnorm1x16',['unpackSnorm1x16',['../a00298.html#ga96dd15002370627a443c835ab03a766c',1,'glm']]], ['unpacksnorm1x8',['unpackSnorm1x8',['../a00298.html#ga4851ff86678aa1c7ace9d67846894285',1,'glm']]], ['unpacksnorm2x16',['unpackSnorm2x16',['../a00372.html#gacd8f8971a3fe28418be0d0fa1f786b38',1,'glm']]], ['unpacksnorm2x8',['unpackSnorm2x8',['../a00298.html#ga8b128e89be449fc71336968a66bf6e1a',1,'glm']]], ['unpacksnorm3x10_5f1x2',['unpackSnorm3x10_1x2',['../a00298.html#ga7a4fbf79be9740e3c57737bc2af05e5b',1,'glm']]], ['unpacksnorm4x16',['unpackSnorm4x16',['../a00298.html#gaaddf9c353528fe896106f7181219c7f4',1,'glm']]], ['unpacksnorm4x8',['unpackSnorm4x8',['../a00372.html#ga2db488646d48b7c43d3218954523fe82',1,'glm']]], ['unpacku3x10_5f1x2',['unpackU3x10_1x2',['../a00298.html#ga48df3042a7d079767f5891a1bfd8a60a',1,'glm']]], ['unpackuint2x16',['unpackUint2x16',['../a00298.html#ga035bbbeab7ec2b28c0529757395b645b',1,'glm']]], ['unpackuint2x32',['unpackUint2x32',['../a00298.html#gaf942ff11b65e83eb5f77e68329ebc6ab',1,'glm']]], ['unpackuint2x8',['unpackUint2x8',['../a00298.html#gaa7600a6c71784b637a410869d2a5adcd',1,'glm']]], ['unpackuint4x16',['unpackUint4x16',['../a00298.html#gab173834ef14cfc23a96a959f3ff4b8dc',1,'glm']]], ['unpackuint4x8',['unpackUint4x8',['../a00298.html#gaf6dc0e4341810a641c7ed08f10e335d1',1,'glm']]], ['unpackunorm',['unpackUnorm',['../a00298.html#ga3e6ac9178b59f0b1b2f7599f2183eb7f',1,'glm']]], ['unpackunorm1x16',['unpackUnorm1x16',['../a00298.html#ga83d34160a5cb7bcb5339823210fc7501',1,'glm']]], ['unpackunorm1x5_5f1x6_5f1x5',['unpackUnorm1x5_1x6_1x5',['../a00298.html#gab3bc08ecfc0f3339be93fb2b3b56d88a',1,'glm']]], ['unpackunorm1x8',['unpackUnorm1x8',['../a00298.html#ga1319207e30874fb4931a9ee913983ee1',1,'glm']]], ['unpackunorm2x16',['unpackUnorm2x16',['../a00372.html#ga1f66188e5d65afeb9ffba1ad971e4007',1,'glm']]], ['unpackunorm2x3_5f1x2',['unpackUnorm2x3_1x2',['../a00298.html#ga6abd5a9014df3b5ce4059008d2491260',1,'glm']]], ['unpackunorm2x4',['unpackUnorm2x4',['../a00298.html#ga2e50476132fe5f27f08e273d9c70d85b',1,'glm']]], ['unpackunorm2x8',['unpackUnorm2x8',['../a00298.html#ga637cbe3913dd95c6e7b4c99c61bd611f',1,'glm']]], ['unpackunorm3x10_5f1x2',['unpackUnorm3x10_1x2',['../a00298.html#ga5156d3060355fe332865da2c7f78815f',1,'glm']]], ['unpackunorm3x5_5f1x1',['unpackUnorm3x5_1x1',['../a00298.html#ga5ff95ff5bc16f396432ab67243dbae4d',1,'glm']]], ['unpackunorm4x16',['unpackUnorm4x16',['../a00298.html#ga2ae149c5d2473ac1e5f347bb654a242d',1,'glm']]], ['unpackunorm4x4',['unpackUnorm4x4',['../a00298.html#gac58ee89d0e224bb6df5e8bbb18843a2d',1,'glm']]], ['unpackunorm4x8',['unpackUnorm4x8',['../a00372.html#ga7f903259150b67e9466f5f8edffcd197',1,'glm']]], ['unproject',['unProject',['../a00245.html#ga36641e5d60f994e01c3d8f56b10263d2',1,'glm']]], ['unprojectno',['unProjectNO',['../a00245.html#gae089ba9fc150ff69c252a20e508857b5',1,'glm']]], ['unprojectzo',['unProjectZO',['../a00245.html#gade5136413ce530f8e606124d570fba32',1,'glm']]], ['uround',['uround',['../a00292.html#ga6715b9d573972a0f7763d30d45bcaec4',1,'glm']]], ['usubborrow',['usubBorrow',['../a00370.html#gae3316ba1229ad9b9f09480833321b053',1,'glm']]], ['uvec1',['uvec1',['../a00276.html#gac3bdd96183d23876c58a1424585fefe7',1,'glm']]], ['uvec2',['uvec2',['../a00281.html#ga2f6d9ec3ae14813ade37d6aee3715fdb',1,'glm']]], ['uvec3',['uvec3',['../a00281.html#ga3d3e55874babd4bf93baa7bbc83ae418',1,'glm']]], ['uvec4',['uvec4',['../a00281.html#gaa57e96bb337867329d5f43bcc27c1095',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_13.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_13.js ================================================ var searchData= [ ['vector_20relational_20functions',['Vector Relational Functions',['../a00374.html',1,'']]], ['vector_20types',['Vector types',['../a00281.html',1,'']]], ['vector_20types_20with_20precision_20qualifiers',['Vector types with precision qualifiers',['../a00282.html',1,'']]], ['value_5fptr',['value_ptr',['../a00305.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]], ['vec1',['vec1',['../a00270.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], ['vec1_2ehpp',['vec1.hpp',['../a00183.html',1,'']]], ['vec2',['vec2',['../a00281.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], ['vec2_2ehpp',['vec2.hpp',['../a00184.html',1,'']]], ['vec3',['vec3',['../a00281.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], ['vec3_2ehpp',['vec3.hpp',['../a00185.html',1,'']]], ['vec4',['vec4',['../a00281.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]], ['vec4_2ehpp',['vec4.hpp',['../a00186.html',1,'']]], ['vec_5fswizzle_2ehpp',['vec_swizzle.hpp',['../a00187.html',1,'']]], ['vector_5fangle_2ehpp',['vector_angle.hpp',['../a00188.html',1,'']]], ['vector_5fbool1_2ehpp',['vector_bool1.hpp',['../a00189.html',1,'']]], ['vector_5fbool1_5fprecision_2ehpp',['vector_bool1_precision.hpp',['../a00190.html',1,'']]], ['vector_5fbool2_2ehpp',['vector_bool2.hpp',['../a00191.html',1,'']]], ['vector_5fbool2_5fprecision_2ehpp',['vector_bool2_precision.hpp',['../a00192.html',1,'']]], ['vector_5fbool3_2ehpp',['vector_bool3.hpp',['../a00193.html',1,'']]], ['vector_5fbool3_5fprecision_2ehpp',['vector_bool3_precision.hpp',['../a00194.html',1,'']]], ['vector_5fbool4_2ehpp',['vector_bool4.hpp',['../a00195.html',1,'']]], ['vector_5fbool4_5fprecision_2ehpp',['vector_bool4_precision.hpp',['../a00196.html',1,'']]], ['vector_5fcommon_2ehpp',['vector_common.hpp',['../a00197.html',1,'']]], ['vector_5fdouble1_2ehpp',['vector_double1.hpp',['../a00198.html',1,'']]], ['vector_5fdouble1_5fprecision_2ehpp',['vector_double1_precision.hpp',['../a00199.html',1,'']]], ['vector_5fdouble2_2ehpp',['vector_double2.hpp',['../a00200.html',1,'']]], ['vector_5fdouble2_5fprecision_2ehpp',['vector_double2_precision.hpp',['../a00201.html',1,'']]], ['vector_5fdouble3_2ehpp',['vector_double3.hpp',['../a00202.html',1,'']]], ['vector_5fdouble3_5fprecision_2ehpp',['vector_double3_precision.hpp',['../a00203.html',1,'']]], ['vector_5fdouble4_2ehpp',['vector_double4.hpp',['../a00204.html',1,'']]], ['vector_5fdouble4_5fprecision_2ehpp',['vector_double4_precision.hpp',['../a00205.html',1,'']]], ['vector_5ffloat1_2ehpp',['vector_float1.hpp',['../a00206.html',1,'']]], ['vector_5ffloat1_5fprecision_2ehpp',['vector_float1_precision.hpp',['../a00207.html',1,'']]], ['vector_5ffloat2_2ehpp',['vector_float2.hpp',['../a00208.html',1,'']]], ['vector_5ffloat2_5fprecision_2ehpp',['vector_float2_precision.hpp',['../a00209.html',1,'']]], ['vector_5ffloat3_2ehpp',['vector_float3.hpp',['../a00210.html',1,'']]], ['vector_5ffloat3_5fprecision_2ehpp',['vector_float3_precision.hpp',['../a00211.html',1,'']]], ['vector_5ffloat4_2ehpp',['vector_float4.hpp',['../a00212.html',1,'']]], ['vector_5ffloat4_5fprecision_2ehpp',['vector_float4_precision.hpp',['../a00213.html',1,'']]], ['vector_5fint1_2ehpp',['vector_int1.hpp',['../a00214.html',1,'']]], ['vector_5fint1_5fprecision_2ehpp',['vector_int1_precision.hpp',['../a00215.html',1,'']]], ['vector_5fint2_2ehpp',['vector_int2.hpp',['../a00216.html',1,'']]], ['vector_5fint2_5fprecision_2ehpp',['vector_int2_precision.hpp',['../a00217.html',1,'']]], ['vector_5fint3_2ehpp',['vector_int3.hpp',['../a00218.html',1,'']]], ['vector_5fint3_5fprecision_2ehpp',['vector_int3_precision.hpp',['../a00219.html',1,'']]], ['vector_5fint4_2ehpp',['vector_int4.hpp',['../a00220.html',1,'']]], ['vector_5fint4_5fprecision_2ehpp',['vector_int4_precision.hpp',['../a00221.html',1,'']]], ['vector_5finteger_2ehpp',['vector_integer.hpp',['../a00222.html',1,'']]], ['vector_5fquery_2ehpp',['vector_query.hpp',['../a00223.html',1,'']]], ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00225.html',1,'']]], ['vector_5fuint1_2ehpp',['vector_uint1.hpp',['../a00226.html',1,'']]], ['vector_5fuint1_5fprecision_2ehpp',['vector_uint1_precision.hpp',['../a00227.html',1,'']]], ['vector_5fuint2_2ehpp',['vector_uint2.hpp',['../a00228.html',1,'']]], ['vector_5fuint2_5fprecision_2ehpp',['vector_uint2_precision.hpp',['../a00229.html',1,'']]], ['vector_5fuint3_2ehpp',['vector_uint3.hpp',['../a00230.html',1,'']]], ['vector_5fuint3_5fprecision_2ehpp',['vector_uint3_precision.hpp',['../a00231.html',1,'']]], ['vector_5fuint4_2ehpp',['vector_uint4.hpp',['../a00232.html',1,'']]], ['vector_5fuint4_5fprecision_2ehpp',['vector_uint4_precision.hpp',['../a00233.html',1,'']]], ['vector_5fulp_2ehpp',['vector_ulp.hpp',['../a00234.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_14.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_14.js ================================================ var searchData= [ ['word',['word',['../a00354.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]], ['wrap_2ehpp',['wrap.hpp',['../a00235.html',1,'']]], ['wrapangle',['wrapAngle',['../a00325.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_15.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_15.js ================================================ var searchData= [ ['yaw',['yaw',['../a00299.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], ['yawpitchroll',['yawPitchRoll',['../a00319.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], ['ycocg2rgb',['YCoCg2rgb',['../a00313.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], ['ycocgr2rgb',['YCoCgR2rgb',['../a00313.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_16.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_16.js ================================================ var searchData= [ ['zero',['zero',['../a00290.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_2.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_2.js ================================================ var searchData= [ ['catmullrom',['catmullRom',['../a00358.html#ga8119c04f8210fd0d292757565cd6918d',1,'glm']]], ['ceil',['ceil',['../a00241.html#gafb9d2a645a23aca12d4d6de0104b7657',1,'glm']]], ['ceilmultiple',['ceilMultiple',['../a00302.html#ga1d89ac88582aaf4d5dfa5feb4a376fd4',1,'glm::ceilMultiple(genType v, genType Multiple)'],['../a00302.html#gab77fdcc13f8e92d2e0b1b7d7aeab8e9d',1,'glm::ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['ceilpoweroftwo',['ceilPowerOfTwo',['../a00302.html#ga5c3ef36ae32aa4271f1544f92bd578b6',1,'glm::ceilPowerOfTwo(genIUType v)'],['../a00302.html#gab53d4a97c0d3e297be5f693cdfdfe5d2',1,'glm::ceilPowerOfTwo(vec< L, T, Q > const &v)']]], ['circulareasein',['circularEaseIn',['../a00318.html#ga34508d4b204a321ec26d6086aa047997',1,'glm']]], ['circulareaseinout',['circularEaseInOut',['../a00318.html#ga0c1027637a5b02d4bb3612aa12599d69',1,'glm']]], ['circulareaseout',['circularEaseOut',['../a00318.html#ga26fefde9ced9b72745fe21f1a3fe8da7',1,'glm']]], ['circularrand',['circularRand',['../a00300.html#ga9dd05c36025088fae25b97c869e88517',1,'glm']]], ['clamp',['clamp',['../a00241.html#ga7cd77683da6361e297c56443fc70806d',1,'glm::clamp(genType x, genType minVal, genType maxVal)'],['../a00241.html#gafba2e0674deb5953878d89483cd6323d',1,'glm::clamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d',1,'glm::clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)'],['../a00369.html#ga6c0cc6bd1d67ea1008d2592e998bad33',1,'glm::clamp(genType const &Texcoord)']]], ['closebounded',['closeBounded',['../a00314.html#gab7d89c14c48ad01f720fb5daf8813161',1,'glm']]], ['closest_5fpoint_2ehpp',['closest_point.hpp',['../a00010.html',1,'']]], ['closestpointonline',['closestPointOnLine',['../a00310.html#ga36529c278ef716986151d58d151d697d',1,'glm::closestPointOnLine(vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)'],['../a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0',1,'glm::closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)']]], ['colmajor2',['colMajor2',['../a00338.html#gaaff72f11286e59a4a88ed21a347f284c',1,'glm::colMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gafc25fd44196c92b1397b127aec1281ab',1,'glm::colMajor2(mat< 2, 2, T, Q > const &m)']]], ['colmajor3',['colMajor3',['../a00338.html#ga1e25b72b085087740c92f5c70f3b051f',1,'glm::colMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#ga86bd0656e787bb7f217607572590af27',1,'glm::colMajor3(mat< 3, 3, T, Q > const &m)']]], ['colmajor4',['colMajor4',['../a00338.html#gaf4aa6c7e17bfce41a6c13bf6469fab05',1,'glm::colMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gaf3f9511c366c20ba2e4a64c9e4cec2b3',1,'glm::colMajor4(mat< 4, 4, T, Q > const &m)']]], ['color_5fencoding_2ehpp',['color_encoding.hpp',['../a00011.html',1,'']]], ['color_5fspace_5fycocg_2ehpp',['color_space_YCoCg.hpp',['../a00014.html',1,'']]], ['column',['column',['../a00293.html#ga96022eb0d3fae39d89fc7a954e59b374',1,'glm::column(genType const &m, length_t index)'],['../a00293.html#ga9e757377523890e8b80c5843dbe4dd15',1,'glm::column(genType const &m, length_t index, typename genType::col_type const &x)']]], ['common_2ehpp',['common.hpp',['../a00015.html',1,'']]], ['compadd',['compAdd',['../a00316.html#gaf71833350e15e74d31cbf8a3e7f27051',1,'glm']]], ['compatibility_2ehpp',['compatibility.hpp',['../a00017.html',1,'']]], ['compmax',['compMax',['../a00316.html#gabfa4bb19298c8c73d4217ba759c496b6',1,'glm']]], ['compmin',['compMin',['../a00316.html#gab5d0832b5c7bb01b8d7395973bfb1425',1,'glm']]], ['compmul',['compMul',['../a00316.html#gae8ab88024197202c9479d33bdc5a8a5d',1,'glm']]], ['compnormalize',['compNormalize',['../a00316.html#ga8f2b81ada8515875e58cb1667b6b9908',1,'glm']]], ['component_5fwise_2ehpp',['component_wise.hpp',['../a00018.html',1,'']]], ['compscale',['compScale',['../a00316.html#ga80abc2980d65d675f435d178c36880eb',1,'glm']]], ['conjugate',['conjugate',['../a00248.html#ga10d7bda73201788ac2ab28cd8d0d409b',1,'glm']]], ['constants_2ehpp',['constants.hpp',['../a00021.html',1,'']]], ['convertd65xyztod50xyz',['convertD65XYZToD50XYZ',['../a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48',1,'glm']]], ['convertd65xyztolinearsrgb',['convertD65XYZToLinearSRGB',['../a00311.html#ga5265386fc3ac29e4c580d37ed470859c',1,'glm']]], ['convertlinearsrgbtod50xyz',['convertLinearSRGBToD50XYZ',['../a00311.html#ga1522ba180e3d83d554a734056da031f9',1,'glm']]], ['convertlinearsrgbtod65xyz',['convertLinearSRGBToD65XYZ',['../a00311.html#gaf9e130d9d4ccf51cc99317de7449f369',1,'glm']]], ['convertlineartosrgb',['convertLinearToSRGB',['../a00289.html#ga42239e7b3da900f7ef37cec7e2476579',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear)'],['../a00289.html#gaace0a21167d13d26116c283009af57f6',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)']]], ['convertsrgbtolinear',['convertSRGBToLinear',['../a00289.html#ga16c798b7a226b2c3079dedc55083d187',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB)'],['../a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)']]], ['core_20features',['Core features',['../a00280.html',1,'']]], ['common_20functions',['Common functions',['../a00241.html',1,'']]], ['cos',['cos',['../a00373.html#ga6a41efc740e3b3c937447d3a6284130e',1,'glm']]], ['cosh',['cosh',['../a00373.html#ga4e260e372742c5f517aca196cf1e62b3',1,'glm']]], ['cot',['cot',['../a00301.html#ga3a7b517a95bbd3ad74da3aea87a66314',1,'glm']]], ['coth',['coth',['../a00301.html#ga6b8b770eb7198e4dea59d52e6db81442',1,'glm']]], ['cross',['cross',['../a00254.html#ga755beaa929c75751dee646cccba37e4c',1,'glm::cross(qua< T, Q > const &q1, qua< T, Q > const &q2)'],['../a00279.html#gaeeec0794212fe84fc9d261de067c9587',1,'glm::cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00322.html#gac36e72b934ea6a9dd313772d7e78fa93',1,'glm::cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)'],['../a00352.html#ga2f32f970411c44cdd38bb98960198385',1,'glm::cross(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#ga9f5f77255756e5668dfee7f0d07ed021',1,'glm::cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)']]], ['csc',['csc',['../a00301.html#ga59dd0005b6474eea48af743b4f14ebbb',1,'glm']]], ['csch',['csch',['../a00301.html#ga6d95843ff3ca6472ab399ba171d290a0',1,'glm']]], ['cubic',['cubic',['../a00358.html#ga6b867eb52e2fc933d2e0bf26aabc9a70',1,'glm']]], ['cubiceasein',['cubicEaseIn',['../a00318.html#gaff52f746102b94864d105563ba8895ae',1,'glm']]], ['cubiceaseinout',['cubicEaseInOut',['../a00318.html#ga55134072b42d75452189321d4a2ad91c',1,'glm']]], ['cubiceaseout',['cubicEaseOut',['../a00318.html#ga40d746385d8bcc5973f5bc6a2340ca91',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_3.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_3.js ================================================ var searchData= [ ['ddualquat',['ddualquat',['../a00317.html#ga3d71f98d84ba59dfe4e369fde4714cd6',1,'glm']]], ['decompose',['decompose',['../a00335.html#gac0e342656ba09a9bc97c57182ba73124',1,'glm']]], ['degrees',['degrees',['../a00373.html#ga8faec9e303538065911ba8b3caf7326b',1,'glm']]], ['derivedeuleranglex',['derivedEulerAngleX',['../a00319.html#ga994b8186b3b80d91cf90bc403164692f',1,'glm']]], ['derivedeulerangley',['derivedEulerAngleY',['../a00319.html#ga0a4c56ecce7abcb69508ebe6313e9d10',1,'glm']]], ['derivedeuleranglez',['derivedEulerAngleZ',['../a00319.html#gae8b397348201c42667be983ba3f344df',1,'glm']]], ['determinant',['determinant',['../a00371.html#gad7928795124768e058f99dce270f5c8d',1,'glm']]], ['diagonal2x2',['diagonal2x2',['../a00339.html#ga58a32a2beeb2478dae2a721368cdd4ac',1,'glm']]], ['diagonal2x3',['diagonal2x3',['../a00339.html#gab69f900206a430e2875a5a073851e175',1,'glm']]], ['diagonal2x4',['diagonal2x4',['../a00339.html#ga30b4dbfed60a919d66acc8a63bcdc549',1,'glm']]], ['diagonal3x2',['diagonal3x2',['../a00339.html#ga832c805d5130d28ad76236958d15b47d',1,'glm']]], ['diagonal3x3',['diagonal3x3',['../a00339.html#ga5487ff9cdbc8e04d594adef1bcb16ee0',1,'glm']]], ['diagonal3x4',['diagonal3x4',['../a00339.html#gad7551139cff0c4208d27f0ad3437833e',1,'glm']]], ['diagonal4x2',['diagonal4x2',['../a00339.html#gacb8969e6543ba775c6638161a37ac330',1,'glm']]], ['diagonal4x3',['diagonal4x3',['../a00339.html#gae235def5049d6740f0028433f5e13f90',1,'glm']]], ['diagonal4x4',['diagonal4x4',['../a00339.html#ga0b4cd8dea436791b072356231ee8578f',1,'glm']]], ['diskrand',['diskRand',['../a00300.html#gaa0b18071f3f97dbf8bcf6f53c6fe5f73',1,'glm']]], ['distance',['distance',['../a00279.html#gaa68de6c53e20dfb2dac2d20197562e3f',1,'glm']]], ['distance2',['distance2',['../a00343.html#ga85660f1b79f66c09c7b5a6f80e68c89f',1,'glm']]], ['dmat2',['dmat2',['../a00283.html#ga21dbd1f987775d7cc7607c139531c7e6',1,'glm']]], ['dmat2x2',['dmat2x2',['../a00283.html#ga66b6a9af787e468a46dfe24189e87f9b',1,'glm']]], ['dmat2x3',['dmat2x3',['../a00283.html#ga92cd388753d48e20de69ea2dbedf826a',1,'glm']]], ['dmat2x4',['dmat2x4',['../a00283.html#gaef2198807e937072803ae0ae45e1965e',1,'glm']]], ['dmat3',['dmat3',['../a00283.html#ga6f40aa56265b4b0ccad41b86802efe33',1,'glm']]], ['dmat3x2',['dmat3x2',['../a00283.html#ga001e3e0638fbf8719788fc64c5b8cf39',1,'glm']]], ['dmat3x3',['dmat3x3',['../a00283.html#ga970cb3306be25a5ca5db5a9456831228',1,'glm']]], ['dmat3x4',['dmat3x4',['../a00283.html#ga0412a634d183587e6188e9b11869f8f4',1,'glm']]], ['dmat4',['dmat4',['../a00283.html#ga0f34486bb7fec8e5a5b3830b6a6cbeca',1,'glm']]], ['dmat4x2',['dmat4x2',['../a00283.html#ga9bc0b3ab8b6ba2cb6782e179ad7ad156',1,'glm']]], ['dmat4x3',['dmat4x3',['../a00283.html#gacd18864049f8c83799babe7e596ca05b',1,'glm']]], ['dmat4x4',['dmat4x4',['../a00283.html#gad5a6484b983b74f9d801cab8bc4e6a10',1,'glm']]], ['dot',['dot',['../a00254.html#ga84865a56acb8fbd7bc4f5c0b928e3cfc',1,'glm::dot(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00279.html#gaad6c5d9d39bdc0bf43baf1b22e147a0a',1,'glm::dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['double1',['double1',['../a00315.html#ga20b861a9b6e2a300323671c57a02525b',1,'glm']]], ['double1x1',['double1x1',['../a00315.html#ga45f16a4dd0db1f199afaed9fd12fe9a8',1,'glm']]], ['double2',['double2',['../a00315.html#ga31b729b04facccda73f07ed26958b3c2',1,'glm']]], ['double2x2',['double2x2',['../a00315.html#gae57d0201096834d25f2b91b319e7cdbd',1,'glm']]], ['double2x3',['double2x3',['../a00315.html#ga3655bc324008553ca61f39952d0b2d08',1,'glm']]], ['double2x4',['double2x4',['../a00315.html#gacd33061fc64a7b2dcfd7322c49d9557a',1,'glm']]], ['double3',['double3',['../a00315.html#ga3d8b9028a1053a44a98902cd1c389472',1,'glm']]], ['double3x2',['double3x2',['../a00315.html#ga5ec08fc39c9d783dfcc488be240fe975',1,'glm']]], ['double3x3',['double3x3',['../a00315.html#ga4bad5bb20c6ddaecfe4006c93841d180',1,'glm']]], ['double3x4',['double3x4',['../a00315.html#ga2ef022e453d663d70aec414b2a80f756',1,'glm']]], ['double4',['double4',['../a00315.html#gaf92f58af24f35617518aeb3d4f63fda6',1,'glm']]], ['double4x2',['double4x2',['../a00315.html#gabca29ccceea53669618b751aae0ba83d',1,'glm']]], ['double4x3',['double4x3',['../a00315.html#gafad66a02ccd360c86d6ab9ff9cfbc19c',1,'glm']]], ['double4x4',['double4x4',['../a00315.html#gaab541bed2e788e4537852a2492860806',1,'glm']]], ['dquat',['dquat',['../a00249.html#ga1181459aa5d640a3ea43861b118f3f0b',1,'glm']]], ['dual_5fquat_5fidentity',['dual_quat_identity',['../a00317.html#ga0b35c0e30df8a875dbaa751e0bd800e0',1,'glm']]], ['dual_5fquaternion_2ehpp',['dual_quaternion.hpp',['../a00022.html',1,'']]], ['dualquat',['dualquat',['../a00317.html#gae93abee0c979902fbec6a7bee0f6fae1',1,'glm']]], ['dualquat_5fcast',['dualquat_cast',['../a00317.html#gac4064ff813759740201765350eac4236',1,'glm::dualquat_cast(mat< 2, 4, T, Q > const &x)'],['../a00317.html#ga91025ebdca0f4ea54da08497b00e8c84',1,'glm::dualquat_cast(mat< 3, 4, T, Q > const &x)']]], ['dvec1',['dvec1',['../a00268.html#ga6221af17edc2d4477a4583d2cd53e569',1,'glm']]], ['dvec2',['dvec2',['../a00281.html#ga8b09c71aaac7da7867ae58377fe219a8',1,'glm']]], ['dvec3',['dvec3',['../a00281.html#ga5b83ae3d0fdec519c038e4d2cf967cf0',1,'glm']]], ['dvec4',['dvec4',['../a00281.html#ga57debab5d98ce618f7b2a97fe26eb3ac',1,'glm']]], ['dword',['dword',['../a00354.html#ga86e46fff9f80ae33893d8d697f2ca98a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_4.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_4.js ================================================ var searchData= [ ['exponential_20functions',['Exponential functions',['../a00242.html',1,'']]], ['e',['e',['../a00290.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139',1,'glm']]], ['easing_2ehpp',['easing.hpp',['../a00023.html',1,'']]], ['elasticeasein',['elasticEaseIn',['../a00318.html#ga230918eccee4e113d10ec5b8cdc58695',1,'glm']]], ['elasticeaseinout',['elasticEaseInOut',['../a00318.html#ga2db4ac8959559b11b4029e54812908d6',1,'glm']]], ['elasticeaseout',['elasticEaseOut',['../a00318.html#gace9c9d1bdf88bf2ab1e7cdefa54c7365',1,'glm']]], ['epsilon',['epsilon',['../a00259.html#ga2a1e57fc5592b69cfae84174cbfc9429',1,'glm']]], ['epsilon_2ehpp',['epsilon.hpp',['../a00024.html',1,'']]], ['epsilonequal',['epsilonEqual',['../a00291.html#ga91b417866cafadd076004778217a1844',1,'glm::epsilonEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#gaa7f227999ca09e7ca994e8b35aba47bb',1,'glm::epsilonEqual(genType const &x, genType const &y, genType const &epsilon)']]], ['epsilonnotequal',['epsilonNotEqual',['../a00291.html#gaf840d33b9a5261ec78dcd5125743b025',1,'glm::epsilonNotEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#ga50a92103fb0cbd796908e1bf20c79aaf',1,'glm::epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)']]], ['equal',['equal',['../a00246.html#ga27e90dcb7941c9b70e295dc3f6f6369f',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#gaf5d687d70d11708b68c36c6db5777040',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gafa6a053e81179fa4292b35651c83c3fb',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gab3a93f19e72e9141f50527c9de21d0c0',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#ga5305af376173f1902719fa309bbae671',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gad7827af0549504ff1cd6a359786acc7a',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#gaa001eecb91106463169a8e5ef1577b39',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga2ac7651a2fa7354f2da610dbd50d28e2',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga37d261a65f69babc82cec2ae1af7145f',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga2b46cb50911e97b32f4cd743c2c69771',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga7da2b8605be7f245b39cb6fbf6d9d581',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#gab4c5cfdaa70834421397a85aa83ad946',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['euclidean',['euclidean',['../a00350.html#ga1821d5b3324201e60a9e2823d0b5d0c8',1,'glm']]], ['euler',['euler',['../a00290.html#gad8fe2e6f90bce9d829e9723b649fbd42',1,'glm']]], ['euler_5fangles_2ehpp',['euler_angles.hpp',['../a00025.html',1,'']]], ['eulerangles',['eulerAngles',['../a00299.html#gaf4dd967dead22dd932fc7460ceecb03f',1,'glm']]], ['euleranglex',['eulerAngleX',['../a00319.html#gafba6282e4ed3ff8b5c75331abfba3489',1,'glm']]], ['euleranglexy',['eulerAngleXY',['../a00319.html#ga64036577ee17a2d24be0dbc05881d4e2',1,'glm']]], ['euleranglexyx',['eulerAngleXYX',['../a00319.html#ga29bd0787a28a6648159c0d6e69706066',1,'glm']]], ['euleranglexyz',['eulerAngleXYZ',['../a00319.html#ga1975e0f0e9bed7f716dc9946da2ab645',1,'glm']]], ['euleranglexz',['eulerAngleXZ',['../a00319.html#gaa39bd323c65c2fc0a1508be33a237ce9',1,'glm']]], ['euleranglexzx',['eulerAngleXZX',['../a00319.html#ga60171c79a17aec85d7891ae1d1533ec9',1,'glm']]], ['euleranglexzy',['eulerAngleXZY',['../a00319.html#ga996dce12a60d8a674ba6737a535fa910',1,'glm']]], ['eulerangley',['eulerAngleY',['../a00319.html#gab84bf4746805fd69b8ecbb230e3974c5',1,'glm']]], ['eulerangleyx',['eulerAngleYX',['../a00319.html#ga4f57e6dd25c3cffbbd4daa6ef3f4486d',1,'glm']]], ['eulerangleyxy',['eulerAngleYXY',['../a00319.html#ga750fba9894117f87bcc529d7349d11de',1,'glm']]], ['eulerangleyxz',['eulerAngleYXZ',['../a00319.html#gab8ba99a9814f6d9edf417b6c6d5b0c10',1,'glm']]], ['eulerangleyz',['eulerAngleYZ',['../a00319.html#ga220379e10ac8cca55e275f0c9018fed9',1,'glm']]], ['eulerangleyzx',['eulerAngleYZX',['../a00319.html#ga08bef16357b8f9b3051b3dcaec4b7848',1,'glm']]], ['eulerangleyzy',['eulerAngleYZY',['../a00319.html#ga5e5e40abc27630749b42b3327c76d6e4',1,'glm']]], ['euleranglez',['eulerAngleZ',['../a00319.html#ga5b3935248bb6c3ec6b0d9297d406e251',1,'glm']]], ['euleranglezx',['eulerAngleZX',['../a00319.html#ga483903115cd4059228961046a28d69b5',1,'glm']]], ['euleranglezxy',['eulerAngleZXY',['../a00319.html#gab4505c54d2dd654df4569fd1f04c43aa',1,'glm']]], ['euleranglezxz',['eulerAngleZXZ',['../a00319.html#ga178f966c52b01e4d65e31ebd007e3247',1,'glm']]], ['euleranglezy',['eulerAngleZY',['../a00319.html#ga400b2bd5984999efab663f3a68e1d020',1,'glm']]], ['euleranglezyx',['eulerAngleZYX',['../a00319.html#ga2e61f1e39069c47530acab9167852dd6',1,'glm']]], ['euleranglezyz',['eulerAngleZYZ',['../a00319.html#gacd795f1dbecaf74974f9c76bbcca6830',1,'glm']]], ['exp',['exp',['../a00242.html#ga071566cadc7505455e611f2a0353f4d4',1,'glm::exp(vec< L, T, Q > const &v)'],['../a00256.html#gaab2d37ef7265819f1d2939b9dc2c52ac',1,'glm::exp(qua< T, Q > const &q)']]], ['exp2',['exp2',['../a00242.html#gaff17ace6b579a03bf223ed4d1ed2cd16',1,'glm']]], ['exponential_2ehpp',['exponential.hpp',['../a00026.html',1,'']]], ['exponentialeasein',['exponentialEaseIn',['../a00318.html#ga7f24ee9219ab4c84dc8de24be84c1e3c',1,'glm']]], ['exponentialeaseinout',['exponentialEaseInOut',['../a00318.html#ga232fb6dc093c5ce94bee105ff2947501',1,'glm']]], ['exponentialeaseout',['exponentialEaseOut',['../a00318.html#ga517f2bcfd15bc2c25c466ae50808efc3',1,'glm']]], ['ext_2ehpp',['ext.hpp',['../a00027.html',1,'']]], ['extend',['extend',['../a00320.html#ga8140caae613b0f847ab0d7175dc03a37',1,'glm']]], ['extend_2ehpp',['extend.hpp',['../a00028.html',1,'']]], ['extended_5fmin_5fmax_2ehpp',['extended_min_max.hpp',['../a00029.html',1,'']]], ['exterior_5fproduct_2ehpp',['exterior_product.hpp',['../a00030.html',1,'']]], ['extracteuleranglexyx',['extractEulerAngleXYX',['../a00319.html#gaf1077a72171d0f3b08f022ab5ff88af7',1,'glm']]], ['extracteuleranglexyz',['extractEulerAngleXYZ',['../a00319.html#gacea701562f778c1da4d3a0a1cf091000',1,'glm']]], ['extracteuleranglexzx',['extractEulerAngleXZX',['../a00319.html#gacf0bc6c031f25fa3ee0055b62c8260d0',1,'glm']]], ['extracteuleranglexzy',['extractEulerAngleXZY',['../a00319.html#gabe5a65d8eb1cd873c8de121cce1a15ed',1,'glm']]], ['extracteulerangleyxy',['extractEulerAngleYXY',['../a00319.html#gaab8868556361a190db94374e9983ed39',1,'glm']]], ['extracteulerangleyxz',['extractEulerAngleYXZ',['../a00319.html#gaf0937518e63037335a0e8358b6f053c5',1,'glm']]], ['extracteulerangleyzx',['extractEulerAngleYZX',['../a00319.html#ga9049b78466796c0de2971756e25b93d3',1,'glm']]], ['extracteulerangleyzy',['extractEulerAngleYZY',['../a00319.html#ga11dad972c109e4bf8694c915017c44a6',1,'glm']]], ['extracteuleranglezxy',['extractEulerAngleZXY',['../a00319.html#ga81fbbca2ba0c778b9662d5355b4e2363',1,'glm']]], ['extracteuleranglezxz',['extractEulerAngleZXZ',['../a00319.html#ga59359fef9bad92afaca55e193f91e702',1,'glm']]], ['extracteuleranglezyx',['extractEulerAngleZYX',['../a00319.html#ga2d6c11a4abfa60c565483cee2d3f7665',1,'glm']]], ['extracteuleranglezyz',['extractEulerAngleZYZ',['../a00319.html#gafdfa880a64b565223550c2d3938b1aeb',1,'glm']]], ['extractmatrixrotation',['extractMatrixRotation',['../a00337.html#gabbc1c7385a145f04b5c54228965df145',1,'glm']]], ['extractrealcomponent',['extractRealComponent',['../a00352.html#ga321953c1b2e7befe6f5dcfddbfc6b76b',1,'glm']]], ['experimental_20extensions',['Experimental extensions',['../a00287.html',1,'']]], ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00108.html',1,'']]], ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00149.html',1,'']]], ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00224.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_5.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_5.js ================================================ var searchData= [ ['floating_2dpoint_20pack_20and_20unpack_20functions',['Floating-Point Pack and Unpack Functions',['../a00372.html',1,'']]], ['f32',['f32',['../a00304.html#gabe6a542dd6c1d5ffd847f1b9b4c9c9b7',1,'glm']]], ['f32mat1',['f32mat1',['../a00346.html#ga145ad477a2a3e152855511c3b52469a6',1,'glm::gtx']]], ['f32mat1x1',['f32mat1x1',['../a00346.html#gac88c6a4dbfc380aa26e3adbbade36348',1,'glm::gtx']]], ['f32mat2',['f32mat2',['../a00304.html#gab12383ed6ac7595ed6fde4d266c58425',1,'glm']]], ['f32mat2x2',['f32mat2x2',['../a00304.html#ga04100c76f7d55a0dd0983ccf05142bff',1,'glm']]], ['f32mat2x3',['f32mat2x3',['../a00304.html#gab256cdab5eb582e426d749ae77b5b566',1,'glm']]], ['f32mat2x4',['f32mat2x4',['../a00304.html#gaf512b74c4400b68f9fdf9388b3d6aac8',1,'glm']]], ['f32mat3',['f32mat3',['../a00304.html#ga856f3905ee7cc2e4890a8a1d56c150be',1,'glm']]], ['f32mat3x2',['f32mat3x2',['../a00304.html#ga1320a08e14fdff3821241eefab6947e9',1,'glm']]], ['f32mat3x3',['f32mat3x3',['../a00304.html#ga65261fa8a21045c8646ddff114a56174',1,'glm']]], ['f32mat3x4',['f32mat3x4',['../a00304.html#gab90ade28222f8b861d5ceaf81a3a7f5d',1,'glm']]], ['f32mat4',['f32mat4',['../a00304.html#ga99d1b85ff99956b33da7e9992aad129a',1,'glm']]], ['f32mat4x2',['f32mat4x2',['../a00304.html#ga3b32ca1e57a4ef91babbc3d35a34ea20',1,'glm']]], ['f32mat4x3',['f32mat4x3',['../a00304.html#ga239b96198771b7add8eea7e6b59840c0',1,'glm']]], ['f32mat4x4',['f32mat4x4',['../a00304.html#gaee4da0e9fbd8cfa2f89cb80889719dc3',1,'glm']]], ['f32quat',['f32quat',['../a00304.html#ga38e674196ba411d642be40c47bf33939',1,'glm']]], ['f32vec1',['f32vec1',['../a00304.html#ga701f32ab5b3fb06996b41f5c0d643805',1,'glm::f32vec1()'],['../a00346.html#ga07f8d7348eb7ae059a84c118fdfeb943',1,'glm::gtx::f32vec1()']]], ['f32vec2',['f32vec2',['../a00304.html#ga5d6c70e080409a76a257dc55bd8ea2c8',1,'glm']]], ['f32vec3',['f32vec3',['../a00304.html#gaea5c4518e175162e306d2c2b5ef5ac79',1,'glm']]], ['f32vec4',['f32vec4',['../a00304.html#ga31c6ca0e074a44007f49a9a3720b18c8',1,'glm']]], ['f64',['f64',['../a00304.html#ga1d794d240091678f602e8de225b8d8c9',1,'glm']]], ['f64mat1',['f64mat1',['../a00346.html#ga59bfa589419b5265d01314fcecd33435',1,'glm::gtx']]], ['f64mat1x1',['f64mat1x1',['../a00346.html#ga448eeb08d0b7d8c43a8b292c981955fd',1,'glm::gtx']]], ['f64mat2',['f64mat2',['../a00304.html#gad9771450a54785d13080cdde0fe20c1d',1,'glm']]], ['f64mat2x2',['f64mat2x2',['../a00304.html#ga9ec7c4c79e303c053e30729a95fb2c37',1,'glm']]], ['f64mat2x3',['f64mat2x3',['../a00304.html#gae3ab5719fc4c1e966631dbbcba8d412a',1,'glm']]], ['f64mat2x4',['f64mat2x4',['../a00304.html#gac87278e0c702ba8afff76316d4eeb769',1,'glm']]], ['f64mat3',['f64mat3',['../a00304.html#ga9b69181efbf8f37ae934f135137b29c0',1,'glm']]], ['f64mat3x2',['f64mat3x2',['../a00304.html#ga2473d8bf3f4abf967c4d0e18175be6f7',1,'glm']]], ['f64mat3x3',['f64mat3x3',['../a00304.html#ga916c1aed91cf91f7b41399ebe7c6e185',1,'glm']]], ['f64mat3x4',['f64mat3x4',['../a00304.html#gaab239fa9e35b65a67cbaa6ac082f3675',1,'glm']]], ['f64mat4',['f64mat4',['../a00304.html#ga0ecd3f4952536e5ef12702b44d2626fc',1,'glm']]], ['f64mat4x2',['f64mat4x2',['../a00304.html#gab7daf79d6bc06a68bea1c6f5e11b5512',1,'glm']]], ['f64mat4x3',['f64mat4x3',['../a00304.html#ga3e2e66ffbe341a80bc005ba2b9552110',1,'glm']]], ['f64mat4x4',['f64mat4x4',['../a00304.html#gae52e2b7077a9ff928a06ab5ce600b81e',1,'glm']]], ['f64quat',['f64quat',['../a00304.html#ga2b114a2f2af0fe1dfeb569c767822940',1,'glm']]], ['f64vec1',['f64vec1',['../a00304.html#gade502df1ce14f837fae7f60a03ddb9b0',1,'glm::f64vec1()'],['../a00346.html#gae5987a61b8c03d5c432a9e62f0b3efe1',1,'glm::gtx::f64vec1()']]], ['f64vec2',['f64vec2',['../a00304.html#gadc4e1594f9555d919131ee02b17822a2',1,'glm']]], ['f64vec3',['f64vec3',['../a00304.html#gaa7a1ddca75c5f629173bf4772db7a635',1,'glm']]], ['f64vec4',['f64vec4',['../a00304.html#ga66e92e57260bdb910609b9a56bf83e97',1,'glm']]], ['faceforward',['faceforward',['../a00279.html#ga7aed0a36c738169402404a3a5d54e43b',1,'glm']]], ['factorial',['factorial',['../a00330.html#ga8cbd3120905f398ec321b5d1836e08fb',1,'glm']]], ['fast_5fexponential_2ehpp',['fast_exponential.hpp',['../a00031.html',1,'']]], ['fast_5fsquare_5froot_2ehpp',['fast_square_root.hpp',['../a00032.html',1,'']]], ['fast_5ftrigonometry_2ehpp',['fast_trigonometry.hpp',['../a00033.html',1,'']]], ['fastacos',['fastAcos',['../a00325.html#ga9721d63356e5d94fdc4b393a426ab26b',1,'glm']]], ['fastasin',['fastAsin',['../a00325.html#ga562cb62c51fbfe7fac7db0bce706b81f',1,'glm']]], ['fastatan',['fastAtan',['../a00325.html#ga8d197c6ef564f5e5d59af3b3f8adcc2c',1,'glm::fastAtan(T y, T x)'],['../a00325.html#gae25de86a968490ff56856fa425ec9d30',1,'glm::fastAtan(T angle)']]], ['fastcos',['fastCos',['../a00325.html#gab34c8b45c23c0165a64dcecfcc3b302a',1,'glm']]], ['fastdistance',['fastDistance',['../a00324.html#gaac333418d0c4e0cc6d3d219ed606c238',1,'glm::fastDistance(genType x, genType y)'],['../a00324.html#ga42d3e771fa7cb3c60d828e315829df19',1,'glm::fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['fastexp',['fastExp',['../a00323.html#gaa3180ac8f96ab37ab96e0cacaf608e10',1,'glm::fastExp(T x)'],['../a00323.html#ga3ba6153aec6bd74628f8b00530aa8d58',1,'glm::fastExp(vec< L, T, Q > const &x)']]], ['fastexp2',['fastExp2',['../a00323.html#ga0af50585955eb14c60bb286297fabab2',1,'glm::fastExp2(T x)'],['../a00323.html#gacaaed8b67d20d244b7de217e7816c1b6',1,'glm::fastExp2(vec< L, T, Q > const &x)']]], ['fastinversesqrt',['fastInverseSqrt',['../a00324.html#ga7f081b14d9c7035c8714eba5f7f75a8f',1,'glm::fastInverseSqrt(genType x)'],['../a00324.html#gadcd7be12b1e5ee182141359d4c45dd24',1,'glm::fastInverseSqrt(vec< L, T, Q > const &x)']]], ['fastlength',['fastLength',['../a00324.html#gafe697d6287719538346bbdf8b1367c59',1,'glm::fastLength(genType x)'],['../a00324.html#ga90f66be92ef61e705c005e7b3209edb8',1,'glm::fastLength(vec< L, T, Q > const &x)']]], ['fastlog',['fastLog',['../a00323.html#gae1bdc97b7f96a600e29c753f1cd4388a',1,'glm::fastLog(T x)'],['../a00323.html#ga937256993a7219e73f186bb348fe6be8',1,'glm::fastLog(vec< L, T, Q > const &x)']]], ['fastlog2',['fastLog2',['../a00323.html#ga6e98118685f6dc9e05fbb13dd5e5234e',1,'glm::fastLog2(T x)'],['../a00323.html#ga7562043539194ccc24649f8475bc5584',1,'glm::fastLog2(vec< L, T, Q > const &x)']]], ['fastmix',['fastMix',['../a00352.html#ga264e10708d58dd0ff53b7902a2bd2561',1,'glm']]], ['fastnormalize',['fastNormalize',['../a00324.html#ga3b02c1d6e0c754144e2f1e110bf9f16c',1,'glm']]], ['fastnormalizedot',['fastNormalizeDot',['../a00345.html#ga2746fb9b5bd22b06b2f7c8babba5de9e',1,'glm']]], ['fastpow',['fastPow',['../a00323.html#ga5340e98a11fcbbd936ba6e983a154d50',1,'glm::fastPow(genType x, genType y)'],['../a00323.html#ga15325a8ed2d1c4ed2412c4b3b3927aa2',1,'glm::fastPow(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00323.html#ga7f2562db9c3e02ae76169c36b086c3f6',1,'glm::fastPow(genTypeT x, genTypeU y)'],['../a00323.html#ga1abe488c0829da5b9de70ac64aeaa7e5',1,'glm::fastPow(vec< L, T, Q > const &x)']]], ['fastsin',['fastSin',['../a00325.html#ga0aab3257bb3b628d10a1e0483e2c6915',1,'glm']]], ['fastsqrt',['fastSqrt',['../a00324.html#ga6c460e9414a50b2fc455c8f64c86cdc9',1,'glm::fastSqrt(genType x)'],['../a00324.html#gae83f0c03614f73eae5478c5b6274ee6d',1,'glm::fastSqrt(vec< L, T, Q > const &x)']]], ['fasttan',['fastTan',['../a00325.html#gaf29b9c1101a10007b4f79ee89df27ba2',1,'glm']]], ['fclamp',['fclamp',['../a00321.html#ga1e28539d3a46965ed9ef92ec7cb3b18a',1,'glm::fclamp(genType x, genType minVal, genType maxVal)'],['../a00321.html#ga60796d08903489ee185373593bc16b9d',1,'glm::fclamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00321.html#ga5c15fa4709763c269c86c0b8b3aa2297',1,'glm::fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)']]], ['fdualquat',['fdualquat',['../a00317.html#ga237c2b9b42c9a930e49de5840ae0f930',1,'glm']]], ['findlsb',['findLSB',['../a00370.html#gaf74c4d969fa34ab8acb9d390f5ca5274',1,'glm::findLSB(genIUType x)'],['../a00370.html#ga4454c0331d6369888c28ab677f4810c7',1,'glm::findLSB(vec< L, T, Q > const &v)']]], ['findmsb',['findMSB',['../a00370.html#ga7e4a794d766861c70bc961630f8ef621',1,'glm::findMSB(genIUType x)'],['../a00370.html#ga39ac4d52028bb6ab08db5ad6562c2872',1,'glm::findMSB(vec< L, T, Q > const &v)']]], ['findnsb',['findNSB',['../a00261.html#ga2777901e41ad6e1e9d0ad6cc855d1075',1,'glm::findNSB(genIUType x, int significantBitCount)'],['../a00274.html#gaff61eca266da315002a3db92ff0dd604',1,'glm::findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)']]], ['fliplr',['fliplr',['../a00336.html#gaf39f4e5f78eb29c1a90277d45b9b3feb',1,'glm']]], ['flipud',['flipud',['../a00336.html#ga85003371f0ba97380dd25e8905de1870',1,'glm']]], ['float1',['float1',['../a00315.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead',1,'glm']]], ['float1x1',['float1x1',['../a00315.html#ga73720b8dc4620835b17f74d428f98c0c',1,'glm']]], ['float2',['float2',['../a00315.html#ga02d3c013982c183906c61d74aa3166ce',1,'glm']]], ['float2x2',['float2x2',['../a00315.html#ga33d43ecbb60a85a1366ff83f8a0ec85f',1,'glm']]], ['float2x3',['float2x3',['../a00315.html#ga939b0cff15cee3030f75c1b2e36f89fe',1,'glm']]], ['float2x4',['float2x4',['../a00315.html#gafec3cfd901ab334a92e0242b8f2269b4',1,'glm']]], ['float3',['float3',['../a00315.html#ga821ff110fc8533a053cbfcc93e078cc0',1,'glm']]], ['float32',['float32',['../a00304.html#gaacdc525d6f7bddb3ae95d5c311bd06a1',1,'glm']]], ['float32_5ft',['float32_t',['../a00304.html#gaa4947bc8b47c72fceea9bda730ecf603',1,'glm']]], ['float3x2',['float3x2',['../a00315.html#gaa6c69f04ba95f3faedf95dae874de576',1,'glm']]], ['float3x3',['float3x3',['../a00315.html#ga6ceb5d38a58becdf420026e12a6562f3',1,'glm']]], ['float3x4',['float3x4',['../a00315.html#ga4d2679c321b793ca3784fe0315bb5332',1,'glm']]], ['float4',['float4',['../a00315.html#gae2da7345087db3815a25d8837a727ef1',1,'glm']]], ['float4x2',['float4x2',['../a00315.html#ga308b9af0c221145bcfe9bfc129d9098e',1,'glm']]], ['float4x3',['float4x3',['../a00315.html#gac0a51b4812038aa81d73ffcc37f741ac',1,'glm']]], ['float4x4',['float4x4',['../a00315.html#gad3051649b3715d828a4ab92cdae7c3bf',1,'glm']]], ['float64',['float64',['../a00304.html#ga232fad1b0d6dcc7c16aabde98b2e2a80',1,'glm']]], ['float64_5ft',['float64_t',['../a00304.html#ga728366fef72cd96f0a5fa6429f05469e',1,'glm']]], ['floatbitstoint',['floatBitsToInt',['../a00241.html#ga1425c1c3160ec51214b03a0469a3013d',1,'glm::floatBitsToInt(float const &v)'],['../a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed',1,'glm::floatBitsToInt(vec< L, float, Q > const &v)']]], ['floatbitstouint',['floatBitsToUint',['../a00241.html#ga70e0271c34af52f3100c7960e18c3f2b',1,'glm::floatBitsToUint(float const &v)'],['../a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db',1,'glm::floatBitsToUint(vec< L, float, Q > const &v)']]], ['floor',['floor',['../a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d',1,'glm']]], ['floor_5flog2',['floor_log2',['../a00330.html#ga7011b4e1c1e1ed492149b028feacc00e',1,'glm']]], ['floormultiple',['floorMultiple',['../a00302.html#ga2ffa3cd5f2ea746ee1bf57c46da6315e',1,'glm::floorMultiple(genType v, genType Multiple)'],['../a00302.html#gacdd8901448f51f0b192380e422fae3e4',1,'glm::floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['floorpoweroftwo',['floorPowerOfTwo',['../a00302.html#gafe273a57935d04c9db677bf67f9a71f4',1,'glm::floorPowerOfTwo(genIUType v)'],['../a00302.html#gaf0d591a8fca8ddb9289cdeb44b989c2d',1,'glm::floorPowerOfTwo(vec< L, T, Q > const &v)']]], ['fma',['fma',['../a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2',1,'glm']]], ['fmat2',['fmat2',['../a00304.html#ga4541dc2feb2a31d6ecb5a303f3dd3280',1,'glm']]], ['fmat2x2',['fmat2x2',['../a00304.html#ga3350c93c3275298f940a42875388e4b4',1,'glm']]], ['fmat2x3',['fmat2x3',['../a00304.html#ga55a2d2a8eb09b5633668257eb3cad453',1,'glm']]], ['fmat2x4',['fmat2x4',['../a00304.html#ga681381f19f11c9e5ee45cda2c56937ff',1,'glm']]], ['fmat3',['fmat3',['../a00304.html#ga253d453c20e037730023fea0215cb6f6',1,'glm']]], ['fmat3x2',['fmat3x2',['../a00304.html#ga6af54d70d9beb0a7ef992a879e86b04f',1,'glm']]], ['fmat3x3',['fmat3x3',['../a00304.html#gaa07c86650253672a19dbfb898f3265b8',1,'glm']]], ['fmat3x4',['fmat3x4',['../a00304.html#ga44e158af77a670ee1b58c03cda9e1619',1,'glm']]], ['fmat4',['fmat4',['../a00304.html#ga8cb400c0f4438f2640035d7b9824a0ca',1,'glm']]], ['fmat4x2',['fmat4x2',['../a00304.html#ga8c8aa45aafcc23238edb1d5aeb801774',1,'glm']]], ['fmat4x3',['fmat4x3',['../a00304.html#ga4295048a78bdf46b8a7de77ec665b497',1,'glm']]], ['fmat4x4',['fmat4x4',['../a00304.html#gad01cc6479bde1fd1870f13d3ed9530b3',1,'glm']]], ['fmax',['fmax',['../a00258.html#ga36920478565cf608e93064283ce06421',1,'glm::fmax(T a, T b)'],['../a00258.html#ga0007bba71ca451ac70e99d28dfbeaab9',1,'glm::fmax(T a, T b, T C)'],['../a00258.html#ga27e260b1ff4d04c3ad4b864d26cbaf08',1,'glm::fmax(T a, T b, T C, T D)'],['../a00267.html#gad66b6441f7200db16c9f341711733c56',1,'glm::fmax(vec< L, T, Q > const &a, T b)'],['../a00267.html#ga8df4be3f48d6717c40ea788fd30deebf',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b)'],['../a00267.html#ga0f04ba924294dae4234ca93ede23229a',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4ed3eb250ccbe17bfe8ded8a6b72d230',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gae5792cb2b51190057e4aea027eb56f81',1,'glm::fmax(genType x, genType y)']]], ['fmin',['fmin',['../a00258.html#ga7b2b438a765e2a62098c79eb212f28f0',1,'glm::fmin(T a, T b)'],['../a00258.html#ga1a95fe4cf5437e8133f1093fe9726a64',1,'glm::fmin(T a, T b, T c)'],['../a00258.html#ga3d6f9c6c16bfd6f38f2c4f8076e8b661',1,'glm::fmin(T a, T b, T c, T d)'],['../a00267.html#gae989203363cff9eab5093630df4fe071',1,'glm::fmin(vec< L, T, Q > const &x, T y)'],['../a00267.html#ga7c42e93cd778c9181d1cdeea4d3e43bd',1,'glm::fmin(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00267.html#ga7e62739055b49189d9355471f78fe000',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4a543dd7d22ad1f3b8b839f808a9d93c',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gaa3200559611ac5b9b9ae7283547916a7',1,'glm::fmin(genType x, genType y)']]], ['fmod',['fmod',['../a00314.html#gae5e80425df9833164ad469e83b475fb4',1,'glm']]], ['four_5fover_5fpi',['four_over_pi',['../a00290.html#ga753950e5140e4ea6a88e4a18ba61dc09',1,'glm']]], ['fract',['fract',['../a00241.html#ga8ba89e40e55ae5cdf228548f9b7639c7',1,'glm::fract(genType x)'],['../a00241.html#ga2df623004f634b440d61e018d62c751b',1,'glm::fract(vec< L, T, Q > const &x)']]], ['frexp',['frexp',['../a00241.html#gaddf5ef73283c171730e0bcc11833fa81',1,'glm']]], ['frustum',['frustum',['../a00243.html#ga0bcd4542e0affc63a0b8c08fcb839ea9',1,'glm']]], ['frustumlh',['frustumLH',['../a00243.html#gae4277c37f61d81da01bc9db14ea90296',1,'glm']]], ['frustumlh_5fno',['frustumLH_NO',['../a00243.html#ga259520cad03b3f8bca9417920035ed01',1,'glm']]], ['frustumlh_5fzo',['frustumLH_ZO',['../a00243.html#ga94218b094862d17798370242680b9030',1,'glm']]], ['frustumno',['frustumNO',['../a00243.html#gae34ec664ad44860bf4b5ba631f0e0e90',1,'glm']]], ['frustumrh',['frustumRH',['../a00243.html#ga4366ab45880c6c5f8b3e8c371ca4b136',1,'glm']]], ['frustumrh_5fno',['frustumRH_NO',['../a00243.html#ga9236c8439f21be186b79c97b588836b9',1,'glm']]], ['frustumrh_5fzo',['frustumRH_ZO',['../a00243.html#ga7654a9227f14d5382786b9fc0eb5692d',1,'glm']]], ['frustumzo',['frustumZO',['../a00243.html#gaa73322e152edf50cf30a6edac342a757',1,'glm']]], ['functions_2ehpp',['functions.hpp',['../a00034.html',1,'']]], ['fvec1',['fvec1',['../a00304.html#ga98b9ed43cf8c5cf1d354b23c7df9119f',1,'glm']]], ['fvec2',['fvec2',['../a00304.html#ga24273aa02abaecaab7f160bac437a339',1,'glm']]], ['fvec3',['fvec3',['../a00304.html#ga89930533646b30d021759298aa6bf04a',1,'glm']]], ['fvec4',['fvec4',['../a00304.html#ga713c796c54875cf4092d42ff9d9096b0',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_6.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_6.js ================================================ var searchData= [ ['color_5fspace_2ehpp',['color_space.hpp',['../a00012.html',1,'']]], ['color_5fspace_2ehpp',['color_space.hpp',['../a00013.html',1,'']]], ['common_2ehpp',['common.hpp',['../a00016.html',1,'']]], ['geometric_20functions',['Geometric functions',['../a00279.html',1,'']]], ['glm_5fext_5fmatrix_5fclip_5fspace',['GLM_EXT_matrix_clip_space',['../a00243.html',1,'']]], ['glm_5fext_5fmatrix_5fcommon',['GLM_EXT_matrix_common',['../a00244.html',1,'']]], ['glm_5fext_5fmatrix_5fprojection',['GLM_EXT_matrix_projection',['../a00245.html',1,'']]], ['glm_5fext_5fmatrix_5frelational',['GLM_EXT_matrix_relational',['../a00246.html',1,'']]], ['glm_5fext_5fmatrix_5ftransform',['GLM_EXT_matrix_transform',['../a00247.html',1,'']]], ['glm_5fext_5fquaternion_5fcommon',['GLM_EXT_quaternion_common',['../a00248.html',1,'']]], ['glm_5fext_5fquaternion_5fdouble',['GLM_EXT_quaternion_double',['../a00249.html',1,'']]], ['glm_5fext_5fquaternion_5fdouble_5fprecision',['GLM_EXT_quaternion_double_precision',['../a00250.html',1,'']]], ['glm_5fext_5fquaternion_5fexponential',['GLM_EXT_quaternion_exponential',['../a00251.html',1,'']]], ['glm_5fext_5fquaternion_5ffloat',['GLM_EXT_quaternion_float',['../a00252.html',1,'']]], ['glm_5fext_5fquaternion_5ffloat_5fprecision',['GLM_EXT_quaternion_float_precision',['../a00253.html',1,'']]], ['glm_5fext_5fquaternion_5fgeometric',['GLM_EXT_quaternion_geometric',['../a00254.html',1,'']]], ['glm_5fext_5fquaternion_5frelational',['GLM_EXT_quaternion_relational',['../a00255.html',1,'']]], ['glm_5fext_5fquaternion_5ftransform',['GLM_EXT_quaternion_transform',['../a00256.html',1,'']]], ['glm_5fext_5fquaternion_5ftrigonometric',['GLM_EXT_quaternion_trigonometric',['../a00257.html',1,'']]], ['glm_5fext_5fscalar_5fcommon',['GLM_EXT_scalar_common',['../a00258.html',1,'']]], ['glm_5fext_5fscalar_5fconstants',['GLM_EXT_scalar_constants',['../a00259.html',1,'']]], ['glm_5fext_5fscalar_5fint_5fsized',['GLM_EXT_scalar_int_sized',['../a00260.html',1,'']]], ['glm_5fext_5fscalar_5finteger',['GLM_EXT_scalar_integer',['../a00261.html',1,'']]], ['glm_5fext_5fscalar_5frelational',['GLM_EXT_scalar_relational',['../a00262.html',1,'']]], ['glm_5fext_5fscalar_5fuint_5fsized',['GLM_EXT_scalar_uint_sized',['../a00263.html',1,'']]], ['glm_5fext_5fscalar_5fulp',['GLM_EXT_scalar_ulp',['../a00264.html',1,'']]], ['glm_5fext_5fvector_5fbool1',['GLM_EXT_vector_bool1',['../a00265.html',1,'']]], ['glm_5fext_5fvector_5fbool1_5fprecision',['GLM_EXT_vector_bool1_precision',['../a00266.html',1,'']]], ['glm_5fext_5fvector_5fcommon',['GLM_EXT_vector_common',['../a00267.html',1,'']]], ['glm_5fext_5fvector_5fdouble1',['GLM_EXT_vector_double1',['../a00268.html',1,'']]], ['glm_5fext_5fvector_5fdouble1_5fprecision',['GLM_EXT_vector_double1_precision',['../a00269.html',1,'']]], ['glm_5fext_5fvector_5ffloat1',['GLM_EXT_vector_float1',['../a00270.html',1,'']]], ['glm_5fext_5fvector_5ffloat1_5fprecision',['GLM_EXT_vector_float1_precision',['../a00271.html',1,'']]], ['glm_5fext_5fvector_5fint1',['GLM_EXT_vector_int1',['../a00272.html',1,'']]], ['glm_5fext_5fvector_5fint1_5fprecision',['GLM_EXT_vector_int1_precision',['../a00273.html',1,'']]], ['glm_5fext_5fvector_5finteger',['GLM_EXT_vector_integer',['../a00274.html',1,'']]], ['glm_5fext_5fvector_5frelational',['GLM_EXT_vector_relational',['../a00275.html',1,'']]], ['glm_5fext_5fvector_5fuint1',['GLM_EXT_vector_uint1',['../a00276.html',1,'']]], ['glm_5fext_5fvector_5fuint1_5fprecision',['GLM_EXT_vector_uint1_precision',['../a00277.html',1,'']]], ['glm_5fext_5fvector_5fulp',['GLM_EXT_vector_ulp',['../a00278.html',1,'']]], ['gauss',['gauss',['../a00326.html#ga0b50b197ff74261a0fad90f4b8d24702',1,'glm::gauss(T x, T ExpectedValue, T StandardDeviation)'],['../a00326.html#gad19ec8754a83c0b9a8dc16b7e60705ab',1,'glm::gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)']]], ['gaussrand',['gaussRand',['../a00300.html#ga5193a83e49e4fdc5652c084711083574',1,'glm']]], ['geometric_2ehpp',['geometric.hpp',['../a00036.html',1,'']]], ['glm_2ehpp',['glm.hpp',['../a00037.html',1,'']]], ['glm_5faligned_5ftypedef',['GLM_ALIGNED_TYPEDEF',['../a00364.html#gab5cd5c5fad228b25c782084f1cc30114',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1)'],['../a00364.html#ga5bb5dd895ef625c1b113f2cf400186b0',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2)'],['../a00364.html#gac6efa54cf7c6c86f7158922abdb1a430',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4)'],['../a00364.html#ga6612eb77c8607048e7552279a11eeb5f',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8)'],['../a00364.html#ga7ddc1848ff2223026db8968ce0c97497',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1)'],['../a00364.html#ga22240dd9458b0f8c11fbcc4f48714f68',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2)'],['../a00364.html#ga8130ea381d76a2cc34a93ccbb6cf487d',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4)'],['../a00364.html#ga7ccb60f3215d293fd62b33b31ed0e7be',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8)'],['../a00364.html#gac20d508d2ef5cc95ad3daf083c57ec2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1)'],['../a00364.html#ga50257b48069a31d0c8d9c1f644d267de',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2)'],['../a00364.html#gaa07e98e67b7a3435c0746018c7a2a839',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4)'],['../a00364.html#ga62601fc6f8ca298b77285bedf03faffd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8)'],['../a00364.html#gac8cff825951aeb54dd846037113c72db',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1)'],['../a00364.html#ga78f443d88f438575a62b5df497cdf66b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2)'],['../a00364.html#ga0680cd3b5d4e8006985fb41a4f9b57af',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4)'],['../a00364.html#gad9e5babb1dd3e3531b42c37bf25dd951',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8)'],['../a00364.html#ga353fd9fa8a9ad952fcabd0d53ad9a6dd',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1)'],['../a00364.html#ga2196442c0e5c5e8c77842de388c42521',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2)'],['../a00364.html#ga1284488189daf897cf095c5eefad9744',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4)'],['../a00364.html#ga73fdc86a539808af58808b7c60a1c4d8',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8)'],['../a00364.html#gafafeea923e1983262c972e2b83922d3b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1)'],['../a00364.html#ga4b35ca5fe8f55c9d2fe54fdb8d8896f4',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2)'],['../a00364.html#ga63b882e29170d428463d99c3d630acc6',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4)'],['../a00364.html#ga8b20507bb048c1edea2d441cc953e6f0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8)'],['../a00364.html#ga56c5ca60813027b603c7b61425a0479d',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1)'],['../a00364.html#ga7a751b3aff24c0259f4a7357c2969089',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2)'],['../a00364.html#ga70cd2144351c556469ee6119e59971fc',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4)'],['../a00364.html#ga46bbf08dc004d8c433041e0b5018a5d3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8)'],['../a00364.html#gab3e10c77a20d1abad2de1c561c7a5c18',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1)'],['../a00364.html#ga968f30319ebeaca9ebcd3a25a8e139fb',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2)'],['../a00364.html#gaae773c28e6390c6aa76f5b678b7098a3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4)'],['../a00364.html#ga790cfff1ca39d0ed696ffed980809311',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8)'],['../a00364.html#ga8265b91eb23c120a9b0c3e381bc37b96',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1)'],['../a00364.html#gae6d384de17588d8edb894fbe06e0d410',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2)'],['../a00364.html#ga9c8172b745ee03fc5b2b91c350c2922f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4)'],['../a00364.html#ga77e0dff12aa4020ddc3f8cabbea7b2e6',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8)'],['../a00364.html#gabd82b9faa9d4d618dbbe0fc8a1efee63',1,'glm::GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1)'],['../a00364.html#ga285649744560be21000cfd81bbb5d507',1,'glm::GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2)'],['../a00364.html#ga07732da630b2deda428ce95c0ecaf3ff',1,'glm::GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4)'],['../a00364.html#ga1a8da2a8c51f69c07a2e7f473aa420f4',1,'glm::GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8)'],['../a00364.html#ga848aedf13e2d9738acf0bb482c590174',1,'glm::GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1)'],['../a00364.html#gafd2803d39049dd45a37a63931e25d943',1,'glm::GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2)'],['../a00364.html#gae553b33349d6da832cf0724f1e024094',1,'glm::GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4)'],['../a00364.html#ga16d223a2b3409e812e1d3bd87f0e9e5c',1,'glm::GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8)'],['../a00364.html#ga2de065d2ddfdb366bcd0febca79ae2ad',1,'glm::GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1)'],['../a00364.html#gabd786bdc20a11c8cb05c92c8212e28d3',1,'glm::GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2)'],['../a00364.html#gad4aefe56691cdb640c72f0d46d3fb532',1,'glm::GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4)'],['../a00364.html#ga8fe9745f7de24a8394518152ff9fccdc',1,'glm::GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8)'],['../a00364.html#gaaad735483450099f7f882d4e3a3569bd',1,'glm::GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4)'],['../a00364.html#gac7b6f823802edbd6edbaf70ea25bf068',1,'glm::GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8)'],['../a00364.html#ga3e235bcd2b8029613f25b8d40a2d3ef7',1,'glm::GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16)'],['../a00364.html#ga50d8a9523968c77f8325b4c9bfbff41e',1,'glm::GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16)'],['../a00364.html#ga9ec20fdfb729c702032da9378c79679f',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1)'],['../a00364.html#ga25b3fe1d9e8d0a5e86c1949c1acd8131',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2)'],['../a00364.html#ga2958f907719d94d8109b562540c910e2',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4)'],['../a00364.html#ga1fe6fc032a978f1c845fac9aa0668714',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4)'],['../a00364.html#gaa4161e7a496dc96972254143fe873e55',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2)'],['../a00364.html#ga9d7cb211ccda69b1c22ddeeb0f3e7aba',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4)'],['../a00364.html#gaaee91dd2ab34423bcc11072ef6bd0f02',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8)'],['../a00364.html#ga49f047ccaa8b31fad9f26c67bf9b3510',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8)'],['../a00364.html#ga904e9c2436bb099397c0823506a0771f',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4)'],['../a00364.html#gaf90651cf2f5e7ee2b11cfdc5a6749534',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8)'],['../a00364.html#ga7354a4ead8cb17868aec36b9c30d6010',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16)'],['../a00364.html#gad2ecbdea18732163e2636e27b37981ee',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16)'],['../a00364.html#ga965b1c9aa1800e93d4abc2eb2b5afcbf',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8)'],['../a00364.html#ga1f9e9c2ea2768675dff9bae5cde2d829',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16)'],['../a00364.html#gad77c317b7d942322cd5be4c8127b3187',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32)'],['../a00364.html#ga716f8ea809bdb11b5b542d8b71aeb04f',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32)'],['../a00364.html#gad46f8e9082d5878b1bc04f9c1471cdaa',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1)'],['../a00364.html#ga1246094581af624aca6c7499aaabf801',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2)'],['../a00364.html#ga7a5009a1d0196bbf21dd7518f61f0249',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4)'],['../a00364.html#ga45213fd18b3bb1df391671afefe4d1e7',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8)'],['../a00364.html#ga0ba26b4e3fd9ecbc25358efd68d8a4ca',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1)'],['../a00364.html#gaf2b58f5fb6d4ec8ce7b76221d3af43e1',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2)'],['../a00364.html#gadc246401847dcba155f0699425e49dcd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4)'],['../a00364.html#gaace64bddf51a9def01498da9a94fb01c',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8)'],['../a00364.html#gad7bb97c29d664bd86ffb1bed4abc5534',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1)'],['../a00364.html#ga404bba7785130e0b1384d695a9450b28',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2)'],['../a00364.html#ga31ba41fd896257536958ec6080203d2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4)'],['../a00364.html#gacca5f13627f57b3505676e40a6e43e5e',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8)'],['../a00364.html#ga5faf1d3e70bf33174dd7f3d01d5b883b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1)'],['../a00364.html#ga727e2bf2c433bb3b0182605860a48363',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2)'],['../a00364.html#ga12566ca66d5962dadb4a5eb4c74e891e',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4)'],['../a00364.html#ga7b66a97a8acaa35c5a377b947318c6bc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8)'],['../a00364.html#gaa9cde002439b74fa66120a16a9f55fcc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1)'],['../a00364.html#ga1ca98c67f7d1e975f7c5202f1da1df1f',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2)'],['../a00364.html#ga1dc8bc6199d785f235576948d80a597c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4)'],['../a00364.html#gad14a0f2ec93519682b73d70b8e401d81',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8)'],['../a00364.html#gada8b996eb6526dc1ead813bd49539d1b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1)'],['../a00364.html#ga28948f6bfb52b42deb9d73ae1ea8d8b0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2)'],['../a00364.html#gad6a7c0b5630f89d3f1c5b4ef2919bb4c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4)'],['../a00364.html#gaa0fc531cbaa972ac3a0b86d21ef4a7fa',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8)'],['../a00364.html#ga0ee829f7b754b262bbfe6317c0d678ac',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1)'],['../a00364.html#ga447848a817a626cae08cedc9778b331c',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2)'],['../a00364.html#ga6027ae13b2734f542a6e7beee11b8820',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4)'],['../a00364.html#ga2aca46c8608c95ef991ee4c332acde5f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8)'],['../a00364.html#gaff50b10dd1c48be324fdaffd18e2c7ea',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1)'],['../a00364.html#ga9fc4421dbb833d5461e6d4e59dcfde55',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2)'],['../a00364.html#ga329f1e2b94b33ba5e3918197030bcf03',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4)'],['../a00364.html#ga71e646f7e301aa422328194162c9c998',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8)'],['../a00364.html#ga8942e09f479489441a7a5004c6d8cb66',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1)'],['../a00364.html#gaab32497d6e4db16ee439dbedd64c5865',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2)'],['../a00364.html#gaaadbb34952eca8e3d7fe122c3e167742',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4)'],['../a00364.html#ga92024d27c74a3650afb55ec8e024ed25',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8)'],['../a00364.html#gabde1d0b4072df35453db76075ab896a6',1,'glm::GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1)'],['../a00364.html#ga06c296c9e398b294c8c9dd2a7693dcbb',1,'glm::GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2)'],['../a00364.html#gacf1744488c96ebd33c9f36ad33b2010a',1,'glm::GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4)'],['../a00364.html#ga3328061a64c20ba59d5f9da24c2cd059',1,'glm::GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8)'],['../a00364.html#gaf6ced36f13bae57f377bafa6f5fcc299',1,'glm::GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1)'],['../a00364.html#gafbc7fb7847bfc78a339d1d371c915c73',1,'glm::GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2)'],['../a00364.html#gaa86bc56a73fd8120b1121b5f5e6245ae',1,'glm::GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4)'],['../a00364.html#ga68c0b9e669060d0eb5ab8c3ddeb483d8',1,'glm::GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8)'],['../a00364.html#ga4f3bab577daf3343e99cc005134bce86',1,'glm::GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1)'],['../a00364.html#ga13a2391339d0790d43b76d00a7611c4f',1,'glm::GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2)'],['../a00364.html#ga197570e03acbc3d18ab698e342971e8f',1,'glm::GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4)'],['../a00364.html#ga0f033b21e145a1faa32c62ede5878993',1,'glm::GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8)'],['../a00364.html#ga509af83527f5cd512e9a7873590663aa',1,'glm::GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4)'],['../a00364.html#ga94e86186978c502c6dc0c0d9c4a30679',1,'glm::GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8)'],['../a00364.html#ga5cec574686a7f3c8ed24bb195c5e2d0a',1,'glm::GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16)'],['../a00364.html#ga47edfdcee9c89b1ebdaf20450323b1d4',1,'glm::GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16)'],['../a00364.html#ga5611d6718e3a00096918a64192e73a45',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1)'],['../a00364.html#ga19837e6f72b60d994a805ef564c6c326',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2)'],['../a00364.html#ga9740cf8e34f068049b42a2753f9601c2',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4)'],['../a00364.html#ga8b8588bb221448f5541a858903822a57',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4)'],['../a00364.html#ga991abe990c16de26b2129d6bc2f4c051',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2)'],['../a00364.html#gac01bb9fc32a1cd76c2b80d030f71df4c',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4)'],['../a00364.html#ga09540dbca093793a36a8997e0d4bee77',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8)'],['../a00364.html#gaecafb5996f5a44f57e34d29c8670741e',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8)'],['../a00364.html#gac6b161a04d2f8408fe1c9d857e8daac0',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4)'],['../a00364.html#ga1fa0dfc8feb0fa17dab2acd43e05342b',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8)'],['../a00364.html#ga0019500abbfa9c66eff61ca75eaaed94',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16)'],['../a00364.html#ga14fd29d01dae7b08a04e9facbcc18824',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16)'],['../a00364.html#gab253845f534a67136f9619843cade903',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8)'],['../a00364.html#ga929427a7627940cdf3304f9c050b677d',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16)'],['../a00364.html#gae373b6c04fdf9879f33d63e6949c037e',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32)'],['../a00364.html#ga53a8a03dca2015baec4584f45b8e9cdc',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32)'],['../a00364.html#gab3301bae94ef5bf59fbdd9a24e7d2a01',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4)'],['../a00364.html#gada9b0bea273d3ae0286f891533b9568f',1,'glm::GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4)'],['../a00364.html#gadbce23b9f23d77bb3884e289a574ebd5',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4)'],['../a00364.html#ga75930684ff2233171c573e603f216162',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8)'],['../a00364.html#ga6e3a2d83b131336219a0f4c7cbba2a48',1,'glm::GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8)'],['../a00364.html#gaa4deaa0dea930c393d55e7a4352b0a20',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8)'],['../a00364.html#ga81bc497b2bfc6f80bab690c6ee28f0f9',1,'glm::GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4)'],['../a00364.html#gada3e8f783e9d4b90006695a16c39d4d4',1,'glm::GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8)'],['../a00364.html#gab8d081fac3a38d6f55fa552f32168d32',1,'glm::GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16)'],['../a00364.html#ga12fe7b9769c964c5b48dcfd8b7f40198',1,'glm::GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16)'],['../a00364.html#gaefab04611c7f8fe1fd9be3071efea6cc',1,'glm::GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4)'],['../a00364.html#ga2543c05ba19b3bd19d45b1227390c5b4',1,'glm::GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8)'],['../a00364.html#ga009afd727fd657ef33a18754d6d28f60',1,'glm::GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16)'],['../a00364.html#ga2f26177e74bfb301a3d0e02ec3c3ef53',1,'glm::GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16)'],['../a00364.html#ga309f495a1d6b75ddf195b674b65cb1e4',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4)'],['../a00364.html#ga5e185865a2217d0cd47187644683a8c3',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8)'],['../a00364.html#gade4458b27b039b9ca34f8ec049f3115a',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16)'],['../a00364.html#ga2e8a12c5e6a9c4ae4ddaeda1d1cffe3b',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16)'],['../a00364.html#ga3e0f35fa0c626285a8bad41707e7316c',1,'glm::GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8)'],['../a00364.html#ga78bfec2f185d1d365ea0a9ef1e3d45b8',1,'glm::GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16)'],['../a00364.html#ga01fe6fee6db5df580b6724a7e681f069',1,'glm::GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32)'],['../a00364.html#ga687d5b8f551d5af32425c0b2fba15e99',1,'glm::GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32)'],['../a00364.html#ga8e842371d46842ff8f1813419ba49d0f',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8)'],['../a00364.html#ga32814aa0f19316b43134fc25f2aad2b9',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16)'],['../a00364.html#gaf3d3bbc1e93909b689123b085e177a14',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32)'],['../a00364.html#ga804c654cead1139bd250f90f9bb01fad',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32)'],['../a00364.html#gacce4ac532880b8c7469d3c31974420a1',1,'glm::GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16)'],['../a00364.html#ga0498e0e249a6faddaf96aa55d7f81c3b',1,'glm::GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16)'],['../a00364.html#ga7435d87de82a0d652b35dc5b9cc718d5',1,'glm::GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16)'],['../a00364.html#ga719da577361541a4c43a2dd1d0e361e1',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16)'],['../a00364.html#ga6e7ee4f541e1d7db66cd1a224caacafb',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16)'],['../a00364.html#gae5d672d359f2a39f63f98c7975057486',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16)'],['../a00364.html#ga6fa2df037dbfc5fe8c8e0b4db8a34953',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16)'],['../a00364.html#ga0743b4f4f69a3227b82ff58f6abbad62',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16)'],['../a00364.html#ga1a76b325fdf70f961d835edd182c63dd',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16)'],['../a00364.html#ga4b4e181cd041ba28c3163e7b8074aef0',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16)'],['../a00364.html#ga27b13f465abc8a40705698145e222c3f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16)'],['../a00364.html#ga2608d19cc275830a6f8c0b6405625a4f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16)'],['../a00364.html#ga93f09768241358a287c4cca538f1f7e7',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16)'],['../a00364.html#ga7c117e3ecca089e10247b1d41d88aff9',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16)'],['../a00364.html#ga07c75cd04ba42dc37fa3e105f89455c5',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16)'],['../a00364.html#ga65ff0d690a34a4d7f46f9b2eb51525ee',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16)'],['../a00364.html#gadd8ddbe2bf65ccede865ba2f510176dc',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16)'],['../a00364.html#gaf18dbff14bf13d3ff540c517659ec045',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16)'],['../a00364.html#ga66339f6139bf7ff19e245beb33f61cc8',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16)'],['../a00364.html#ga1558a48b3934011b52612809f443e46d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16)'],['../a00364.html#gaa52e5732daa62851627021ad551c7680',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16)'],['../a00364.html#gac09663c42566bcb58d23c6781ac4e85a',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16)'],['../a00364.html#ga3f510999e59e1b309113e1d561162b29',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16)'],['../a00364.html#ga2c9c94f0c89cd71ce56551db6cf4aaec',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16)'],['../a00364.html#ga99ce8274c750fbfdf0e70c95946a2875',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16)'],['../a00364.html#ga9476ef66790239df53dbe66f3989c3b5',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16)'],['../a00364.html#gacc429b3b0b49921e12713b6d31e14e1d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16)'],['../a00364.html#ga88f6c6fa06e6e64479763e69444669cf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32)'],['../a00364.html#gaae8e4639c991e64754145ab8e4c32083',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32)'],['../a00364.html#ga6e9094f3feb3b5b49d0f83683a101fde',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32)'],['../a00364.html#gadbd2c639c03de1c3e9591b5a39f65559',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32)'],['../a00364.html#gab059d7b9fe2094acc563b7223987499f',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32)'],['../a00364.html#gabbc811d1c52ed2b8cfcaff1378f75c69',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32)'],['../a00364.html#ga9ddf5212777734d2fd841a84439f3bdf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32)'],['../a00364.html#gad1dda32ed09f94bfcf0a7d8edfb6cf13',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32)'],['../a00364.html#ga5875e0fa72f07e271e7931811cbbf31a',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32)'],['../a00364.html#ga41e82cd6ac07f912ba2a2d45799dcf0d',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32)'],['../a00364.html#ga0892638d6ba773043b3d63d1d092622e',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32)'],['../a00364.html#ga912a16432608b822f1e13607529934c1',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32)'],['../a00364.html#gafd945a8ea86b042aba410e0560df9a3d',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16)'],['../a00364.html#ga19c2ba545d1f2f36bcb7b60c9a228622',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16)'],['../a00364.html#gaabc28c84a3288b697605d4688686f9a9',1,'glm::GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32)'],['../a00364.html#ga1ed8aeb5ca67fade269a46105f1bf273',1,'glm::GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16)'],['../a00364.html#ga95cc03b8b475993fa50e05e38e203303',1,'glm::GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)']]], ['golden_5fratio',['golden_ratio',['../a00290.html#ga748cf8642830657c5b7eae04d0a80899',1,'glm']]], ['gradient_5fpaint_2ehpp',['gradient_paint.hpp',['../a00038.html',1,'']]], ['greaterthan',['greaterThan',['../a00299.html#ga8f7fa76e06c417b757ddfd438f3f677b',1,'glm::greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gadfdb8ea82deca869ddc7e63ea5a63ae4',1,'glm::greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['greaterthanequal',['greaterThanEqual',['../a00299.html#ga388cbeba987dae7b5937f742efa49a5a',1,'glm::greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#ga859975f538940f8d18fe62f916b9abd7',1,'glm::greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['glm_5fgtc_5fbitfield',['GLM_GTC_bitfield',['../a00288.html',1,'']]], ['glm_5fgtc_5fcolor_5fspace',['GLM_GTC_color_space',['../a00289.html',1,'']]], ['glm_5fgtc_5fconstants',['GLM_GTC_constants',['../a00290.html',1,'']]], ['glm_5fgtc_5fepsilon',['GLM_GTC_epsilon',['../a00291.html',1,'']]], ['glm_5fgtc_5finteger',['GLM_GTC_integer',['../a00292.html',1,'']]], ['glm_5fgtc_5fmatrix_5faccess',['GLM_GTC_matrix_access',['../a00293.html',1,'']]], ['glm_5fgtc_5fmatrix_5finteger',['GLM_GTC_matrix_integer',['../a00294.html',1,'']]], ['glm_5fgtc_5fmatrix_5finverse',['GLM_GTC_matrix_inverse',['../a00295.html',1,'']]], ['glm_5fgtc_5fmatrix_5ftransform',['GLM_GTC_matrix_transform',['../a00296.html',1,'']]], ['glm_5fgtc_5fnoise',['GLM_GTC_noise',['../a00297.html',1,'']]], ['glm_5fgtc_5fpacking',['GLM_GTC_packing',['../a00298.html',1,'']]], ['glm_5fgtc_5fquaternion',['GLM_GTC_quaternion',['../a00299.html',1,'']]], ['glm_5fgtc_5frandom',['GLM_GTC_random',['../a00300.html',1,'']]], ['glm_5fgtc_5freciprocal',['GLM_GTC_reciprocal',['../a00301.html',1,'']]], ['glm_5fgtc_5fround',['GLM_GTC_round',['../a00302.html',1,'']]], ['glm_5fgtc_5ftype_5faligned',['GLM_GTC_type_aligned',['../a00303.html',1,'']]], ['glm_5fgtc_5ftype_5fprecision',['GLM_GTC_type_precision',['../a00304.html',1,'']]], ['glm_5fgtc_5ftype_5fptr',['GLM_GTC_type_ptr',['../a00305.html',1,'']]], ['glm_5fgtc_5fulp',['GLM_GTC_ulp',['../a00306.html',1,'']]], ['glm_5fgtc_5fvec1',['GLM_GTC_vec1',['../a00307.html',1,'']]], ['glm_5fgtx_5fassociated_5fmin_5fmax',['GLM_GTX_associated_min_max',['../a00308.html',1,'']]], ['glm_5fgtx_5fbit',['GLM_GTX_bit',['../a00309.html',1,'']]], ['glm_5fgtx_5fclosest_5fpoint',['GLM_GTX_closest_point',['../a00310.html',1,'']]], ['glm_5fgtx_5fcolor_5fencoding',['GLM_GTX_color_encoding',['../a00311.html',1,'']]], ['glm_5fgtx_5fcolor_5fspace',['GLM_GTX_color_space',['../a00312.html',1,'']]], ['glm_5fgtx_5fcolor_5fspace_5fycocg',['GLM_GTX_color_space_YCoCg',['../a00313.html',1,'']]], ['glm_5fgtx_5fcommon',['GLM_GTX_common',['../a00314.html',1,'']]], ['glm_5fgtx_5fcompatibility',['GLM_GTX_compatibility',['../a00315.html',1,'']]], ['glm_5fgtx_5fcomponent_5fwise',['GLM_GTX_component_wise',['../a00316.html',1,'']]], ['glm_5fgtx_5fdual_5fquaternion',['GLM_GTX_dual_quaternion',['../a00317.html',1,'']]], ['glm_5fgtx_5feasing',['GLM_GTX_easing',['../a00318.html',1,'']]], ['glm_5fgtx_5feuler_5fangles',['GLM_GTX_euler_angles',['../a00319.html',1,'']]], ['glm_5fgtx_5fextend',['GLM_GTX_extend',['../a00320.html',1,'']]], ['glm_5fgtx_5fextented_5fmin_5fmax',['GLM_GTX_extented_min_max',['../a00321.html',1,'']]], ['glm_5fgtx_5fexterior_5fproduct',['GLM_GTX_exterior_product',['../a00322.html',1,'']]], ['glm_5fgtx_5ffast_5fexponential',['GLM_GTX_fast_exponential',['../a00323.html',1,'']]], ['glm_5fgtx_5ffast_5fsquare_5froot',['GLM_GTX_fast_square_root',['../a00324.html',1,'']]], ['glm_5fgtx_5ffast_5ftrigonometry',['GLM_GTX_fast_trigonometry',['../a00325.html',1,'']]], ['glm_5fgtx_5ffunctions',['GLM_GTX_functions',['../a00326.html',1,'']]], ['glm_5fgtx_5fgradient_5fpaint',['GLM_GTX_gradient_paint',['../a00327.html',1,'']]], ['glm_5fgtx_5fhanded_5fcoordinate_5fspace',['GLM_GTX_handed_coordinate_space',['../a00328.html',1,'']]], ['glm_5fgtx_5fhash',['GLM_GTX_hash',['../a00329.html',1,'']]], ['glm_5fgtx_5finteger',['GLM_GTX_integer',['../a00330.html',1,'']]], ['glm_5fgtx_5fintersect',['GLM_GTX_intersect',['../a00331.html',1,'']]], ['glm_5fgtx_5fio',['GLM_GTX_io',['../a00332.html',1,'']]], ['glm_5fgtx_5flog_5fbase',['GLM_GTX_log_base',['../a00333.html',1,'']]], ['glm_5fgtx_5fmatrix_5fcross_5fproduct',['GLM_GTX_matrix_cross_product',['../a00334.html',1,'']]], ['glm_5fgtx_5fmatrix_5fdecompose',['GLM_GTX_matrix_decompose',['../a00335.html',1,'']]], ['glm_5fgtx_5fmatrix_5ffactorisation',['GLM_GTX_matrix_factorisation',['../a00336.html',1,'']]], ['glm_5fgtx_5fmatrix_5finterpolation',['GLM_GTX_matrix_interpolation',['../a00337.html',1,'']]], ['glm_5fgtx_5fmatrix_5fmajor_5fstorage',['GLM_GTX_matrix_major_storage',['../a00338.html',1,'']]], ['glm_5fgtx_5fmatrix_5foperation',['GLM_GTX_matrix_operation',['../a00339.html',1,'']]], ['glm_5fgtx_5fmatrix_5fquery',['GLM_GTX_matrix_query',['../a00340.html',1,'']]], ['glm_5fgtx_5fmatrix_5ftransform_5f2d',['GLM_GTX_matrix_transform_2d',['../a00341.html',1,'']]], ['glm_5fgtx_5fmixed_5fproducte',['GLM_GTX_mixed_producte',['../a00342.html',1,'']]], ['glm_5fgtx_5fnorm',['GLM_GTX_norm',['../a00343.html',1,'']]], ['glm_5fgtx_5fnormal',['GLM_GTX_normal',['../a00344.html',1,'']]], ['glm_5fgtx_5fnormalize_5fdot',['GLM_GTX_normalize_dot',['../a00345.html',1,'']]], ['glm_5fgtx_5fnumber_5fprecision',['GLM_GTX_number_precision',['../a00346.html',1,'']]], ['glm_5fgtx_5foptimum_5fpow',['GLM_GTX_optimum_pow',['../a00347.html',1,'']]], ['glm_5fgtx_5forthonormalize',['GLM_GTX_orthonormalize',['../a00348.html',1,'']]], ['glm_5fgtx_5fperpendicular',['GLM_GTX_perpendicular',['../a00349.html',1,'']]], ['glm_5fgtx_5fpolar_5fcoordinates',['GLM_GTX_polar_coordinates',['../a00350.html',1,'']]], ['glm_5fgtx_5fprojection',['GLM_GTX_projection',['../a00351.html',1,'']]], ['glm_5fgtx_5fquaternion',['GLM_GTX_quaternion',['../a00352.html',1,'']]], ['glm_5fgtx_5frange',['GLM_GTX_range',['../a00353.html',1,'']]], ['glm_5fgtx_5fraw_5fdata',['GLM_GTX_raw_data',['../a00354.html',1,'']]], ['glm_5fgtx_5frotate_5fnormalized_5faxis',['GLM_GTX_rotate_normalized_axis',['../a00355.html',1,'']]], ['glm_5fgtx_5frotate_5fvector',['GLM_GTX_rotate_vector',['../a00356.html',1,'']]], ['glm_5fgtx_5fscalar_5frelational',['GLM_GTX_scalar_relational',['../a00357.html',1,'']]], ['glm_5fgtx_5fspline',['GLM_GTX_spline',['../a00358.html',1,'']]], ['glm_5fgtx_5fstd_5fbased_5ftype',['GLM_GTX_std_based_type',['../a00359.html',1,'']]], ['glm_5fgtx_5fstring_5fcast',['GLM_GTX_string_cast',['../a00360.html',1,'']]], ['glm_5fgtx_5ftexture',['GLM_GTX_texture',['../a00361.html',1,'']]], ['glm_5fgtx_5ftransform',['GLM_GTX_transform',['../a00362.html',1,'']]], ['glm_5fgtx_5ftransform2',['GLM_GTX_transform2',['../a00363.html',1,'']]], ['glm_5fgtx_5ftype_5faligned',['GLM_GTX_type_aligned',['../a00364.html',1,'']]], ['glm_5fgtx_5ftype_5ftrait',['GLM_GTX_type_trait',['../a00365.html',1,'']]], ['glm_5fgtx_5fvec_5fswizzle',['GLM_GTX_vec_swizzle',['../a00366.html',1,'']]], ['glm_5fgtx_5fvector_5fangle',['GLM_GTX_vector_angle',['../a00367.html',1,'']]], ['glm_5fgtx_5fvector_5fquery',['GLM_GTX_vector_query',['../a00368.html',1,'']]], ['glm_5fgtx_5fwrap',['GLM_GTX_wrap',['../a00369.html',1,'']]], ['integer_2ehpp',['integer.hpp',['../a00042.html',1,'']]], ['integer_2ehpp',['integer.hpp',['../a00041.html',1,'']]], ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00109.html',1,'']]], ['packing_2ehpp',['packing.hpp',['../a00119.html',1,'']]], ['quaternion_2ehpp',['quaternion.hpp',['../a00126.html',1,'']]], ['quaternion_2ehpp',['quaternion.hpp',['../a00125.html',1,'']]], ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00150.html',1,'']]], ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00161.html',1,'']]], ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00162.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_7.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_7.js ================================================ var searchData= [ ['half_5fpi',['half_pi',['../a00290.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], ['handed_5fcoordinate_5fspace_2ehpp',['handed_coordinate_space.hpp',['../a00039.html',1,'']]], ['hash_2ehpp',['hash.hpp',['../a00040.html',1,'']]], ['hermite',['hermite',['../a00358.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], ['highestbitvalue',['highestBitValue',['../a00309.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00309.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], ['highp_5fbvec1',['highp_bvec1',['../a00266.html#gae8a1e14abae1387274f57741750c06a2',1,'glm']]], ['highp_5fbvec2',['highp_bvec2',['../a00282.html#gac6c781a85f012d77a75310a3058702c2',1,'glm']]], ['highp_5fbvec3',['highp_bvec3',['../a00282.html#gaedb70027d89a0a405046aefda4eabaa6',1,'glm']]], ['highp_5fbvec4',['highp_bvec4',['../a00282.html#gaee663ff64429443ab07a5327074192f6',1,'glm']]], ['highp_5fddualquat',['highp_ddualquat',['../a00317.html#ga8f67eafa7197d7a668dad5105a463d2a',1,'glm']]], ['highp_5fdmat2',['highp_dmat2',['../a00284.html#ga369b447bb1b312449b679ea1f90f3cea',1,'glm']]], ['highp_5fdmat2x2',['highp_dmat2x2',['../a00284.html#gae27ac20302c2e39b6c78e7fe18e62ef7',1,'glm']]], ['highp_5fdmat2x3',['highp_dmat2x3',['../a00284.html#gad4689ec33bc2c26e10132b174b49001a',1,'glm']]], ['highp_5fdmat2x4',['highp_dmat2x4',['../a00284.html#ga5ceeb46670fdc000a0701910cc5061c9',1,'glm']]], ['highp_5fdmat3',['highp_dmat3',['../a00284.html#ga86d6d4dbad92ffdcc759773340e15a97',1,'glm']]], ['highp_5fdmat3x2',['highp_dmat3x2',['../a00284.html#ga3647309010a2160e9ec89bc6f7c95c35',1,'glm']]], ['highp_5fdmat3x3',['highp_dmat3x3',['../a00284.html#gae367ea93c4ad8a7c101dd27b8b2b04ce',1,'glm']]], ['highp_5fdmat3x4',['highp_dmat3x4',['../a00284.html#ga6543eeeb64f48d79a0b96484308c50f0',1,'glm']]], ['highp_5fdmat4',['highp_dmat4',['../a00284.html#ga945254f459860741138bceb74da496b9',1,'glm']]], ['highp_5fdmat4x2',['highp_dmat4x2',['../a00284.html#gaeda1f474c668eaecc443bea85a4a4eca',1,'glm']]], ['highp_5fdmat4x3',['highp_dmat4x3',['../a00284.html#gacf237c2d8832fe8db2d7e187585d34bd',1,'glm']]], ['highp_5fdmat4x4',['highp_dmat4x4',['../a00284.html#ga118d24a3d12c034e7cccef7bf2f01b8a',1,'glm']]], ['highp_5fdquat',['highp_dquat',['../a00250.html#gaf13a25f41afc03480b40fc71bd249cec',1,'glm']]], ['highp_5fdualquat',['highp_dualquat',['../a00317.html#ga9ef5bf1da52a9d4932335a517086ceaf',1,'glm']]], ['highp_5fdvec1',['highp_dvec1',['../a00269.html#ga77c22c4426da3a6865c88d3fc907e3fe',1,'glm']]], ['highp_5fdvec2',['highp_dvec2',['../a00282.html#gab98d77cca255914f5e29697fcbc2d975',1,'glm']]], ['highp_5fdvec3',['highp_dvec3',['../a00282.html#gab24dc20dcdc5b71282634bdbf6b70105',1,'glm']]], ['highp_5fdvec4',['highp_dvec4',['../a00282.html#gab654f4ed4a99d64a6cfc65320c2a7590',1,'glm']]], ['highp_5ff32',['highp_f32',['../a00304.html#ga6906e1ef0b34064b4b675489c5c38725',1,'glm']]], ['highp_5ff32mat2',['highp_f32mat2',['../a00304.html#ga298f7d4d273678d0282812368da27fda',1,'glm']]], ['highp_5ff32mat2x2',['highp_f32mat2x2',['../a00304.html#gae5eb02d92b7d4605a4b7f37ae5cb2968',1,'glm']]], ['highp_5ff32mat2x3',['highp_f32mat2x3',['../a00304.html#ga0aeb5cb001473b08c88175012708a379',1,'glm']]], ['highp_5ff32mat2x4',['highp_f32mat2x4',['../a00304.html#ga88938ee1e7981fa3402e88da6ad74531',1,'glm']]], ['highp_5ff32mat3',['highp_f32mat3',['../a00304.html#ga24f9ef3263b1638564713892cc37981f',1,'glm']]], ['highp_5ff32mat3x2',['highp_f32mat3x2',['../a00304.html#ga36537e701456f12c20e73f469cac4967',1,'glm']]], ['highp_5ff32mat3x3',['highp_f32mat3x3',['../a00304.html#gaab691ae40c37976d268d8cac0096e0e1',1,'glm']]], ['highp_5ff32mat3x4',['highp_f32mat3x4',['../a00304.html#gaa5086dbd6efb272d13fc88829330861d',1,'glm']]], ['highp_5ff32mat4',['highp_f32mat4',['../a00304.html#ga14c90ca49885723f51d06e295587236f',1,'glm']]], ['highp_5ff32mat4x2',['highp_f32mat4x2',['../a00304.html#ga602e119c6b246b4f6edcf66845f2aa0f',1,'glm']]], ['highp_5ff32mat4x3',['highp_f32mat4x3',['../a00304.html#ga66bffdd8e5c0d3ef9958bbab9ca1ba59',1,'glm']]], ['highp_5ff32mat4x4',['highp_f32mat4x4',['../a00304.html#gaf1b712b97b2322685fbbed28febe5f84',1,'glm']]], ['highp_5ff32quat',['highp_f32quat',['../a00304.html#ga4252cf7f5b0e3cd47c3d3badf0ef43b3',1,'glm']]], ['highp_5ff32vec1',['highp_f32vec1',['../a00304.html#gab1b1c9e8667902b78b2c330e4d383a61',1,'glm']]], ['highp_5ff32vec2',['highp_f32vec2',['../a00304.html#ga0b8ebd4262331e139ff257d7cf2a4b77',1,'glm']]], ['highp_5ff32vec3',['highp_f32vec3',['../a00304.html#ga522775dbcc6d96246a1c5cf02344fd8c',1,'glm']]], ['highp_5ff32vec4',['highp_f32vec4',['../a00304.html#ga0f038d4e09862a74f03d102c59eda73e',1,'glm']]], ['highp_5ff64',['highp_f64',['../a00304.html#ga51d5266017d88f62737c1973923a7cf4',1,'glm']]], ['highp_5ff64mat2',['highp_f64mat2',['../a00304.html#gaf7adb92ce8de0afaff01436b039fd924',1,'glm']]], ['highp_5ff64mat2x2',['highp_f64mat2x2',['../a00304.html#ga773ea237a051827cfc20de960bc73ff0',1,'glm']]], ['highp_5ff64mat2x3',['highp_f64mat2x3',['../a00304.html#ga8342c7469384c6d769cacc9e309278d9',1,'glm']]], ['highp_5ff64mat2x4',['highp_f64mat2x4',['../a00304.html#ga5a67a7440b9c0d1538533540f99036a5',1,'glm']]], ['highp_5ff64mat3',['highp_f64mat3',['../a00304.html#ga609bf0ace941d6ab1bb2f9522a04e546',1,'glm']]], ['highp_5ff64mat3x2',['highp_f64mat3x2',['../a00304.html#ga5bdbfb4ce7d05ce1e1b663f50be17e8a',1,'glm']]], ['highp_5ff64mat3x3',['highp_f64mat3x3',['../a00304.html#ga7c2cadb9b85cc7e0d125db21ca19dea4',1,'glm']]], ['highp_5ff64mat3x4',['highp_f64mat3x4',['../a00304.html#gad310b1dddeec9ec837a104e7db8de580',1,'glm']]], ['highp_5ff64mat4',['highp_f64mat4',['../a00304.html#gad308e0ed27d64daa4213fb257fcbd5a5',1,'glm']]], ['highp_5ff64mat4x2',['highp_f64mat4x2',['../a00304.html#ga58c4631421e323e252fc716b6103e38c',1,'glm']]], ['highp_5ff64mat4x3',['highp_f64mat4x3',['../a00304.html#gae94823d65648e44d972863c6caa13103',1,'glm']]], ['highp_5ff64mat4x4',['highp_f64mat4x4',['../a00304.html#ga09a2374b725c4246d263ee36fb66434c',1,'glm']]], ['highp_5ff64quat',['highp_f64quat',['../a00304.html#gafcfdd74a115163af2ce1093551747352',1,'glm']]], ['highp_5ff64vec1',['highp_f64vec1',['../a00304.html#ga62c31b133ceee9984fbee05ac4c434a9',1,'glm']]], ['highp_5ff64vec2',['highp_f64vec2',['../a00304.html#ga670ea1b0a1172bc73b1d7c1e0c26cce2',1,'glm']]], ['highp_5ff64vec3',['highp_f64vec3',['../a00304.html#gacd1196090ece7a69fb5c3e43a7d4d851',1,'glm']]], ['highp_5ff64vec4',['highp_f64vec4',['../a00304.html#ga61185c44c8cc0b25d9a0f67d8a267444',1,'glm']]], ['highp_5ffdualquat',['highp_fdualquat',['../a00317.html#ga4c4e55e9c99dc57b299ed590968da564',1,'glm']]], ['highp_5ffloat32',['highp_float32',['../a00304.html#gac5a7f21136e0a78d0a1b9f60ef2f8aea',1,'glm']]], ['highp_5ffloat32_5ft',['highp_float32_t',['../a00304.html#ga5376ef18dca9d248897c3363ef5a06b2',1,'glm']]], ['highp_5ffloat64',['highp_float64',['../a00304.html#gadbb198a4d7aad82a0f4dc466ef6f6215',1,'glm']]], ['highp_5ffloat64_5ft',['highp_float64_t',['../a00304.html#gaaeeb0077198cff40e3f48b1108ece139',1,'glm']]], ['highp_5ffmat2',['highp_fmat2',['../a00304.html#gae98c88d9a7befa9b5877f49176225535',1,'glm']]], ['highp_5ffmat2x2',['highp_fmat2x2',['../a00304.html#ga28635abcddb2f3e92c33c3f0fcc682ad',1,'glm']]], ['highp_5ffmat2x3',['highp_fmat2x3',['../a00304.html#gacf111095594996fef29067b2454fccad',1,'glm']]], ['highp_5ffmat2x4',['highp_fmat2x4',['../a00304.html#ga4920a1536f161f7ded1d6909b7fef0d2',1,'glm']]], ['highp_5ffmat3',['highp_fmat3',['../a00304.html#gaed2dc69e0d507d4191092dbd44b3eb75',1,'glm']]], ['highp_5ffmat3x2',['highp_fmat3x2',['../a00304.html#gae54e4d1aeb5a0f0c64822e6f1b299e19',1,'glm']]], ['highp_5ffmat3x3',['highp_fmat3x3',['../a00304.html#gaa5b44d3ef6efcf33f44876673a7a936e',1,'glm']]], ['highp_5ffmat3x4',['highp_fmat3x4',['../a00304.html#ga961fac2a885907ffcf4d40daac6615c5',1,'glm']]], ['highp_5ffmat4',['highp_fmat4',['../a00304.html#gabf28443ce0cc0959077ec39b21f32c39',1,'glm']]], ['highp_5ffmat4x2',['highp_fmat4x2',['../a00304.html#ga076961cf2d120c7168b957cb2ed107b3',1,'glm']]], ['highp_5ffmat4x3',['highp_fmat4x3',['../a00304.html#gae406ec670f64170a7437b5e302eeb2cb',1,'glm']]], ['highp_5ffmat4x4',['highp_fmat4x4',['../a00304.html#gaee80c7cd3caa0f2635058656755f6f69',1,'glm']]], ['highp_5ffvec1',['highp_fvec1',['../a00304.html#gaa1040342c4efdedc8f90e6267db8d41c',1,'glm']]], ['highp_5ffvec2',['highp_fvec2',['../a00304.html#ga7c0d196f5fa79f7e892a2f323a0be1ae',1,'glm']]], ['highp_5ffvec3',['highp_fvec3',['../a00304.html#ga6ef77413883f48d6b53b4169b25edbd0',1,'glm']]], ['highp_5ffvec4',['highp_fvec4',['../a00304.html#ga8b839abbb44f5102609eed89f6ed61f7',1,'glm']]], ['highp_5fi16',['highp_i16',['../a00304.html#ga0336abc2604dd2c20c30e036454b64f8',1,'glm']]], ['highp_5fi16vec1',['highp_i16vec1',['../a00304.html#ga70fdfcc1fd38084bde83c3f06a8b9f19',1,'glm']]], ['highp_5fi16vec2',['highp_i16vec2',['../a00304.html#gaa7db3ad10947cf70cae6474d05ebd227',1,'glm']]], ['highp_5fi16vec3',['highp_i16vec3',['../a00304.html#ga5609c8fa2b7eac3dec337d321cb0ca96',1,'glm']]], ['highp_5fi16vec4',['highp_i16vec4',['../a00304.html#ga7a18659438828f91ccca28f1a1e067b4',1,'glm']]], ['highp_5fi32',['highp_i32',['../a00304.html#ga727675ac6b5d2fc699520e0059735e25',1,'glm']]], ['highp_5fi32vec1',['highp_i32vec1',['../a00304.html#ga6a9d71cc62745302f70422b7dc98755c',1,'glm']]], ['highp_5fi32vec2',['highp_i32vec2',['../a00304.html#gaa9b4579f8e6f3d9b649a965bcb785530',1,'glm']]], ['highp_5fi32vec3',['highp_i32vec3',['../a00304.html#ga31e070ea3bdee623e6e18a61ba5718b1',1,'glm']]], ['highp_5fi32vec4',['highp_i32vec4',['../a00304.html#gadf70eaaa230aeed5a4c9f4c9c5c55902',1,'glm']]], ['highp_5fi64',['highp_i64',['../a00304.html#gac25db6d2b1e2a0f351b77ba3409ac4cd',1,'glm']]], ['highp_5fi64vec1',['highp_i64vec1',['../a00304.html#gabd2fda3cd208acf5a370ec9b5b3c58d4',1,'glm']]], ['highp_5fi64vec2',['highp_i64vec2',['../a00304.html#gad9d1903cb20899966e8ebe0670889a5f',1,'glm']]], ['highp_5fi64vec3',['highp_i64vec3',['../a00304.html#ga62324224b9c6cce9c6b4db96bb704a8a',1,'glm']]], ['highp_5fi64vec4',['highp_i64vec4',['../a00304.html#gad23b1be9b3bf20352089a6b738f0ebba',1,'glm']]], ['highp_5fi8',['highp_i8',['../a00304.html#gacb88796f2d08ef253d0345aff20c3aee',1,'glm']]], ['highp_5fi8vec1',['highp_i8vec1',['../a00304.html#ga1d8c10949691b0fd990253476f47beb3',1,'glm']]], ['highp_5fi8vec2',['highp_i8vec2',['../a00304.html#ga50542e4cb9b2f9bec213b66e06145d07',1,'glm']]], ['highp_5fi8vec3',['highp_i8vec3',['../a00304.html#ga8396bfdc081d9113190d0c39c9f67084',1,'glm']]], ['highp_5fi8vec4',['highp_i8vec4',['../a00304.html#ga4824e3ddf6e608117dfe4809430737b4',1,'glm']]], ['highp_5fimat2',['highp_imat2',['../a00294.html#ga8499cc3b016003f835314c1c756e9db9',1,'glm']]], ['highp_5fimat2x2',['highp_imat2x2',['../a00294.html#gaa389e2d1c3b10941cae870bc0aeba5b3',1,'glm']]], ['highp_5fimat2x3',['highp_imat2x3',['../a00294.html#gaba49d890e06c9444795f5a133fbf1336',1,'glm']]], ['highp_5fimat2x4',['highp_imat2x4',['../a00294.html#ga05a970fd4366dad6c8a0be676b1eae5b',1,'glm']]], ['highp_5fimat3',['highp_imat3',['../a00294.html#gaca4506a3efa679eff7c006d9826291fd',1,'glm']]], ['highp_5fimat3x2',['highp_imat3x2',['../a00294.html#ga91c671c3ff9706c2393e78b22fd84bcb',1,'glm']]], ['highp_5fimat3x3',['highp_imat3x3',['../a00294.html#ga07d7b7173e2a6f843ff5f1c615a95b41',1,'glm']]], ['highp_5fimat3x4',['highp_imat3x4',['../a00294.html#ga53008f580be99018a17b357b5a4ffc0d',1,'glm']]], ['highp_5fimat4',['highp_imat4',['../a00294.html#ga7cfb09b34e0fcf73eaf6512d6483ef56',1,'glm']]], ['highp_5fimat4x2',['highp_imat4x2',['../a00294.html#ga1858820fb292cae396408b2034407f72',1,'glm']]], ['highp_5fimat4x3',['highp_imat4x3',['../a00294.html#ga6be0b80ae74bb309bc5b964d93d68fc5',1,'glm']]], ['highp_5fimat4x4',['highp_imat4x4',['../a00294.html#ga2c783ee6f8f040ab37df2f70392c8b44',1,'glm']]], ['highp_5fint16',['highp_int16',['../a00304.html#ga5fde0fa4a3852a9dd5d637a92ee74718',1,'glm']]], ['highp_5fint16_5ft',['highp_int16_t',['../a00304.html#gacaea06d0a79ef3172e887a7a6ba434ff',1,'glm']]], ['highp_5fint32',['highp_int32',['../a00304.html#ga84ed04b4e0de18c977e932d617e7c223',1,'glm']]], ['highp_5fint32_5ft',['highp_int32_t',['../a00304.html#ga2c71c8bd9e2fe7d2e93ca250d8b6157f',1,'glm']]], ['highp_5fint64',['highp_int64',['../a00304.html#ga226a8d52b4e3f77aaa6231135e886aac',1,'glm']]], ['highp_5fint64_5ft',['highp_int64_t',['../a00304.html#ga73c6abb280a45feeff60f9accaee91f3',1,'glm']]], ['highp_5fint8',['highp_int8',['../a00304.html#gad0549c902a96a7164e4ac858d5f39dbf',1,'glm']]], ['highp_5fint8_5ft',['highp_int8_t',['../a00304.html#ga1085c50dd8fbeb5e7e609b1c127492a5',1,'glm']]], ['highp_5fivec1',['highp_ivec1',['../a00273.html#ga7e02566f2bd2caa68e61be45a477c77e',1,'glm']]], ['highp_5fivec2',['highp_ivec2',['../a00282.html#gaa18f6b80b41c214f10666948539c1f93',1,'glm']]], ['highp_5fivec3',['highp_ivec3',['../a00282.html#ga7dd782c3ef5719bc6d5c3ca826b8ad18',1,'glm']]], ['highp_5fivec4',['highp_ivec4',['../a00282.html#gafb84dccdf5d82443df3ffc8428dcaf3e',1,'glm']]], ['highp_5fmat2',['highp_mat2',['../a00284.html#ga4d5a0055544a516237dcdace049b143d',1,'glm']]], ['highp_5fmat2x2',['highp_mat2x2',['../a00284.html#ga2352ae43b284c9f71446674c0208c05d',1,'glm']]], ['highp_5fmat2x3',['highp_mat2x3',['../a00284.html#ga7a0e3fe41512b0494e598f5c58722f19',1,'glm']]], ['highp_5fmat2x4',['highp_mat2x4',['../a00284.html#ga61f36a81f2ed1b5f9fc8bc3b26faec8f',1,'glm']]], ['highp_5fmat3',['highp_mat3',['../a00284.html#ga3fd9849f3da5ed6e3decc3fb10a20b3e',1,'glm']]], ['highp_5fmat3x2',['highp_mat3x2',['../a00284.html#ga1eda47a00027ec440eac05d63739c71b',1,'glm']]], ['highp_5fmat3x3',['highp_mat3x3',['../a00284.html#ga2ea82e12f4d7afcfce8f59894d400230',1,'glm']]], ['highp_5fmat3x4',['highp_mat3x4',['../a00284.html#ga6454b3a26ea30f69de8e44c08a63d1b7',1,'glm']]], ['highp_5fmat4',['highp_mat4',['../a00284.html#gad72e13d669d039f12ae5afa23148adc1',1,'glm']]], ['highp_5fmat4x2',['highp_mat4x2',['../a00284.html#gab68b66e6d2c37b804d0baf970fa4f0e5',1,'glm']]], ['highp_5fmat4x3',['highp_mat4x3',['../a00284.html#ga8d5a4e65fb976e4553b84995b95ecb38',1,'glm']]], ['highp_5fmat4x4',['highp_mat4x4',['../a00284.html#ga58cc504be0e3b61c48bc91554a767b9f',1,'glm']]], ['highp_5fquat',['highp_quat',['../a00253.html#gaa2fd8085774376310aeb80588e0eab6e',1,'glm']]], ['highp_5fu16',['highp_u16',['../a00304.html#ga8e62c883d13f47015f3b70ed88751369',1,'glm']]], ['highp_5fu16vec1',['highp_u16vec1',['../a00304.html#gad064202b4cf9a2972475c03de657cb39',1,'glm']]], ['highp_5fu16vec2',['highp_u16vec2',['../a00304.html#ga791b15ceb3f1e09d1a0ec6f3057ca159',1,'glm']]], ['highp_5fu16vec3',['highp_u16vec3',['../a00304.html#gacfd806749008f0ade6ac4bb9dd91082f',1,'glm']]], ['highp_5fu16vec4',['highp_u16vec4',['../a00304.html#ga8a85a3d54a8a9e14fe7a1f96196c4f61',1,'glm']]], ['highp_5fu32',['highp_u32',['../a00304.html#ga7a6f1929464dcc680b16381a4ee5f2cf',1,'glm']]], ['highp_5fu32vec1',['highp_u32vec1',['../a00304.html#ga0e35a565b9036bfc3989f5e23a0792e3',1,'glm']]], ['highp_5fu32vec2',['highp_u32vec2',['../a00304.html#ga2f256334f83fba4c2d219e414b51df6c',1,'glm']]], ['highp_5fu32vec3',['highp_u32vec3',['../a00304.html#gaf14d7a50502464e7cbfa074f24684cb1',1,'glm']]], ['highp_5fu32vec4',['highp_u32vec4',['../a00304.html#ga22166f0da65038b447f3c5e534fff1c2',1,'glm']]], ['highp_5fu64',['highp_u64',['../a00304.html#ga0c181fdf06a309691999926b6690c969',1,'glm']]], ['highp_5fu64vec1',['highp_u64vec1',['../a00304.html#gae4fe774744852c4d7d069be2e05257ab',1,'glm']]], ['highp_5fu64vec2',['highp_u64vec2',['../a00304.html#ga78f77b8b2d17b431ac5a68c0b5d7050d',1,'glm']]], ['highp_5fu64vec3',['highp_u64vec3',['../a00304.html#ga41bdabea6e589029659331ba47eb78c1',1,'glm']]], ['highp_5fu64vec4',['highp_u64vec4',['../a00304.html#ga4f15b41aa24b11cc42ad5798c04a2325',1,'glm']]], ['highp_5fu8',['highp_u8',['../a00304.html#gacd1259f3a9e8d2a9df5be2d74322ef9c',1,'glm']]], ['highp_5fu8vec1',['highp_u8vec1',['../a00304.html#ga8408cb76b6550ff01fa0a3024e7b68d2',1,'glm']]], ['highp_5fu8vec2',['highp_u8vec2',['../a00304.html#ga27585b7c3ab300059f11fcba465f6fd2',1,'glm']]], ['highp_5fu8vec3',['highp_u8vec3',['../a00304.html#ga45721c13b956eb691cbd6c6c1429167a',1,'glm']]], ['highp_5fu8vec4',['highp_u8vec4',['../a00304.html#gae0b75ad0fed8c00ddc0b5ce335d31060',1,'glm']]], ['highp_5fuint16',['highp_uint16',['../a00304.html#ga746dc6da204f5622e395f492997dbf57',1,'glm']]], ['highp_5fuint16_5ft',['highp_uint16_t',['../a00304.html#gacf54c3330ef60aa3d16cb676c7bcb8c7',1,'glm']]], ['highp_5fuint32',['highp_uint32',['../a00304.html#ga256b12b650c3f2fb86878fd1c5db8bc3',1,'glm']]], ['highp_5fuint32_5ft',['highp_uint32_t',['../a00304.html#gae978599c9711ac263ba732d4ac225b0e',1,'glm']]], ['highp_5fuint64',['highp_uint64',['../a00304.html#gaa38d732f5d4a7bc42a1b43b9d3c141ce',1,'glm']]], ['highp_5fuint64_5ft',['highp_uint64_t',['../a00304.html#gaa46172d7dc1c7ffe3e78107ff88adf08',1,'glm']]], ['highp_5fuint8',['highp_uint8',['../a00304.html#ga97432f9979e73e66567361fd01e4cffb',1,'glm']]], ['highp_5fuint8_5ft',['highp_uint8_t',['../a00304.html#gac4e00a26a2adb5f2c0a7096810df29e5',1,'glm']]], ['highp_5fumat2',['highp_umat2',['../a00294.html#ga42cbce64c4c1cd121b8437daa6e110de',1,'glm']]], ['highp_5fumat2x2',['highp_umat2x2',['../a00294.html#ga5337b7bc95f9cbac08a0c00b3f936b28',1,'glm']]], ['highp_5fumat2x3',['highp_umat2x3',['../a00294.html#ga90718c7128320b24b52f9ea70e643ad4',1,'glm']]], ['highp_5fumat2x4',['highp_umat2x4',['../a00294.html#gadca0a4724b4a6f56a2355b6f6e19248b',1,'glm']]], ['highp_5fumat3',['highp_umat3',['../a00294.html#gaa1143120339b7d2d469d327662e8a172',1,'glm']]], ['highp_5fumat3x2',['highp_umat3x2',['../a00294.html#ga844a5da2e7fc03fc7cccc7f1b70809c4',1,'glm']]], ['highp_5fumat3x3',['highp_umat3x3',['../a00294.html#ga1f7d41c36b980774a4d2e7c1647fb4b2',1,'glm']]], ['highp_5fumat3x4',['highp_umat3x4',['../a00294.html#ga25ee15c323924f2d0fe9896d329e5086',1,'glm']]], ['highp_5fumat4',['highp_umat4',['../a00294.html#gaf665e4e78c2cc32a54ab40325738f9c9',1,'glm']]], ['highp_5fumat4x2',['highp_umat4x2',['../a00294.html#gae69eb82ec08b0dc9bf2ead2a339ff801',1,'glm']]], ['highp_5fumat4x3',['highp_umat4x3',['../a00294.html#ga45a8163d02c43216252056b0c120f3a5',1,'glm']]], ['highp_5fumat4x4',['highp_umat4x4',['../a00294.html#ga6a56cbb769aed334c95241664415f9ba',1,'glm']]], ['highp_5fuvec1',['highp_uvec1',['../a00277.html#gacda57dd8c2bff4934c7f09ddd87c0f39',1,'glm']]], ['highp_5fuvec2',['highp_uvec2',['../a00282.html#gad5dd50da9e37387ca6b4e6f9c80fe6f8',1,'glm']]], ['highp_5fuvec3',['highp_uvec3',['../a00282.html#gaef61508dd40ec523416697982f9ceaae',1,'glm']]], ['highp_5fuvec4',['highp_uvec4',['../a00282.html#gaeebd7dd9f3e678691f8620241e5f9221',1,'glm']]], ['highp_5fvec1',['highp_vec1',['../a00271.html#ga9e8ed21862a897c156c0b2abca70b1e9',1,'glm']]], ['highp_5fvec2',['highp_vec2',['../a00282.html#gaa92c1954d71b1e7914874bd787b43d1c',1,'glm']]], ['highp_5fvec3',['highp_vec3',['../a00282.html#gaca61dfaccbf2f58f2d8063a4e76b44a9',1,'glm']]], ['highp_5fvec4',['highp_vec4',['../a00282.html#gad281decae52948b82feb3a9db8f63a7b',1,'glm']]], ['hsvcolor',['hsvColor',['../a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_8.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_8.js ================================================ var searchData= [ ['integer_20functions',['Integer functions',['../a00370.html',1,'']]], ['i16',['i16',['../a00304.html#ga3ab5fe184343d394fb6c2723c3ee3699',1,'glm']]], ['i16vec1',['i16vec1',['../a00304.html#gafe730798732aa7b0647096a004db1b1c',1,'glm']]], ['i16vec2',['i16vec2',['../a00304.html#ga2996630ba7b10535af8e065cf326f761',1,'glm']]], ['i16vec3',['i16vec3',['../a00304.html#gae9c90a867a6026b1f6eab00456f3fb8b',1,'glm']]], ['i16vec4',['i16vec4',['../a00304.html#ga550831bfc26d1e0101c1cb3d79938c06',1,'glm']]], ['i32',['i32',['../a00304.html#ga96faea43ac5f875d2d3ffbf8d213e3eb',1,'glm']]], ['i32vec1',['i32vec1',['../a00304.html#ga54b8a4e0f5a7203a821bf8e9c1265bcf',1,'glm']]], ['i32vec2',['i32vec2',['../a00304.html#ga8b44026374982dcd1e52d22bac99247e',1,'glm']]], ['i32vec3',['i32vec3',['../a00304.html#ga7f526b5cccef126a2ebcf9bdd890394e',1,'glm']]], ['i32vec4',['i32vec4',['../a00304.html#ga866a05905c49912309ed1fa5f5980e61',1,'glm']]], ['i64',['i64',['../a00304.html#gadb997e409103d4da18abd837e636a496',1,'glm']]], ['i64vec1',['i64vec1',['../a00304.html#ga2b65767f8b5aed1bd1cf86c541662b50',1,'glm']]], ['i64vec2',['i64vec2',['../a00304.html#ga48310188e1d0c616bf8d78c92447523b',1,'glm']]], ['i64vec3',['i64vec3',['../a00304.html#ga667948cfe6fb3d6606c750729ec49f77',1,'glm']]], ['i64vec4',['i64vec4',['../a00304.html#gaa4e31c3d9de067029efeb161a44b0232',1,'glm']]], ['i8',['i8',['../a00304.html#ga302ec977b0c0c3ea245b6c9275495355',1,'glm']]], ['i8vec1',['i8vec1',['../a00304.html#ga7e80d927ff0a3861ced68dfff8a4020b',1,'glm']]], ['i8vec2',['i8vec2',['../a00304.html#gad06935764d78f43f9d542c784c2212ec',1,'glm']]], ['i8vec3',['i8vec3',['../a00304.html#ga5a08d36cf7917cd19d081a603d0eae3e',1,'glm']]], ['i8vec4',['i8vec4',['../a00304.html#ga4177a44206121dabc8c4ff1c0f544574',1,'glm']]], ['identity',['identity',['../a00247.html#ga81696f2b8d1db02ea1aff8da8f269314',1,'glm']]], ['imat2',['imat2',['../a00294.html#gaabe04f9948d4a213bb1c20137de03e01',1,'glm']]], ['imat2x2',['imat2x2',['../a00294.html#gaa4732a240522ad9bc28144fda2fc14ec',1,'glm']]], ['imat2x3',['imat2x3',['../a00294.html#ga3f42dd3d5d94a0fd5706f7ec8dd0c605',1,'glm']]], ['imat2x4',['imat2x4',['../a00294.html#ga9d8faafdca42583d67e792dd038fc668',1,'glm']]], ['imat3',['imat3',['../a00294.html#ga038f68437155ffa3c2583a15264a8195',1,'glm']]], ['imat3x2',['imat3x2',['../a00294.html#ga7b33bbe4f12c060892bd3cc8d4cd737f',1,'glm']]], ['imat3x3',['imat3x3',['../a00294.html#ga6aacc960f62e8f7d2fe9d32d5050e7a4',1,'glm']]], ['imat3x4',['imat3x4',['../a00294.html#ga6e9ce23496d8b08dfc302d4039694b58',1,'glm']]], ['imat4',['imat4',['../a00294.html#ga96b0d26a33b81bb6a60ca0f39682f7eb',1,'glm']]], ['imat4x2',['imat4x2',['../a00294.html#ga8ce7ef51d8b2c1901fa5414deccbc3fa',1,'glm']]], ['imat4x3',['imat4x3',['../a00294.html#ga705ee0bf49d6c3de4404ce2481bf0df5',1,'glm']]], ['imat4x4',['imat4x4',['../a00294.html#ga43ed5e4f475b6f4cad7cba78f29c405b',1,'glm']]], ['imulextended',['imulExtended',['../a00370.html#gac0c510a70e852f57594a9141848642e3',1,'glm']]], ['infiniteperspective',['infinitePerspective',['../a00243.html#ga44fa38a18349450325cae2661bb115ca',1,'glm']]], ['infiniteperspectivelh',['infinitePerspectiveLH',['../a00243.html#ga3201b30f5b3ea0f933246d87bfb992a9',1,'glm']]], ['infiniteperspectiverh',['infinitePerspectiveRH',['../a00243.html#ga99672ffe5714ef478dab2437255fe7e1',1,'glm']]], ['int1',['int1',['../a00315.html#ga0670a2111b5e4a6410bd027fa0232fc3',1,'glm']]], ['int16',['int16',['../a00260.html#ga259fa4834387bd68627ddf37bb3ebdb9',1,'glm']]], ['int16_5ft',['int16_t',['../a00304.html#gae8f5e3e964ca2ae240adc2c0d74adede',1,'glm']]], ['int1x1',['int1x1',['../a00315.html#ga056ffe02d3a45af626f8e62221881c7a',1,'glm']]], ['int2',['int2',['../a00315.html#gafe3a8fd56354caafe24bfe1b1e3ad22a',1,'glm']]], ['int2x2',['int2x2',['../a00315.html#ga4e5ce477c15836b21e3c42daac68554d',1,'glm']]], ['int2x3',['int2x3',['../a00315.html#ga197ded5ad8354f6b6fb91189d7a269b3',1,'glm']]], ['int2x4',['int2x4',['../a00315.html#ga2749d59a7fddbac44f34ba78e57ef807',1,'glm']]], ['int3',['int3',['../a00315.html#ga909c38a425f215a50c847145d7da09f0',1,'glm']]], ['int32',['int32',['../a00260.html#ga43d43196463bde49cb067f5c20ab8481',1,'glm']]], ['int32_5ft',['int32_t',['../a00304.html#ga042ef09ff2f0cb24a36f541bcb3a3710',1,'glm']]], ['int3x2',['int3x2',['../a00315.html#gaa4cbe16a92cf3664376c7a2fc5126aa8',1,'glm']]], ['int3x3',['int3x3',['../a00315.html#ga15c9649286f0bf431bdf9b3509580048',1,'glm']]], ['int3x4',['int3x4',['../a00315.html#gaacac46ddc7d15d0f9529d05c92946a0f',1,'glm']]], ['int4',['int4',['../a00315.html#gaecdef18c819c205aeee9f94dc93de56a',1,'glm']]], ['int4x2',['int4x2',['../a00315.html#ga97a39dd9bc7d572810d80b8467cbffa1',1,'glm']]], ['int4x3',['int4x3',['../a00315.html#gae4a2c53f14aeec9a17c2b81142b7e82d',1,'glm']]], ['int4x4',['int4x4',['../a00315.html#ga04dee1552424198b8f58b377c2ee00d8',1,'glm']]], ['int64',['int64',['../a00260.html#gaff5189f97f9e842d9636a0f240001b2e',1,'glm']]], ['int64_5ft',['int64_t',['../a00304.html#ga322a7d7d2c2c68994dc872a33de63c61',1,'glm']]], ['int8',['int8',['../a00260.html#ga1b956fe1df85f3c132b21edb4e116458',1,'glm']]], ['int8_5ft',['int8_t',['../a00304.html#ga4bf09d8838a86866b39ee6e109341645',1,'glm']]], ['intbitstofloat',['intBitsToFloat',['../a00241.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4',1,'glm::intBitsToFloat(int const &v)'],['../a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0',1,'glm::intBitsToFloat(vec< L, int, Q > const &v)']]], ['integer_2ehpp',['integer.hpp',['../a00043.html',1,'']]], ['intermediate',['intermediate',['../a00352.html#gacc5cd5f3e78de61d141c2355417424de',1,'glm']]], ['interpolate',['interpolate',['../a00337.html#ga4e67863d150724b10c1ac00972dc958c',1,'glm']]], ['intersect_2ehpp',['intersect.hpp',['../a00044.html',1,'']]], ['intersectlinesphere',['intersectLineSphere',['../a00331.html#ga9c68139f3d8a4f3d7fe45f9dbc0de5b7',1,'glm']]], ['intersectlinetriangle',['intersectLineTriangle',['../a00331.html#ga9d29b9b3acb504d43986502f42740df4',1,'glm']]], ['intersectrayplane',['intersectRayPlane',['../a00331.html#gad3697a9700ea379739a667ea02573488',1,'glm']]], ['intersectraysphere',['intersectRaySphere',['../a00331.html#gac88f8cd84c4bcb5b947d56acbbcfa56e',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquared, typename genType::value_type &intersectionDistance)'],['../a00331.html#gad28c00515b823b579c608aafa1100c1d',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)']]], ['intersectraytriangle',['intersectRayTriangle',['../a00331.html#ga65bf2c594482f04881c36bc761f9e946',1,'glm']]], ['inverse',['inverse',['../a00248.html#gab41da854ae678e23e114b598cbca4065',1,'glm::inverse(qua< T, Q > const &q)'],['../a00317.html#ga070f521a953f6461af4ab4cf8ccbf27e',1,'glm::inverse(tdualquat< T, Q > const &q)'],['../a00371.html#gaed509fe8129b01e4f20a6d0de5690091',1,'glm::inverse(mat< C, R, T, Q > const &m)']]], ['inversesqrt',['inversesqrt',['../a00242.html#ga523dd6bd0ad9f75ae2d24c8e4b017b7a',1,'glm']]], ['inversetranspose',['inverseTranspose',['../a00295.html#gab213cd0e3ead5f316d583f99d6312008',1,'glm']]], ['io_2ehpp',['io.hpp',['../a00045.html',1,'']]], ['iround',['iround',['../a00292.html#ga57824268ebe13a922f1d69a5d37f637f',1,'glm']]], ['iscompnull',['isCompNull',['../a00368.html#gaf6ec1688eab7442fe96fe4941d5d4e76',1,'glm']]], ['isdenormal',['isdenormal',['../a00314.html#ga74aa7c7462245d83bd5a9edf9c6c2d91',1,'glm']]], ['isfinite',['isfinite',['../a00315.html#gaf4b04dcd3526996d68c1bfe17bfc8657',1,'glm::isfinite(genType const &x)'],['../a00315.html#gac3b12b8ac3014418fe53c299478b6603',1,'glm::isfinite(const vec< 1, T, Q > &x)'],['../a00315.html#ga8e76dc3e406ce6a4155c2b12a2e4b084',1,'glm::isfinite(const vec< 2, T, Q > &x)'],['../a00315.html#ga929ef27f896d902c1771a2e5e150fc97',1,'glm::isfinite(const vec< 3, T, Q > &x)'],['../a00315.html#ga19925badbe10ce61df1d0de00be0b5ad',1,'glm::isfinite(const vec< 4, T, Q > &x)']]], ['isidentity',['isIdentity',['../a00340.html#gaee935d145581c82e82b154ccfd78ad91',1,'glm']]], ['isinf',['isinf',['../a00241.html#ga2885587c23a106301f20443896365b62',1,'glm::isinf(vec< L, T, Q > const &x)'],['../a00248.html#ga45722741ea266b4e861938b365c5f362',1,'glm::isinf(qua< T, Q > const &x)']]], ['ismultiple',['isMultiple',['../a00261.html#gaec593d33956a8fe43f78fccc63ddde9a',1,'glm::isMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga354caf634ef333d9cb4844407416256a',1,'glm::isMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gabb4360e38c0943d8981ba965dead519d',1,'glm::isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['isnan',['isnan',['../a00241.html#ga29ef934c00306490de837b4746b4e14d',1,'glm::isnan(vec< L, T, Q > const &x)'],['../a00248.html#ga1bb55f8963616502e96dc564384d8a03',1,'glm::isnan(qua< T, Q > const &x)']]], ['isnormalized',['isNormalized',['../a00340.html#gae785af56f47ce220a1609f7f84aa077a',1,'glm::isNormalized(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gaa068311695f28f5f555f5f746a6a66fb',1,'glm::isNormalized(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga4d9bb4d0465df49fedfad79adc6ce4ad',1,'glm::isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gac3c974f459fd75453134fad7ae89a39e',1,'glm::isNormalized(vec< L, T, Q > const &v, T const &epsilon)']]], ['isnull',['isNull',['../a00340.html#ga9790ec222ce948c0ff0d8ce927340dba',1,'glm::isNull(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gae14501c6b14ccda6014cc5350080103d',1,'glm::isNull(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga2b98bb30a9fefa7cdea5f1dcddba677b',1,'glm::isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gab4a3637dbcb4bb42dc55caea7a1e0495',1,'glm::isNull(vec< L, T, Q > const &v, T const &epsilon)']]], ['isorthogonal',['isOrthogonal',['../a00340.html#ga58f3289f74dcab653387dd78ad93ca40',1,'glm']]], ['ispoweroftwo',['isPowerOfTwo',['../a00261.html#gadf491730354aa7da67fbe23d4d688763',1,'glm::isPowerOfTwo(genIUType v)'],['../a00274.html#gabf2b61ded7049bcb13e25164f832a290',1,'glm::isPowerOfTwo(vec< L, T, Q > const &v)']]], ['ivec1',['ivec1',['../a00272.html#gaedd0562c2e77714929d7723a7e2e0dba',1,'glm']]], ['ivec2',['ivec2',['../a00281.html#ga6f9269106d91b2d2b91bcf27cd5f5560',1,'glm']]], ['ivec3',['ivec3',['../a00281.html#gad0d784d8eee201aca362484d2daee46c',1,'glm']]], ['ivec4',['ivec4',['../a00281.html#ga5abb4603dae0ce58c595e66d9123d812',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_9.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_9.js ================================================ var searchData= [ ['l1norm',['l1Norm',['../a00343.html#gae2fc0b2aa967bebfd6a244700bff6997',1,'glm::l1Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga1a7491e2037ceeb37f83ce41addfc0be',1,'glm::l1Norm(vec< 3, T, Q > const &v)']]], ['l2norm',['l2Norm',['../a00343.html#ga41340b2ef40a9307ab0f137181565168',1,'glm::l2Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#gae288bde8f0e41fb4ed62e65137b18cba',1,'glm::l2Norm(vec< 3, T, Q > const &x)']]], ['ldexp',['ldexp',['../a00241.html#gac3010e0a0c35a1b514540f2fb579c58c',1,'glm']]], ['lefthanded',['leftHanded',['../a00328.html#ga6f1bad193b9a3b048543d1935cf04dd3',1,'glm']]], ['length',['length',['../a00254.html#gab703732449be6c7199369b3f9a91ed38',1,'glm::length(qua< T, Q > const &q)'],['../a00279.html#ga0cdabbb000834d994a1d6dc56f8f5263',1,'glm::length(vec< L, T, Q > const &x)']]], ['length2',['length2',['../a00343.html#ga8d1789651050adb7024917984b41c3de',1,'glm::length2(vec< L, T, Q > const &x)'],['../a00352.html#ga58a609b1b8ab965f5df2702e8ca4e75b',1,'glm::length2(qua< T, Q > const &q)']]], ['lerp',['lerp',['../a00248.html#ga6033dc0741051fa463a0a147ba29f293',1,'glm::lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00315.html#ga5494ba3a95ea6594c86fc75236886864',1,'glm::lerp(T x, T y, T a)'],['../a00315.html#gaa551c0a0e16d2d4608e49f7696df897f',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)'],['../a00315.html#ga44a8b5fd776320f1713413dec959b32a',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)'],['../a00315.html#ga89ac8e000199292ec7875519d27e214b',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)'],['../a00315.html#gaf68de5baf72d16135368b8ef4f841604',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)'],['../a00315.html#ga4ae1a616c8540a2649eab8e0cd051bb3',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)'],['../a00315.html#gab5477ab69c40de4db5d58d3359529724',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)'],['../a00317.html#gace8380112d16d33f520839cb35a4d173',1,'glm::lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)']]], ['lessthan',['lessThan',['../a00299.html#gad091a2d22c8acfebfa92bcfca1dfe9c4',1,'glm::lessThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gae90ed1592c395f93e3f3dfce6b2f39c6',1,'glm::lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['lessthanequal',['lessThanEqual',['../a00299.html#gac00012eea281800d2403f4ea8443134d',1,'glm::lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gab0bdafc019d227257ff73fb5bcca1718',1,'glm::lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['levels',['levels',['../a00361.html#gaa8c377f4e63486db4fa872d77880da73',1,'glm']]], ['lineargradient',['linearGradient',['../a00327.html#ga849241df1e55129b8ce9476200307419',1,'glm']]], ['linearinterpolation',['linearInterpolation',['../a00318.html#ga290c3e47cb0a49f2e8abe90b1872b649',1,'glm']]], ['linearrand',['linearRand',['../a00300.html#ga04e241ab88374a477a2c2ceadd2fa03d',1,'glm::linearRand(genType Min, genType Max)'],['../a00300.html#ga94731130c298a9ff5e5025fdee6d97a0',1,'glm::linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)']]], ['lmaxnorm',['lMaxNorm',['../a00343.html#gad58a8231fc32e38104a9e1c4d3c0cb64',1,'glm::lMaxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga6968a324837a8e899396d44de23d5aae',1,'glm::lMaxNorm(vec< 3, T, Q > const &x)']]], ['ln_5fln_5ftwo',['ln_ln_two',['../a00290.html#gaca94292c839ed31a405ab7a81ae7e850',1,'glm']]], ['ln_5ften',['ln_ten',['../a00290.html#gaf97ebc6c059ffd788e6c4946f71ef66c',1,'glm']]], ['ln_5ftwo',['ln_two',['../a00290.html#ga24f4d27765678116f41a2f336ab7975c',1,'glm']]], ['log',['log',['../a00242.html#ga918c9f3fd086ce20e6760c903bd30fa9',1,'glm::log(vec< L, T, Q > const &v)'],['../a00256.html#gaa5f7b20e296671b16ce25a2ab7ad5473',1,'glm::log(qua< T, Q > const &q)'],['../a00333.html#ga60a7b0a401da660869946b2b77c710c9',1,'glm::log(genType const &x, genType const &base)']]], ['log2',['log2',['../a00242.html#ga82831c7d9cca777cebedfe03a19c8d75',1,'glm::log2(vec< L, T, Q > const &v)'],['../a00292.html#ga9bd682e74bfacb005c735305207ec417',1,'glm::log2(genIUType x)']]], ['log_5fbase_2ehpp',['log_base.hpp',['../a00046.html',1,'']]], ['lookat',['lookAt',['../a00247.html#gaa64aa951a0e99136bba9008d2b59c78e',1,'glm']]], ['lookatlh',['lookAtLH',['../a00247.html#gab2c09e25b0a16d3a9d89cc85bbae41b0',1,'glm']]], ['lookatrh',['lookAtRH',['../a00247.html#gacfa12c8889c754846bc20c65d9b5c701',1,'glm']]], ['lowestbitvalue',['lowestBitValue',['../a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f',1,'glm']]], ['lowp_5fbvec1',['lowp_bvec1',['../a00266.html#ga24a3d364e2ddd444f5b9e7975bbef8f9',1,'glm']]], ['lowp_5fbvec2',['lowp_bvec2',['../a00282.html#ga5a5452140650988b94d5716e4d872465',1,'glm']]], ['lowp_5fbvec3',['lowp_bvec3',['../a00282.html#ga79e0922a977662a8fd39d7829be3908b',1,'glm']]], ['lowp_5fbvec4',['lowp_bvec4',['../a00282.html#ga15ac87724048ab7169bb5d3572939dd3',1,'glm']]], ['lowp_5fddualquat',['lowp_ddualquat',['../a00317.html#gab4c5103338af3dac7e0fbc86895a3f1a',1,'glm']]], ['lowp_5fdmat2',['lowp_dmat2',['../a00284.html#gad8e2727a6e7aa68280245bb0022118e1',1,'glm']]], ['lowp_5fdmat2x2',['lowp_dmat2x2',['../a00284.html#gac61b94f5d9775f83f321bac899322fe2',1,'glm']]], ['lowp_5fdmat2x3',['lowp_dmat2x3',['../a00284.html#gaf6bf2f5bde7ad5b9c289f777b93094af',1,'glm']]], ['lowp_5fdmat2x4',['lowp_dmat2x4',['../a00284.html#ga97507a31ecee8609887d0f23bbde92c7',1,'glm']]], ['lowp_5fdmat3',['lowp_dmat3',['../a00284.html#ga0cab80beee64a5f8d2ae4e823983063a',1,'glm']]], ['lowp_5fdmat3x2',['lowp_dmat3x2',['../a00284.html#ga1e0ea3fba496bc7c6f620d2590acb66b',1,'glm']]], ['lowp_5fdmat3x3',['lowp_dmat3x3',['../a00284.html#gac017848a9df570f60916a21a297b1e8e',1,'glm']]], ['lowp_5fdmat3x4',['lowp_dmat3x4',['../a00284.html#ga93add35d2a44c5830978b827e8c295e8',1,'glm']]], ['lowp_5fdmat4',['lowp_dmat4',['../a00284.html#ga708bc5b91bbfedd21debac8dcf2a64cd',1,'glm']]], ['lowp_5fdmat4x2',['lowp_dmat4x2',['../a00284.html#ga382dc5295cead78766239a8457abfa98',1,'glm']]], ['lowp_5fdmat4x3',['lowp_dmat4x3',['../a00284.html#ga3d7ea07da7c6e5c81a3f4c8b3d44056e',1,'glm']]], ['lowp_5fdmat4x4',['lowp_dmat4x4',['../a00284.html#ga5b0413198b7e9f061f7534a221c9dac9',1,'glm']]], ['lowp_5fdquat',['lowp_dquat',['../a00250.html#ga9e6e5f42e67dd5877350ba485c191f1c',1,'glm']]], ['lowp_5fdualquat',['lowp_dualquat',['../a00317.html#gade05d29ebd4deea0f883d0e1bb4169aa',1,'glm']]], ['lowp_5fdvec1',['lowp_dvec1',['../a00269.html#gaf906eb86b6e96c35138d0e4928e1435a',1,'glm']]], ['lowp_5fdvec2',['lowp_dvec2',['../a00282.html#ga108086730d086b7f6f7a033955dfb9c3',1,'glm']]], ['lowp_5fdvec3',['lowp_dvec3',['../a00282.html#ga42c518b2917e19ce6946a84c64a3a4b2',1,'glm']]], ['lowp_5fdvec4',['lowp_dvec4',['../a00282.html#ga0b4432cb8d910e406576d10d802e190d',1,'glm']]], ['lowp_5ff32',['lowp_f32',['../a00304.html#gaeea53879fc327293cf3352a409b7867b',1,'glm']]], ['lowp_5ff32mat2',['lowp_f32mat2',['../a00304.html#ga52409bc6d4a2ce3421526c069220d685',1,'glm']]], ['lowp_5ff32mat2x2',['lowp_f32mat2x2',['../a00304.html#ga1d091b6abfba1772450e1745a06525bc',1,'glm']]], ['lowp_5ff32mat2x3',['lowp_f32mat2x3',['../a00304.html#ga961ccb34cd1a5654c772c8709e001dc5',1,'glm']]], ['lowp_5ff32mat2x4',['lowp_f32mat2x4',['../a00304.html#gacc6bf0209dda0c7c14851a646071c974',1,'glm']]], ['lowp_5ff32mat3',['lowp_f32mat3',['../a00304.html#ga4187f89f196505b40e63f516139511e5',1,'glm']]], ['lowp_5ff32mat3x2',['lowp_f32mat3x2',['../a00304.html#gac53f9d7ab04eace67adad026092fb1e8',1,'glm']]], ['lowp_5ff32mat3x3',['lowp_f32mat3x3',['../a00304.html#ga841211b641cff1fcf861bdb14e5e4abc',1,'glm']]], ['lowp_5ff32mat3x4',['lowp_f32mat3x4',['../a00304.html#ga21b1b22dec013a72656e3644baf8a1e1',1,'glm']]], ['lowp_5ff32mat4',['lowp_f32mat4',['../a00304.html#ga766aed2871e6173a81011a877f398f04',1,'glm']]], ['lowp_5ff32mat4x2',['lowp_f32mat4x2',['../a00304.html#gae6f3fcb702a666de07650c149cfa845a',1,'glm']]], ['lowp_5ff32mat4x3',['lowp_f32mat4x3',['../a00304.html#gac21eda58a1475449a5709b412ebd776c',1,'glm']]], ['lowp_5ff32mat4x4',['lowp_f32mat4x4',['../a00304.html#ga4143d129898f91545948c46859adce44',1,'glm']]], ['lowp_5ff32quat',['lowp_f32quat',['../a00304.html#gaa3ba60ef8f69c6aeb1629594eaa95347',1,'glm']]], ['lowp_5ff32vec1',['lowp_f32vec1',['../a00304.html#ga43e5b41c834fcaf4db5a831c0e28128e',1,'glm']]], ['lowp_5ff32vec2',['lowp_f32vec2',['../a00304.html#gaf3b694b2b8ded7e0b9f07b061917e1a0',1,'glm']]], ['lowp_5ff32vec3',['lowp_f32vec3',['../a00304.html#gaf739a2cd7b81783a43148b53e40d983b',1,'glm']]], ['lowp_5ff32vec4',['lowp_f32vec4',['../a00304.html#ga4e2e1debe022074ab224c9faf856d374',1,'glm']]], ['lowp_5ff64',['lowp_f64',['../a00304.html#gabc7a97c07cbfac8e35eb5e63beb4b679',1,'glm']]], ['lowp_5ff64mat2',['lowp_f64mat2',['../a00304.html#gafc730f6b4242763b0eda0ffa25150292',1,'glm']]], ['lowp_5ff64mat2x2',['lowp_f64mat2x2',['../a00304.html#ga771fda9109933db34f808d92b9b84d7e',1,'glm']]], ['lowp_5ff64mat2x3',['lowp_f64mat2x3',['../a00304.html#ga39e90adcffe33264bd608fa9c6bd184b',1,'glm']]], ['lowp_5ff64mat2x4',['lowp_f64mat2x4',['../a00304.html#ga50265a202fbfe0a25fc70066c31d9336',1,'glm']]], ['lowp_5ff64mat3',['lowp_f64mat3',['../a00304.html#ga58119a41d143ebaea0df70fe882e8a40',1,'glm']]], ['lowp_5ff64mat3x2',['lowp_f64mat3x2',['../a00304.html#gab0eb2d65514ee3e49905aa2caad8c0ad',1,'glm']]], ['lowp_5ff64mat3x3',['lowp_f64mat3x3',['../a00304.html#gac8f8a12ee03105ef8861dc652434e3b7',1,'glm']]], ['lowp_5ff64mat3x4',['lowp_f64mat3x4',['../a00304.html#gade8d1edfb23996ab6c622e65e3893271',1,'glm']]], ['lowp_5ff64mat4',['lowp_f64mat4',['../a00304.html#ga7451266e67794bd1125163502bc4a570',1,'glm']]], ['lowp_5ff64mat4x2',['lowp_f64mat4x2',['../a00304.html#gab0cecb80fd106bc369b9e46a165815ce',1,'glm']]], ['lowp_5ff64mat4x3',['lowp_f64mat4x3',['../a00304.html#gae731613b25db3a5ef5a05d21e57a57d3',1,'glm']]], ['lowp_5ff64mat4x4',['lowp_f64mat4x4',['../a00304.html#ga8c9cd734e03cd49674f3e287aa4a6f95',1,'glm']]], ['lowp_5ff64quat',['lowp_f64quat',['../a00304.html#gaa3ee2bc4af03cc06578b66b3e3f878ae',1,'glm']]], ['lowp_5ff64vec1',['lowp_f64vec1',['../a00304.html#gaf2d02c5f4d59135b9bc524fe317fd26b',1,'glm']]], ['lowp_5ff64vec2',['lowp_f64vec2',['../a00304.html#ga4e641a54d70c81eabf56c25c966d04bd',1,'glm']]], ['lowp_5ff64vec3',['lowp_f64vec3',['../a00304.html#gae7a4711107b7d078fc5f03ce2227b90b',1,'glm']]], ['lowp_5ff64vec4',['lowp_f64vec4',['../a00304.html#gaa666bb9e6d204d3bea0b3a39a3a335f4',1,'glm']]], ['lowp_5ffdualquat',['lowp_fdualquat',['../a00317.html#gaa38f671be25a7f3b136a452a8bb42860',1,'glm']]], ['lowp_5ffloat32',['lowp_float32',['../a00304.html#ga41b0d390bd8cc827323b1b3816ff4bf8',1,'glm']]], ['lowp_5ffloat32_5ft',['lowp_float32_t',['../a00304.html#gaea881cae4ddc6c0fbf7cc5b08177ca5b',1,'glm']]], ['lowp_5ffloat64',['lowp_float64',['../a00304.html#ga3714dab2c16a6545a405cb0c3b3aaa6f',1,'glm']]], ['lowp_5ffloat64_5ft',['lowp_float64_t',['../a00304.html#ga7286a37076a09da140df18bfa75d4e38',1,'glm']]], ['lowp_5ffmat2',['lowp_fmat2',['../a00304.html#ga5bba0ce31210e274f73efacd3364c03f',1,'glm']]], ['lowp_5ffmat2x2',['lowp_fmat2x2',['../a00304.html#gab0feb11edd0d3ab3e8ed996d349a5066',1,'glm']]], ['lowp_5ffmat2x3',['lowp_fmat2x3',['../a00304.html#ga71cdb53801ed4c3aadb3603c04723210',1,'glm']]], ['lowp_5ffmat2x4',['lowp_fmat2x4',['../a00304.html#gaab217601c74974a84acbca428123ecf7',1,'glm']]], ['lowp_5ffmat3',['lowp_fmat3',['../a00304.html#ga83079315e230e8f39728f4bf0d2f9a9b',1,'glm']]], ['lowp_5ffmat3x2',['lowp_fmat3x2',['../a00304.html#ga49b98e7d71804af45d86886a489e633c',1,'glm']]], ['lowp_5ffmat3x3',['lowp_fmat3x3',['../a00304.html#gaba56275dd04a7a61560b0e8fa5d365b4',1,'glm']]], ['lowp_5ffmat3x4',['lowp_fmat3x4',['../a00304.html#ga28733aec7288191b314d42154fd0b690',1,'glm']]], ['lowp_5ffmat4',['lowp_fmat4',['../a00304.html#ga5803cb9ae26399762d8bba9e0b2fc09f',1,'glm']]], ['lowp_5ffmat4x2',['lowp_fmat4x2',['../a00304.html#ga5868c2dcce41cc3ea5edcaeae239f62c',1,'glm']]], ['lowp_5ffmat4x3',['lowp_fmat4x3',['../a00304.html#ga5e649bbdb135fbcb4bfe950f4c73a444',1,'glm']]], ['lowp_5ffmat4x4',['lowp_fmat4x4',['../a00304.html#gac2f5263708ac847b361a9841e74ddf9f',1,'glm']]], ['lowp_5ffvec1',['lowp_fvec1',['../a00304.html#ga346b2336fff168a7e0df1583aae3e5a5',1,'glm']]], ['lowp_5ffvec2',['lowp_fvec2',['../a00304.html#ga62a32c31f4e2e8ca859663b6e3289a2d',1,'glm']]], ['lowp_5ffvec3',['lowp_fvec3',['../a00304.html#ga40b5c557efebb5bb99d6b9aa81095afa',1,'glm']]], ['lowp_5ffvec4',['lowp_fvec4',['../a00304.html#ga755484ffbe39ae3db2875953ed04e7b7',1,'glm']]], ['lowp_5fi16',['lowp_i16',['../a00304.html#ga392b673fd10847bfb78fb808c6cf8ff7',1,'glm']]], ['lowp_5fi16vec1',['lowp_i16vec1',['../a00304.html#ga501a2f313f1c220eef4ab02bdabdc3c6',1,'glm']]], ['lowp_5fi16vec2',['lowp_i16vec2',['../a00304.html#ga7cac84b520a6b57f2fbd880d3d63c51b',1,'glm']]], ['lowp_5fi16vec3',['lowp_i16vec3',['../a00304.html#gab69ef9cbc2a9214bf5596c528c801b72',1,'glm']]], ['lowp_5fi16vec4',['lowp_i16vec4',['../a00304.html#ga1d47d94d17c2406abdd1f087a816e387',1,'glm']]], ['lowp_5fi32',['lowp_i32',['../a00304.html#ga7ff73a45cea9613ebf1a9fad0b9f82ac',1,'glm']]], ['lowp_5fi32vec1',['lowp_i32vec1',['../a00304.html#gae31ac3608cf643ceffd6554874bec4a0',1,'glm']]], ['lowp_5fi32vec2',['lowp_i32vec2',['../a00304.html#ga867a3c2d99ab369a454167d2c0a24dbd',1,'glm']]], ['lowp_5fi32vec3',['lowp_i32vec3',['../a00304.html#ga5fe17c87ede1b1b4d92454cff4da076d',1,'glm']]], ['lowp_5fi32vec4',['lowp_i32vec4',['../a00304.html#gac9b2eb4296ffe50a32eacca9ed932c08',1,'glm']]], ['lowp_5fi64',['lowp_i64',['../a00304.html#ga354736e0c645099cd44c42fb2f87c2b8',1,'glm']]], ['lowp_5fi64vec1',['lowp_i64vec1',['../a00304.html#gab0f7d875db5f3cc9f3168c5a0ed56437',1,'glm']]], ['lowp_5fi64vec2',['lowp_i64vec2',['../a00304.html#gab485c48f06a4fdd6b8d58d343bb49f3c',1,'glm']]], ['lowp_5fi64vec3',['lowp_i64vec3',['../a00304.html#ga5cb1dc9e8d300c2cdb0d7ff2308fa36c',1,'glm']]], ['lowp_5fi64vec4',['lowp_i64vec4',['../a00304.html#gabb4229a4c1488bf063eed0c45355bb9c',1,'glm']]], ['lowp_5fi8',['lowp_i8',['../a00304.html#ga552a6bde5e75984efb0f863278da2e54',1,'glm']]], ['lowp_5fi8vec1',['lowp_i8vec1',['../a00304.html#ga036d6c7ca9fbbdc5f3871bfcb937c85c',1,'glm']]], ['lowp_5fi8vec2',['lowp_i8vec2',['../a00304.html#gac03e5099d27eeaa74b6016ea435a1df2',1,'glm']]], ['lowp_5fi8vec3',['lowp_i8vec3',['../a00304.html#gae2f43ace6b5b33ab49516d9e40af1845',1,'glm']]], ['lowp_5fi8vec4',['lowp_i8vec4',['../a00304.html#ga6d388e9b9aa1b389f0672d9c7dfc61c5',1,'glm']]], ['lowp_5fimat2',['lowp_imat2',['../a00294.html#gaa0bff0be804142bb16d441aec0a7962e',1,'glm']]], ['lowp_5fimat2x2',['lowp_imat2x2',['../a00294.html#ga92b95b679975d408645547ab45a8dcd8',1,'glm']]], ['lowp_5fimat2x3',['lowp_imat2x3',['../a00294.html#ga8c9e7a388f8e7c52f1e6857dee8afb65',1,'glm']]], ['lowp_5fimat2x4',['lowp_imat2x4',['../a00294.html#ga9cc13bd1f8dd2933e9fa31fe3f70e16e',1,'glm']]], ['lowp_5fimat3',['lowp_imat3',['../a00294.html#ga69bfe668f4170379fc1f35d82b060c43',1,'glm']]], ['lowp_5fimat3x2',['lowp_imat3x2',['../a00294.html#ga33db8f27491d30906cd37c0d86b3f432',1,'glm']]], ['lowp_5fimat3x3',['lowp_imat3x3',['../a00294.html#ga664f061df00020048c3f8530329ace45',1,'glm']]], ['lowp_5fimat3x4',['lowp_imat3x4',['../a00294.html#ga9273faab33623d944af4080befbb2c80',1,'glm']]], ['lowp_5fimat4',['lowp_imat4',['../a00294.html#gad1e77f7270cad461ca4fcb4c3ec2e98c',1,'glm']]], ['lowp_5fimat4x2',['lowp_imat4x2',['../a00294.html#ga26ec1a2ba08a1488f5f05336858a0f09',1,'glm']]], ['lowp_5fimat4x3',['lowp_imat4x3',['../a00294.html#ga8f40483a3ae634ead8ad22272c543a33',1,'glm']]], ['lowp_5fimat4x4',['lowp_imat4x4',['../a00294.html#gaf65677e53ac8e31a107399340d5e2451',1,'glm']]], ['lowp_5fint16',['lowp_int16',['../a00304.html#ga698e36b01167fc0f037889334dce8def',1,'glm']]], ['lowp_5fint16_5ft',['lowp_int16_t',['../a00304.html#ga8b2cd8d31eb345b2d641d9261c38db1a',1,'glm']]], ['lowp_5fint32',['lowp_int32',['../a00304.html#ga864aabca5f3296e176e0c3ed9cc16b02',1,'glm']]], ['lowp_5fint32_5ft',['lowp_int32_t',['../a00304.html#ga0350631d35ff800e6133ac6243b13cbc',1,'glm']]], ['lowp_5fint64',['lowp_int64',['../a00304.html#gaf645b1a60203b39c0207baff5e3d8c3c',1,'glm']]], ['lowp_5fint64_5ft',['lowp_int64_t',['../a00304.html#gaebf341fc4a5be233f7dde962c2e33847',1,'glm']]], ['lowp_5fint8',['lowp_int8',['../a00304.html#ga760bcf26fdb23a2c3ecad3c928a19ae6',1,'glm']]], ['lowp_5fint8_5ft',['lowp_int8_t',['../a00304.html#ga119c41d73fe9977358174eb3ac1035a3',1,'glm']]], ['lowp_5fivec1',['lowp_ivec1',['../a00273.html#ga836dbb1dc516c233b7f5fe9763bc15dc',1,'glm']]], ['lowp_5fivec2',['lowp_ivec2',['../a00282.html#ga8433c6c1fdd80c0a83941d94aff73fa0',1,'glm']]], ['lowp_5fivec3',['lowp_ivec3',['../a00282.html#gac1a86a75b3c68ebb704d7094043669d6',1,'glm']]], ['lowp_5fivec4',['lowp_ivec4',['../a00282.html#ga27fc23da61859cd6356326c5f1c796de',1,'glm']]], ['lowp_5fmat2',['lowp_mat2',['../a00284.html#gae400c4ce1f5f3e1fa12861b2baed331a',1,'glm']]], ['lowp_5fmat2x2',['lowp_mat2x2',['../a00284.html#ga2df7cdaf9a571ce7a1b09435f502c694',1,'glm']]], ['lowp_5fmat2x3',['lowp_mat2x3',['../a00284.html#ga3eee3a74d0f1de8635d846dfb29ec4bb',1,'glm']]], ['lowp_5fmat2x4',['lowp_mat2x4',['../a00284.html#gade27f8324a16626cbce5d3e7da66b070',1,'glm']]], ['lowp_5fmat3',['lowp_mat3',['../a00284.html#ga6271ebc85ed778ccc15458c3d86fc854',1,'glm']]], ['lowp_5fmat3x2',['lowp_mat3x2',['../a00284.html#gaabf6cf90fd31efe25c94965507e98390',1,'glm']]], ['lowp_5fmat3x3',['lowp_mat3x3',['../a00284.html#ga63362cb4a63fc1be7d2e49cd5d574c84',1,'glm']]], ['lowp_5fmat3x4',['lowp_mat3x4',['../a00284.html#gac5fc6786688eff02904ca5e7d6960092',1,'glm']]], ['lowp_5fmat4',['lowp_mat4',['../a00284.html#ga2dedee030500865267cd5851c00c139d',1,'glm']]], ['lowp_5fmat4x2',['lowp_mat4x2',['../a00284.html#gafa3cdb8f24d09d761ec9ae2a4c7e5e21',1,'glm']]], ['lowp_5fmat4x3',['lowp_mat4x3',['../a00284.html#ga534c3ef5c3b8fdd8656b6afc205b4b77',1,'glm']]], ['lowp_5fmat4x4',['lowp_mat4x4',['../a00284.html#ga686468a9a815bd4db8cddae42a6d6b87',1,'glm']]], ['lowp_5fquat',['lowp_quat',['../a00253.html#gade62c5316c1c11a79c34c00c189558eb',1,'glm']]], ['lowp_5fu16',['lowp_u16',['../a00304.html#ga504ce1631cb2ac02fcf1d44d8c2aa126',1,'glm']]], ['lowp_5fu16vec1',['lowp_u16vec1',['../a00304.html#gaa6aab4ee7189b86716f5d7015d43021d',1,'glm']]], ['lowp_5fu16vec2',['lowp_u16vec2',['../a00304.html#ga2a7d997da9ac29cb931e35bd399f58df',1,'glm']]], ['lowp_5fu16vec3',['lowp_u16vec3',['../a00304.html#gac0253db6c3d3bae1f591676307a9dd8c',1,'glm']]], ['lowp_5fu16vec4',['lowp_u16vec4',['../a00304.html#gaa7f00459b9a2e5b2757e70afc0c189e1',1,'glm']]], ['lowp_5fu32',['lowp_u32',['../a00304.html#ga4f072ada9552e1e480bbb3b1acde5250',1,'glm']]], ['lowp_5fu32vec1',['lowp_u32vec1',['../a00304.html#gabed3be8dfdc4a0df4bf3271dbd7344c4',1,'glm']]], ['lowp_5fu32vec2',['lowp_u32vec2',['../a00304.html#gaf7e286e81347011e257ee779524e73b9',1,'glm']]], ['lowp_5fu32vec3',['lowp_u32vec3',['../a00304.html#gad3ad390560a671b1f676fbf03cd3aa15',1,'glm']]], ['lowp_5fu32vec4',['lowp_u32vec4',['../a00304.html#ga4502885718742aa238c36a312c3f3f20',1,'glm']]], ['lowp_5fu64',['lowp_u64',['../a00304.html#ga30069d1f02b19599cbfadf98c23ac6ed',1,'glm']]], ['lowp_5fu64vec1',['lowp_u64vec1',['../a00304.html#ga859be7b9d3a3765c1cafc14dbcf249a6',1,'glm']]], ['lowp_5fu64vec2',['lowp_u64vec2',['../a00304.html#ga581485db4ba6ddb501505ee711fd8e42',1,'glm']]], ['lowp_5fu64vec3',['lowp_u64vec3',['../a00304.html#gaa4a8682bec7ec8af666ef87fae38d5d1',1,'glm']]], ['lowp_5fu64vec4',['lowp_u64vec4',['../a00304.html#ga6fccc89c34045c86339f6fa781ce96de',1,'glm']]], ['lowp_5fu8',['lowp_u8',['../a00304.html#ga1b09f03da7ac43055c68a349d5445083',1,'glm']]], ['lowp_5fu8vec1',['lowp_u8vec1',['../a00304.html#ga4b2e0e10d8d154fec9cab50e216588ec',1,'glm']]], ['lowp_5fu8vec2',['lowp_u8vec2',['../a00304.html#gae6f63fa38635431e51a8f2602f15c566',1,'glm']]], ['lowp_5fu8vec3',['lowp_u8vec3',['../a00304.html#ga150dc47e31c6b8cf8461803c8d56f7bd',1,'glm']]], ['lowp_5fu8vec4',['lowp_u8vec4',['../a00304.html#ga9910927f3a4d1addb3da6a82542a8287',1,'glm']]], ['lowp_5fuint16',['lowp_uint16',['../a00304.html#gad68bfd9f881856fc863a6ebca0b67f78',1,'glm']]], ['lowp_5fuint16_5ft',['lowp_uint16_t',['../a00304.html#ga91c4815f93177eb423362fd296a87e9f',1,'glm']]], ['lowp_5fuint32',['lowp_uint32',['../a00304.html#gaa6a5b461bbf5fe20982472aa51896d4b',1,'glm']]], ['lowp_5fuint32_5ft',['lowp_uint32_t',['../a00304.html#gaf1b735b4b1145174f4e4167d13778f9b',1,'glm']]], ['lowp_5fuint64',['lowp_uint64',['../a00304.html#gaa212b805736a759998e312cbdd550fae',1,'glm']]], ['lowp_5fuint64_5ft',['lowp_uint64_t',['../a00304.html#ga8dd3a3281ae5c970ffe0c41d538aa153',1,'glm']]], ['lowp_5fuint8',['lowp_uint8',['../a00304.html#gaf49470869e9be2c059629b250619804e',1,'glm']]], ['lowp_5fuint8_5ft',['lowp_uint8_t',['../a00304.html#ga667b2ece2b258be898812dc2177995d1',1,'glm']]], ['lowp_5fumat2',['lowp_umat2',['../a00294.html#gaf2fba702d990437fc88ff3f3a76846ee',1,'glm']]], ['lowp_5fumat2x2',['lowp_umat2x2',['../a00294.html#ga7b2e9d89745f7175051284e54c81d81c',1,'glm']]], ['lowp_5fumat2x3',['lowp_umat2x3',['../a00294.html#ga3072f90fd86f17a862e21589fbb14c0f',1,'glm']]], ['lowp_5fumat2x4',['lowp_umat2x4',['../a00294.html#ga8bb45fec4bd77bd81b4ae7eb961a270d',1,'glm']]], ['lowp_5fumat3',['lowp_umat3',['../a00294.html#gaf1145f72bcdd590f5808c4bc170c2924',1,'glm']]], ['lowp_5fumat3x2',['lowp_umat3x2',['../a00294.html#ga56ea68c6a6cba8d8c21d17bb14e69c6b',1,'glm']]], ['lowp_5fumat3x3',['lowp_umat3x3',['../a00294.html#ga4f660a39a395cc14f018f985e7dfbeb5',1,'glm']]], ['lowp_5fumat3x4',['lowp_umat3x4',['../a00294.html#gaec3d624306bd59649f021864709d56b5',1,'glm']]], ['lowp_5fumat4',['lowp_umat4',['../a00294.html#gac092c6105827bf9ea080db38074b78eb',1,'glm']]], ['lowp_5fumat4x2',['lowp_umat4x2',['../a00294.html#ga7716c2b210d141846f1ac4e774adef5e',1,'glm']]], ['lowp_5fumat4x3',['lowp_umat4x3',['../a00294.html#ga09ab33a2636f5f43f7fae29cfbc20fff',1,'glm']]], ['lowp_5fumat4x4',['lowp_umat4x4',['../a00294.html#ga10aafc66cf1a0ece336b1c5ae13d0cc0',1,'glm']]], ['lowp_5fuvec1',['lowp_uvec1',['../a00277.html#ga8bf3fc8a7863d140f48b29341c750402',1,'glm']]], ['lowp_5fuvec2',['lowp_uvec2',['../a00282.html#ga752ee45136011301b64afd8c310c47a4',1,'glm']]], ['lowp_5fuvec3',['lowp_uvec3',['../a00282.html#ga7b2efbdd6bdc2f8250c57f3e5dc9a292',1,'glm']]], ['lowp_5fuvec4',['lowp_uvec4',['../a00282.html#ga5e6a632ec1165cf9f54ceeaa5e9b2b1e',1,'glm']]], ['lowp_5fvec1',['lowp_vec1',['../a00271.html#ga0a57630f03031706b1d26a7d70d9184c',1,'glm']]], ['lowp_5fvec2',['lowp_vec2',['../a00282.html#ga30e8baef5d56d5c166872a2bc00f36e9',1,'glm']]], ['lowp_5fvec3',['lowp_vec3',['../a00282.html#ga868e8e4470a3ef97c7ee3032bf90dc79',1,'glm']]], ['lowp_5fvec4',['lowp_vec4',['../a00282.html#gace3acb313c800552a9411953eb8b2ed7',1,'glm']]], ['luminosity',['luminosity',['../a00312.html#gad028e0a4f1a9c812b39439b746295b34',1,'glm']]], ['lxnorm',['lxNorm',['../a00343.html#gacad23d30497eb16f67709f2375d1f66a',1,'glm::lxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)'],['../a00343.html#gac61b6d81d796d6eb4d4183396a19ab91',1,'glm::lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_a.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_a.js ================================================ var searchData= [ ['matrix_20functions',['Matrix functions',['../a00371.html',1,'']]], ['matrix_20types',['Matrix types',['../a00283.html',1,'']]], ['matrix_20types_20with_20precision_20qualifiers',['Matrix types with precision qualifiers',['../a00284.html',1,'']]], ['make_5fmat2',['make_mat2',['../a00305.html#ga04409e74dc3da251d2501acf5b4b546c',1,'glm']]], ['make_5fmat2x2',['make_mat2x2',['../a00305.html#gae49e1c7bcd5abec74d1c34155031f663',1,'glm']]], ['make_5fmat2x3',['make_mat2x3',['../a00305.html#ga21982104164789cf8985483aaefc25e8',1,'glm']]], ['make_5fmat2x4',['make_mat2x4',['../a00305.html#ga078b862c90b0e9a79ed43a58997d8388',1,'glm']]], ['make_5fmat3',['make_mat3',['../a00305.html#ga611ee7c4d4cadfc83a8fa8e1d10a170f',1,'glm']]], ['make_5fmat3x2',['make_mat3x2',['../a00305.html#ga27a24e121dc39e6857620e0f85b6e1a8',1,'glm']]], ['make_5fmat3x3',['make_mat3x3',['../a00305.html#gaf2e8337b15c3362aaeb6e5849e1c0536',1,'glm']]], ['make_5fmat3x4',['make_mat3x4',['../a00305.html#ga05dd66232aedb993e3b8e7b35eaf932b',1,'glm']]], ['make_5fmat4',['make_mat4',['../a00305.html#gae7bcedb710d1446c87fd1fc93ed8ee9a',1,'glm']]], ['make_5fmat4x2',['make_mat4x2',['../a00305.html#ga8b34c9b25bf3310d8ff9c828c7e2d97c',1,'glm']]], ['make_5fmat4x3',['make_mat4x3',['../a00305.html#ga0330bf6640092d7985fac92927bbd42b',1,'glm']]], ['make_5fmat4x4',['make_mat4x4',['../a00305.html#ga8f084be30e404844bfbb4a551ac2728c',1,'glm']]], ['make_5fquat',['make_quat',['../a00305.html#ga58110d7d81cf7d029e2bab7f8cd9b246',1,'glm']]], ['make_5fvec1',['make_vec1',['../a00305.html#ga4135f03f3049f0a4eb76545c4967957c',1,'glm::make_vec1(vec< 1, T, Q > const &v)'],['../a00305.html#ga13c92b81e55f201b052a6404d57da220',1,'glm::make_vec1(vec< 2, T, Q > const &v)'],['../a00305.html#ga3c23cc74086d361e22bbd5e91a334e03',1,'glm::make_vec1(vec< 3, T, Q > const &v)'],['../a00305.html#ga6af06bb60d64ca8bcd169e3c93bc2419',1,'glm::make_vec1(vec< 4, T, Q > const &v)']]], ['make_5fvec2',['make_vec2',['../a00305.html#ga8476d0e6f1b9b4a6193cc25f59d8a896',1,'glm::make_vec2(vec< 1, T, Q > const &v)'],['../a00305.html#gae54bd325a08ad26edf63929201adebc7',1,'glm::make_vec2(vec< 2, T, Q > const &v)'],['../a00305.html#ga0084fea4694cf47276e9cccbe7b1015a',1,'glm::make_vec2(vec< 3, T, Q > const &v)'],['../a00305.html#ga2b81f71f3a222fe5bba81e3983751249',1,'glm::make_vec2(vec< 4, T, Q > const &v)'],['../a00305.html#ga81253cf7b0ebfbb1e70540c5774e6824',1,'glm::make_vec2(T const *const ptr)']]], ['make_5fvec3',['make_vec3',['../a00305.html#ga9147e4b3a5d0f4772edfbfd179d7ea0b',1,'glm::make_vec3(vec< 1, T, Q > const &v)'],['../a00305.html#ga482b60a842a5b154d3eed392417a9511',1,'glm::make_vec3(vec< 2, T, Q > const &v)'],['../a00305.html#gacd57046034df557b8b1c457f58613623',1,'glm::make_vec3(vec< 3, T, Q > const &v)'],['../a00305.html#ga8b589ed7d41a298b516d2a69169248f1',1,'glm::make_vec3(vec< 4, T, Q > const &v)'],['../a00305.html#gad9e0d36ff489cb30c65ad1fa40351651',1,'glm::make_vec3(T const *const ptr)']]], ['make_5fvec4',['make_vec4',['../a00305.html#ga600cb97f70c5d50d3a4a145e1cafbf37',1,'glm::make_vec4(vec< 1, T, Q > const &v)'],['../a00305.html#gaa9bd116caf28196fd1cf00b278286fa7',1,'glm::make_vec4(vec< 2, T, Q > const &v)'],['../a00305.html#ga4036328ba4702c74cbdfad1fc03d1b8f',1,'glm::make_vec4(vec< 3, T, Q > const &v)'],['../a00305.html#gaa95cb15732f708f613e65a0578895ae5',1,'glm::make_vec4(vec< 4, T, Q > const &v)'],['../a00305.html#ga63f576518993efc22a969f18f80e29bb',1,'glm::make_vec4(T const *const ptr)']]], ['mask',['mask',['../a00288.html#gad7eba518a0b71662114571ee76939f8a',1,'glm::mask(genIUType Bits)'],['../a00288.html#ga2e64e3b922a296033b825311e7f5fff1',1,'glm::mask(vec< L, T, Q > const &v)']]], ['mat2',['mat2',['../a00283.html#ga8dd59e7fc6913ac5d61b86553e9148ba',1,'glm']]], ['mat2x2',['mat2x2',['../a00283.html#gaaa17ef6bfa4e4f2692348b1460c8efcb',1,'glm']]], ['mat2x2_2ehpp',['mat2x2.hpp',['../a00048.html',1,'']]], ['mat2x3',['mat2x3',['../a00283.html#ga493ab21243abe564b3f7d381e677d29a',1,'glm']]], ['mat2x3_2ehpp',['mat2x3.hpp',['../a00049.html',1,'']]], ['mat2x4',['mat2x4',['../a00283.html#ga8e879b57ddd81e5bf5a88929844e8b40',1,'glm']]], ['mat2x4_2ehpp',['mat2x4.hpp',['../a00050.html',1,'']]], ['mat2x4_5fcast',['mat2x4_cast',['../a00317.html#gae99d143b37f9cad4cd9285571aab685a',1,'glm']]], ['mat3',['mat3',['../a00283.html#gaefb0fc7a4960b782c18708bb6b655262',1,'glm']]], ['mat3_5fcast',['mat3_cast',['../a00299.html#ga333ab70047fbe4132406100c292dbc89',1,'glm']]], ['mat3x2',['mat3x2',['../a00280.html#ga2c27aea32de57d58aec8e92d5d2181e2',1,'glm']]], ['mat3x2_2ehpp',['mat3x2.hpp',['../a00051.html',1,'']]], ['mat3x3',['mat3x3',['../a00283.html#gab91887d7565059dac640e3a1921c914a',1,'glm']]], ['mat3x3_2ehpp',['mat3x3.hpp',['../a00052.html',1,'']]], ['mat3x4',['mat3x4',['../a00283.html#gaf991cad0b34f64e33af186326dbc4d66',1,'glm']]], ['mat3x4_2ehpp',['mat3x4.hpp',['../a00053.html',1,'']]], ['mat3x4_5fcast',['mat3x4_cast',['../a00317.html#gaf59f5bb69620d2891c3795c6f2639179',1,'glm']]], ['mat4',['mat4',['../a00283.html#ga0db98d836c5549d31cf64ecd043b7af7',1,'glm']]], ['mat4_5fcast',['mat4_cast',['../a00299.html#ga1113212d9bdefc2e31ad40e5bbb506f3',1,'glm']]], ['mat4x2',['mat4x2',['../a00283.html#gad941c947ad6cdd117a0e8554a4754983',1,'glm']]], ['mat4x2_2ehpp',['mat4x2.hpp',['../a00054.html',1,'']]], ['mat4x3',['mat4x3',['../a00283.html#gac7574544bb94777bdbd2eb224eb72fd0',1,'glm']]], ['mat4x3_2ehpp',['mat4x3.hpp',['../a00055.html',1,'']]], ['mat4x4',['mat4x4',['../a00283.html#gab2d35cc2655f44d60958d60a1de34e81',1,'glm']]], ['mat4x4_2ehpp',['mat4x4.hpp',['../a00056.html',1,'']]], ['matrix_2ehpp',['matrix.hpp',['../a00057.html',1,'']]], ['matrix_5faccess_2ehpp',['matrix_access.hpp',['../a00058.html',1,'']]], ['matrix_5fclip_5fspace_2ehpp',['matrix_clip_space.hpp',['../a00059.html',1,'']]], ['matrix_5fcommon_2ehpp',['matrix_common.hpp',['../a00060.html',1,'']]], ['matrix_5fcross_5fproduct_2ehpp',['matrix_cross_product.hpp',['../a00061.html',1,'']]], ['matrix_5fdecompose_2ehpp',['matrix_decompose.hpp',['../a00062.html',1,'']]], ['matrix_5fdouble2x2_2ehpp',['matrix_double2x2.hpp',['../a00063.html',1,'']]], ['matrix_5fdouble2x2_5fprecision_2ehpp',['matrix_double2x2_precision.hpp',['../a00064.html',1,'']]], ['matrix_5fdouble2x3_2ehpp',['matrix_double2x3.hpp',['../a00065.html',1,'']]], ['matrix_5fdouble2x3_5fprecision_2ehpp',['matrix_double2x3_precision.hpp',['../a00066.html',1,'']]], ['matrix_5fdouble2x4_2ehpp',['matrix_double2x4.hpp',['../a00067.html',1,'']]], ['matrix_5fdouble2x4_5fprecision_2ehpp',['matrix_double2x4_precision.hpp',['../a00068.html',1,'']]], ['matrix_5fdouble3x2_2ehpp',['matrix_double3x2.hpp',['../a00069.html',1,'']]], ['matrix_5fdouble3x2_5fprecision_2ehpp',['matrix_double3x2_precision.hpp',['../a00070.html',1,'']]], ['matrix_5fdouble3x3_2ehpp',['matrix_double3x3.hpp',['../a00071.html',1,'']]], ['matrix_5fdouble3x3_5fprecision_2ehpp',['matrix_double3x3_precision.hpp',['../a00072.html',1,'']]], ['matrix_5fdouble3x4_2ehpp',['matrix_double3x4.hpp',['../a00073.html',1,'']]], ['matrix_5fdouble3x4_5fprecision_2ehpp',['matrix_double3x4_precision.hpp',['../a00074.html',1,'']]], ['matrix_5fdouble4x2_2ehpp',['matrix_double4x2.hpp',['../a00075.html',1,'']]], ['matrix_5fdouble4x2_5fprecision_2ehpp',['matrix_double4x2_precision.hpp',['../a00076.html',1,'']]], ['matrix_5fdouble4x3_2ehpp',['matrix_double4x3.hpp',['../a00077.html',1,'']]], ['matrix_5fdouble4x3_5fprecision_2ehpp',['matrix_double4x3_precision.hpp',['../a00078.html',1,'']]], ['matrix_5fdouble4x4_2ehpp',['matrix_double4x4.hpp',['../a00079.html',1,'']]], ['matrix_5fdouble4x4_5fprecision_2ehpp',['matrix_double4x4_precision.hpp',['../a00080.html',1,'']]], ['matrix_5ffactorisation_2ehpp',['matrix_factorisation.hpp',['../a00081.html',1,'']]], ['matrix_5ffloat2x2_2ehpp',['matrix_float2x2.hpp',['../a00082.html',1,'']]], ['matrix_5ffloat2x2_5fprecision_2ehpp',['matrix_float2x2_precision.hpp',['../a00083.html',1,'']]], ['matrix_5ffloat2x3_2ehpp',['matrix_float2x3.hpp',['../a00084.html',1,'']]], ['matrix_5ffloat2x3_5fprecision_2ehpp',['matrix_float2x3_precision.hpp',['../a00085.html',1,'']]], ['matrix_5ffloat2x4_2ehpp',['matrix_float2x4.hpp',['../a00086.html',1,'']]], ['matrix_5ffloat2x4_5fprecision_2ehpp',['matrix_float2x4_precision.hpp',['../a00087.html',1,'']]], ['matrix_5ffloat3x2_2ehpp',['matrix_float3x2.hpp',['../a00088.html',1,'']]], ['matrix_5ffloat3x2_5fprecision_2ehpp',['matrix_float3x2_precision.hpp',['../a00089.html',1,'']]], ['matrix_5ffloat3x3_2ehpp',['matrix_float3x3.hpp',['../a00090.html',1,'']]], ['matrix_5ffloat3x3_5fprecision_2ehpp',['matrix_float3x3_precision.hpp',['../a00091.html',1,'']]], ['matrix_5ffloat3x4_2ehpp',['matrix_float3x4.hpp',['../a00092.html',1,'']]], ['matrix_5ffloat3x4_5fprecision_2ehpp',['matrix_float3x4_precision.hpp',['../a00093.html',1,'']]], ['matrix_5ffloat4x2_2ehpp',['matrix_float4x2.hpp',['../a00094.html',1,'']]], ['matrix_5ffloat4x3_2ehpp',['matrix_float4x3.hpp',['../a00096.html',1,'']]], ['matrix_5ffloat4x3_5fprecision_2ehpp',['matrix_float4x3_precision.hpp',['../a00097.html',1,'']]], ['matrix_5ffloat4x4_2ehpp',['matrix_float4x4.hpp',['../a00098.html',1,'']]], ['matrix_5ffloat4x4_5fprecision_2ehpp',['matrix_float4x4_precision.hpp',['../a00099.html',1,'']]], ['matrix_5finteger_2ehpp',['matrix_integer.hpp',['../a00100.html',1,'']]], ['matrix_5finterpolation_2ehpp',['matrix_interpolation.hpp',['../a00101.html',1,'']]], ['matrix_5finverse_2ehpp',['matrix_inverse.hpp',['../a00102.html',1,'']]], ['matrix_5fmajor_5fstorage_2ehpp',['matrix_major_storage.hpp',['../a00103.html',1,'']]], ['matrix_5foperation_2ehpp',['matrix_operation.hpp',['../a00104.html',1,'']]], ['matrix_5fprojection_2ehpp',['matrix_projection.hpp',['../a00105.html',1,'']]], ['matrix_5fquery_2ehpp',['matrix_query.hpp',['../a00106.html',1,'']]], ['matrix_5frelational_2ehpp',['matrix_relational.hpp',['../a00107.html',1,'']]], ['matrix_5ftransform_5f2d_2ehpp',['matrix_transform_2d.hpp',['../a00110.html',1,'']]], ['matrixcompmult',['matrixCompMult',['../a00371.html#gaf14569404c779fedca98d0b9b8e58c1f',1,'glm']]], ['matrixcross3',['matrixCross3',['../a00334.html#ga5802386bb4c37b3332a3b6fd8b6960ff',1,'glm']]], ['matrixcross4',['matrixCross4',['../a00334.html#ga20057fff91ddafa102934adb25458cde',1,'glm']]], ['max',['max',['../a00241.html#gae02d42887fc5570451f880e3c624b9ac',1,'glm::max(genType x, genType y)'],['../a00241.html#ga03e45d6e60d1c36edb00c52edeea0f31',1,'glm::max(vec< L, T, Q > const &x, T y)'],['../a00241.html#gac1fec0c3303b572a6d4697a637213870',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#gaa20839d9ab14514f8966f69877ea0de8',1,'glm::max(T a, T b, T c)'],['../a00258.html#ga2274b5e75ed84b0b1e50d8d22f1f2f67',1,'glm::max(T a, T b, T c, T d)'],['../a00267.html#gaa45d34f6a2906f8bf58ab2ba5429234d',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)'],['../a00267.html#ga94d42b8da2b4ded5ddf7504fbdc6bf10',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)'],['../a00321.html#ga04991ccb9865c4c4e58488cfb209ce69',1,'glm::max(T const &x, T const &y, T const &z)'],['../a00321.html#gae1b7bbe5c91de4924835ea3e14530744',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#gaf832e9d4ab4826b2dda2fda25935a3a4',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga78e04a0cef1c4863fcae1a2130500d87',1,'glm::max(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga7cca8b53cfda402040494cdf40fbdf4a',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#gaacffbc466c2d08c140b181e7fd8a4858',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], ['mediump_5fbvec1',['mediump_bvec1',['../a00266.html#ga7b4ccb989ba179fa44f7b0879c782621',1,'glm']]], ['mediump_5fbvec2',['mediump_bvec2',['../a00282.html#ga1e743764869efa9223c2bcefccedaddc',1,'glm']]], ['mediump_5fbvec3',['mediump_bvec3',['../a00282.html#ga50c783c25082882ef00fe2e5cddba4aa',1,'glm']]], ['mediump_5fbvec4',['mediump_bvec4',['../a00282.html#ga0be2c682258604a35004f088782a9645',1,'glm']]], ['mediump_5fddualquat',['mediump_ddualquat',['../a00317.html#ga0fb11e48e2d16348ccb06a25213641b4',1,'glm']]], ['mediump_5fdmat2',['mediump_dmat2',['../a00284.html#ga6205fd19be355600334edef6af0b27cb',1,'glm']]], ['mediump_5fdmat2x2',['mediump_dmat2x2',['../a00284.html#ga51dc36a7719cb458fa5114831c20d64f',1,'glm']]], ['mediump_5fdmat2x3',['mediump_dmat2x3',['../a00284.html#ga741e05adf1f12d5d913f67088db1009a',1,'glm']]], ['mediump_5fdmat2x4',['mediump_dmat2x4',['../a00284.html#ga685bda24922d112786af385deb4deb43',1,'glm']]], ['mediump_5fdmat3',['mediump_dmat3',['../a00284.html#ga939fbf9c53008a8e84c7dd7cf8de29e2',1,'glm']]], ['mediump_5fdmat3x2',['mediump_dmat3x2',['../a00284.html#ga2076157df85e49b8c021e03e46a376c1',1,'glm']]], ['mediump_5fdmat3x3',['mediump_dmat3x3',['../a00284.html#ga47bd2aae4701ee2fc865674a9df3d7a6',1,'glm']]], ['mediump_5fdmat3x4',['mediump_dmat3x4',['../a00284.html#ga3a132bd05675c2e46556f67cf738600b',1,'glm']]], ['mediump_5fdmat4',['mediump_dmat4',['../a00284.html#gaf650bc667bf2a0e496b5a9182bc8d378',1,'glm']]], ['mediump_5fdmat4x2',['mediump_dmat4x2',['../a00284.html#gae220fa4c5a7b13ef2ab0420340de645c',1,'glm']]], ['mediump_5fdmat4x3',['mediump_dmat4x3',['../a00284.html#ga43ef60e4d996db15c9c8f069a96ff763',1,'glm']]], ['mediump_5fdmat4x4',['mediump_dmat4x4',['../a00284.html#ga5389b3ab32dc0d72bea00057ab6d1dd3',1,'glm']]], ['mediump_5fdquat',['mediump_dquat',['../a00250.html#gacdf73b1f7fd8f5a0c79a3934e99c1a14',1,'glm']]], ['mediump_5fdualquat',['mediump_dualquat',['../a00317.html#gaa7aeb54c167712b38f2178a1be2360ad',1,'glm']]], ['mediump_5fdvec1',['mediump_dvec1',['../a00269.html#ga79a789ebb176b37a45848f7ccdd3b3dd',1,'glm']]], ['mediump_5fdvec2',['mediump_dvec2',['../a00282.html#ga2f4f6e9a69a0281d06940fd0990cafc3',1,'glm']]], ['mediump_5fdvec3',['mediump_dvec3',['../a00282.html#ga61c3b1dff4ec7c878af80503141b9f37',1,'glm']]], ['mediump_5fdvec4',['mediump_dvec4',['../a00282.html#ga23a8bca00914a51542bfea13a4778186',1,'glm']]], ['mediump_5ff32',['mediump_f32',['../a00304.html#ga3b27fcd9eaa2757f0aaf6b0ce0d85c80',1,'glm']]], ['mediump_5ff32mat2',['mediump_f32mat2',['../a00304.html#gaf9020c6176a75bc84828ab01ea7dac25',1,'glm']]], ['mediump_5ff32mat2x2',['mediump_f32mat2x2',['../a00304.html#gaa3ca74a44102035b3ffb5c9c52dfdd3f',1,'glm']]], ['mediump_5ff32mat2x3',['mediump_f32mat2x3',['../a00304.html#gad4cc829ab1ad3e05ac0a24828a3c95cf',1,'glm']]], ['mediump_5ff32mat2x4',['mediump_f32mat2x4',['../a00304.html#gae71445ac6cd0b9fba3e5c905cd030fb1',1,'glm']]], ['mediump_5ff32mat3',['mediump_f32mat3',['../a00304.html#gaaaf878d0d7bfc0aac054fe269a886ca8',1,'glm']]], ['mediump_5ff32mat3x2',['mediump_f32mat3x2',['../a00304.html#gaaab39454f56cf9fc6d940358ce5e6a0f',1,'glm']]], ['mediump_5ff32mat3x3',['mediump_f32mat3x3',['../a00304.html#gacd80ad7640e9e32f2edcb8330b1ffe4f',1,'glm']]], ['mediump_5ff32mat3x4',['mediump_f32mat3x4',['../a00304.html#ga8df705d775b776f5ae6b39e2ab892899',1,'glm']]], ['mediump_5ff32mat4',['mediump_f32mat4',['../a00304.html#ga4491baaebbc46a20f1cb5da985576bf4',1,'glm']]], ['mediump_5ff32mat4x2',['mediump_f32mat4x2',['../a00304.html#gab005efe0fa4de1a928e8ddec4bc2c43f',1,'glm']]], ['mediump_5ff32mat4x3',['mediump_f32mat4x3',['../a00304.html#gade108f16633cf95fa500b5b8c36c8b00',1,'glm']]], ['mediump_5ff32mat4x4',['mediump_f32mat4x4',['../a00304.html#ga936e95b881ecd2d109459ca41913fa99',1,'glm']]], ['mediump_5ff32quat',['mediump_f32quat',['../a00304.html#gaa40c03d52dbfbfaf03e75773b9606ff3',1,'glm']]], ['mediump_5ff32vec1',['mediump_f32vec1',['../a00304.html#gabb33cab7d7c74cc14aa95455d0690865',1,'glm']]], ['mediump_5ff32vec2',['mediump_f32vec2',['../a00304.html#gad6eb11412a3161ca8dc1d63b2a307c4b',1,'glm']]], ['mediump_5ff32vec3',['mediump_f32vec3',['../a00304.html#ga062ffef2973bd8241df993c3b30b327c',1,'glm']]], ['mediump_5ff32vec4',['mediump_f32vec4',['../a00304.html#gad80c84bcd5f585840faa6179f6fd446c',1,'glm']]], ['mediump_5ff64',['mediump_f64',['../a00304.html#ga6d40381d78472553f878f66e443feeef',1,'glm']]], ['mediump_5ff64mat2',['mediump_f64mat2',['../a00304.html#gac1281da5ded55047e8892b0e1f1ae965',1,'glm']]], ['mediump_5ff64mat2x2',['mediump_f64mat2x2',['../a00304.html#ga4fd527644cccbca4cb205320eab026f3',1,'glm']]], ['mediump_5ff64mat2x3',['mediump_f64mat2x3',['../a00304.html#gafd9a6ebc0c7b95f5c581d00d16a17c54',1,'glm']]], ['mediump_5ff64mat2x4',['mediump_f64mat2x4',['../a00304.html#gaf306dd69e53633636aee38cea79d4cb7',1,'glm']]], ['mediump_5ff64mat3',['mediump_f64mat3',['../a00304.html#gad35fb67eb1d03c5a514f0bd7aed1c776',1,'glm']]], ['mediump_5ff64mat3x2',['mediump_f64mat3x2',['../a00304.html#gacd926d36a72433f6cac51dd60fa13107',1,'glm']]], ['mediump_5ff64mat3x3',['mediump_f64mat3x3',['../a00304.html#ga84d88a6e3a54ccd2b67e195af4a4c23e',1,'glm']]], ['mediump_5ff64mat3x4',['mediump_f64mat3x4',['../a00304.html#gad38c544d332b8c4bd0b70b1bd9feccc2',1,'glm']]], ['mediump_5ff64mat4',['mediump_f64mat4',['../a00304.html#gaa805ef691c711dc41e2776cfb67f5cf5',1,'glm']]], ['mediump_5ff64mat4x2',['mediump_f64mat4x2',['../a00304.html#ga17d36f0ea22314117e1cec9594b33945',1,'glm']]], ['mediump_5ff64mat4x3',['mediump_f64mat4x3',['../a00304.html#ga54697a78f9a4643af6a57fc2e626ec0d',1,'glm']]], ['mediump_5ff64mat4x4',['mediump_f64mat4x4',['../a00304.html#ga66edb8de17b9235029472f043ae107e9',1,'glm']]], ['mediump_5ff64quat',['mediump_f64quat',['../a00304.html#ga5e52f485059ce6e3010c590b882602c9',1,'glm']]], ['mediump_5ff64vec1',['mediump_f64vec1',['../a00304.html#gac30fdf8afa489400053275b6a3350127',1,'glm']]], ['mediump_5ff64vec2',['mediump_f64vec2',['../a00304.html#ga8ebc04ecf6440c4ee24718a16600ce6b',1,'glm']]], ['mediump_5ff64vec3',['mediump_f64vec3',['../a00304.html#ga461c4c7d0757404dd0dba931760b25cf',1,'glm']]], ['mediump_5ff64vec4',['mediump_f64vec4',['../a00304.html#gacfea053bd6bb3eddb996a4f94de22a3e',1,'glm']]], ['mediump_5ffdualquat',['mediump_fdualquat',['../a00317.html#ga4a6b594ff7e81150d8143001367a9431',1,'glm']]], ['mediump_5ffloat32',['mediump_float32',['../a00304.html#ga7812bf00676fb1a86dcd62cca354d2c7',1,'glm']]], ['mediump_5ffloat32_5ft',['mediump_float32_t',['../a00304.html#gae4dee61f8fe1caccec309fbed02faf12',1,'glm']]], ['mediump_5ffloat64',['mediump_float64',['../a00304.html#gab83d8aae6e4f115e97a785e8574a115f',1,'glm']]], ['mediump_5ffloat64_5ft',['mediump_float64_t',['../a00304.html#gac61843e4fa96c1f4e9d8316454f32a8e',1,'glm']]], ['mediump_5ffmat2',['mediump_fmat2',['../a00304.html#ga74e9133378fd0b4da8ac0bc0876702ff',1,'glm']]], ['mediump_5ffmat2x2',['mediump_fmat2x2',['../a00304.html#ga98a687c17b174ea316b5f397b64f44bc',1,'glm']]], ['mediump_5ffmat2x3',['mediump_fmat2x3',['../a00304.html#gaa03f939d90d5ef157df957d93f0b9a64',1,'glm']]], ['mediump_5ffmat2x4',['mediump_fmat2x4',['../a00304.html#ga35223623e9ccebd8a281873b71b7d213',1,'glm']]], ['mediump_5ffmat3',['mediump_fmat3',['../a00304.html#ga80823dfad5dba98512c76af498343847',1,'glm']]], ['mediump_5ffmat3x2',['mediump_fmat3x2',['../a00304.html#ga42569e5b92f8635cedeadb1457ee1467',1,'glm']]], ['mediump_5ffmat3x3',['mediump_fmat3x3',['../a00304.html#gaa6f526388c74a66b3d52315a14d434ae',1,'glm']]], ['mediump_5ffmat3x4',['mediump_fmat3x4',['../a00304.html#gaefe8ef520c6cb78590ebbefe648da4d4',1,'glm']]], ['mediump_5ffmat4',['mediump_fmat4',['../a00304.html#gac1c38778c0b5a1263f07753c05a4f7b9',1,'glm']]], ['mediump_5ffmat4x2',['mediump_fmat4x2',['../a00304.html#gacea38a85893e17e6834b6cb09a9ad0cf',1,'glm']]], ['mediump_5ffmat4x3',['mediump_fmat4x3',['../a00304.html#ga41ad497f7eae211556aefd783cb02b90',1,'glm']]], ['mediump_5ffmat4x4',['mediump_fmat4x4',['../a00304.html#ga22e27beead07bff4d5ce9d6065a57279',1,'glm']]], ['mediump_5ffvec1',['mediump_fvec1',['../a00304.html#ga367964fc2133d3f1b5b3755ff9cf6c9b',1,'glm']]], ['mediump_5ffvec2',['mediump_fvec2',['../a00304.html#ga44bfa55cda5dbf53f24a1fb7610393d6',1,'glm']]], ['mediump_5ffvec3',['mediump_fvec3',['../a00304.html#ga999dc6703ad16e3d3c26b74ea8083f07',1,'glm']]], ['mediump_5ffvec4',['mediump_fvec4',['../a00304.html#ga1bed890513c0f50b7e7ba4f7f359dbfb',1,'glm']]], ['mediump_5fi16',['mediump_i16',['../a00304.html#ga62a17cddeb4dffb4e18fe3aea23f051a',1,'glm']]], ['mediump_5fi16vec1',['mediump_i16vec1',['../a00304.html#gacc44265ed440bf5e6e566782570de842',1,'glm']]], ['mediump_5fi16vec2',['mediump_i16vec2',['../a00304.html#ga4b5e2c9aaa5d7717bf71179aefa12e88',1,'glm']]], ['mediump_5fi16vec3',['mediump_i16vec3',['../a00304.html#ga3be6c7fc5fe08fa2274bdb001d5f2633',1,'glm']]], ['mediump_5fi16vec4',['mediump_i16vec4',['../a00304.html#gaf52982bb23e3a3772649b2c5bb84b107',1,'glm']]], ['mediump_5fi32',['mediump_i32',['../a00304.html#gaf5e94bf2a20af7601787c154751dc2e1',1,'glm']]], ['mediump_5fi32vec1',['mediump_i32vec1',['../a00304.html#ga46a57f71e430637559097a732b550a7e',1,'glm']]], ['mediump_5fi32vec2',['mediump_i32vec2',['../a00304.html#ga20bf224bd4f8a24ecc4ed2004a40c219',1,'glm']]], ['mediump_5fi32vec3',['mediump_i32vec3',['../a00304.html#ga13a221b910aa9eb1b04ca1c86e81015a',1,'glm']]], ['mediump_5fi32vec4',['mediump_i32vec4',['../a00304.html#ga6addd4dfee87fc09ab9525e3d07db4c8',1,'glm']]], ['mediump_5fi64',['mediump_i64',['../a00304.html#ga3ebcb1f6d8d8387253de8bccb058d77f',1,'glm']]], ['mediump_5fi64vec1',['mediump_i64vec1',['../a00304.html#ga8343e9d244fb17a5bbf0d94d36b3695e',1,'glm']]], ['mediump_5fi64vec2',['mediump_i64vec2',['../a00304.html#ga2c94aeae3457325944ca1059b0b68330',1,'glm']]], ['mediump_5fi64vec3',['mediump_i64vec3',['../a00304.html#ga8089722ffdf868cdfe721dea1fb6a90e',1,'glm']]], ['mediump_5fi64vec4',['mediump_i64vec4',['../a00304.html#gabf1f16c5ab8cb0484bd1e846ae4368f1',1,'glm']]], ['mediump_5fi8',['mediump_i8',['../a00304.html#gacf1ded173e1e2d049c511d095b259e21',1,'glm']]], ['mediump_5fi8vec1',['mediump_i8vec1',['../a00304.html#ga85e8893f4ae3630065690a9000c0c483',1,'glm']]], ['mediump_5fi8vec2',['mediump_i8vec2',['../a00304.html#ga2a8bdc32184ea0a522ef7bd90640cf67',1,'glm']]], ['mediump_5fi8vec3',['mediump_i8vec3',['../a00304.html#ga6dd1c1618378c6f94d522a61c28773c9',1,'glm']]], ['mediump_5fi8vec4',['mediump_i8vec4',['../a00304.html#gac7bb04fb857ef7b520e49f6c381432be',1,'glm']]], ['mediump_5fimat2',['mediump_imat2',['../a00294.html#ga20f4cc7ab23e2aa1f4db9fdb5496d378',1,'glm']]], ['mediump_5fimat2x2',['mediump_imat2x2',['../a00294.html#ga4b2aeb11a329940721dda9583e71f856',1,'glm']]], ['mediump_5fimat2x3',['mediump_imat2x3',['../a00294.html#ga74362470ba99843ac70aee5ac38cc674',1,'glm']]], ['mediump_5fimat2x4',['mediump_imat2x4',['../a00294.html#ga8da25cd380ba30fc5b68a4687deb3e09',1,'glm']]], ['mediump_5fimat3',['mediump_imat3',['../a00294.html#ga6c63bdc736efd3466e0730de0251cb71',1,'glm']]], ['mediump_5fimat3x2',['mediump_imat3x2',['../a00294.html#gac0b4e42d648fb3eaf4bb88da82ecc809',1,'glm']]], ['mediump_5fimat3x3',['mediump_imat3x3',['../a00294.html#gad99cc2aad8fc57f068cfa7719dbbea12',1,'glm']]], ['mediump_5fimat3x4',['mediump_imat3x4',['../a00294.html#ga67689a518b181a26540bc44a163525cd',1,'glm']]], ['mediump_5fimat4',['mediump_imat4',['../a00294.html#gaf348552978553630d2a00b78eb887ced',1,'glm']]], ['mediump_5fimat4x2',['mediump_imat4x2',['../a00294.html#ga8b2d35816f7103f0f4c82dd2f27571fc',1,'glm']]], ['mediump_5fimat4x3',['mediump_imat4x3',['../a00294.html#ga5b10acc696759e03f6ab918f4467e94c',1,'glm']]], ['mediump_5fimat4x4',['mediump_imat4x4',['../a00294.html#ga2596869d154dec1180beadbb9df80501',1,'glm']]], ['mediump_5fint16',['mediump_int16',['../a00304.html#gadff3608baa4b5bd3ed28f95c1c2c345d',1,'glm']]], ['mediump_5fint16_5ft',['mediump_int16_t',['../a00304.html#ga80e72fe94c88498537e8158ba7591c54',1,'glm']]], ['mediump_5fint32',['mediump_int32',['../a00304.html#ga5244cef85d6e870e240c76428a262ae8',1,'glm']]], ['mediump_5fint32_5ft',['mediump_int32_t',['../a00304.html#ga26fc7ced1ad7ca5024f1c973c8dc9180',1,'glm']]], ['mediump_5fint64',['mediump_int64',['../a00304.html#ga7b968f2b86a0442a89c7359171e1d866',1,'glm']]], ['mediump_5fint64_5ft',['mediump_int64_t',['../a00304.html#gac3bc41bcac61d1ba8f02a6f68ce23f64',1,'glm']]], ['mediump_5fint8',['mediump_int8',['../a00304.html#ga6fbd69cbdaa44345bff923a2cf63de7e',1,'glm']]], ['mediump_5fint8_5ft',['mediump_int8_t',['../a00304.html#ga6d7b3789ecb932c26430009478cac7ae',1,'glm']]], ['mediump_5fivec1',['mediump_ivec1',['../a00273.html#gad628c608970b3d0aa6cfb63ce6e53e56',1,'glm']]], ['mediump_5fivec2',['mediump_ivec2',['../a00282.html#gac57496299d276ed97044074097bd5e2c',1,'glm']]], ['mediump_5fivec3',['mediump_ivec3',['../a00282.html#ga27cfb51e0dbe15bba27a14a8590e8466',1,'glm']]], ['mediump_5fivec4',['mediump_ivec4',['../a00282.html#ga92a204c37e66ac6c1dc7ae91142f2ea5',1,'glm']]], ['mediump_5fmat2',['mediump_mat2',['../a00284.html#ga745452bd9c89f5ad948203e4fb4b4ea3',1,'glm']]], ['mediump_5fmat2x2',['mediump_mat2x2',['../a00284.html#ga0cdf57d29f9448864237b2fb3e39aa1d',1,'glm']]], ['mediump_5fmat2x3',['mediump_mat2x3',['../a00284.html#ga497d513d552d927537d61fa11e3701ab',1,'glm']]], ['mediump_5fmat2x4',['mediump_mat2x4',['../a00284.html#gae7b75ea2e09fa686a79bbe9b6ca68ee5',1,'glm']]], ['mediump_5fmat3',['mediump_mat3',['../a00284.html#ga5aae49834d02732942f44e61d7bce136',1,'glm']]], ['mediump_5fmat3x2',['mediump_mat3x2',['../a00284.html#ga9e1c9ee65fef547bde793e69723e24eb',1,'glm']]], ['mediump_5fmat3x3',['mediump_mat3x3',['../a00284.html#gabc0f2f4ad21c90b341881cf056f8650e',1,'glm']]], ['mediump_5fmat3x4',['mediump_mat3x4',['../a00284.html#gaa669c6675c3405f76c0b14020d1c0d61',1,'glm']]], ['mediump_5fmat4',['mediump_mat4',['../a00284.html#gab8531bc3f269aa45835cd6e1972b7fc7',1,'glm']]], ['mediump_5fmat4x2',['mediump_mat4x2',['../a00284.html#gad75706b70545412ba9ac27d5ee210f66',1,'glm']]], ['mediump_5fmat4x3',['mediump_mat4x3',['../a00284.html#ga4a1440b5ea3cf84d5b06c79b534bd770',1,'glm']]], ['mediump_5fmat4x4',['mediump_mat4x4',['../a00284.html#ga15bca2b70917d9752231160d9da74b01',1,'glm']]], ['mediump_5fquat',['mediump_quat',['../a00253.html#gad2a59409de1bb12ccb6eb692ee7e9d8d',1,'glm']]], ['mediump_5fu16',['mediump_u16',['../a00304.html#ga9df98857be695d5a30cb30f5bfa38a80',1,'glm']]], ['mediump_5fu16vec1',['mediump_u16vec1',['../a00304.html#ga400ce8cc566de093a9b28e59e220d6e4',1,'glm']]], ['mediump_5fu16vec2',['mediump_u16vec2',['../a00304.html#ga429c201b3e92c90b4ef4356f2be52ee1',1,'glm']]], ['mediump_5fu16vec3',['mediump_u16vec3',['../a00304.html#gac9ba20234b0c3751d45ce575fc71e551',1,'glm']]], ['mediump_5fu16vec4',['mediump_u16vec4',['../a00304.html#ga5793393686ce5bd2d5968ff9144762b8',1,'glm']]], ['mediump_5fu32',['mediump_u32',['../a00304.html#ga1bd0e914158bf03135f8a317de6debe9',1,'glm']]], ['mediump_5fu32vec1',['mediump_u32vec1',['../a00304.html#ga8a11ccd2e38f674bbf3c2d1afc232aee',1,'glm']]], ['mediump_5fu32vec2',['mediump_u32vec2',['../a00304.html#ga94f74851fce338549c705b5f0d601c4f',1,'glm']]], ['mediump_5fu32vec3',['mediump_u32vec3',['../a00304.html#ga012c24c8fc69707b90260474c70275a2',1,'glm']]], ['mediump_5fu32vec4',['mediump_u32vec4',['../a00304.html#ga5d43ee8b5dbaa06c327b03b83682598a',1,'glm']]], ['mediump_5fu64',['mediump_u64',['../a00304.html#ga2af9490085ae3bdf36a544e9dd073610',1,'glm']]], ['mediump_5fu64vec1',['mediump_u64vec1',['../a00304.html#ga659f372ccb8307d5db5beca942cde5e8',1,'glm']]], ['mediump_5fu64vec2',['mediump_u64vec2',['../a00304.html#ga73a08ef5a74798f3a1a99250b5f86a7d',1,'glm']]], ['mediump_5fu64vec3',['mediump_u64vec3',['../a00304.html#ga1900c6ab74acd392809425953359ef52',1,'glm']]], ['mediump_5fu64vec4',['mediump_u64vec4',['../a00304.html#gaec7ee455cb379ec2993e81482123e1cc',1,'glm']]], ['mediump_5fu8',['mediump_u8',['../a00304.html#gad1213a22bbb9e4107f07eaa4956f8281',1,'glm']]], ['mediump_5fu8vec1',['mediump_u8vec1',['../a00304.html#ga4a43050843b141bdc7e85437faef6f55',1,'glm']]], ['mediump_5fu8vec2',['mediump_u8vec2',['../a00304.html#ga907f85d4a0eac3d8aaf571e5c2647194',1,'glm']]], ['mediump_5fu8vec3',['mediump_u8vec3',['../a00304.html#gaddc6f7748b699254942c5216b68f8f7f',1,'glm']]], ['mediump_5fu8vec4',['mediump_u8vec4',['../a00304.html#gaaf4ee3b76d43d98da02ec399b99bda4b',1,'glm']]], ['mediump_5fuint16',['mediump_uint16',['../a00304.html#ga2885a6c89916911e418c06bb76b9bdbb',1,'glm']]], ['mediump_5fuint16_5ft',['mediump_uint16_t',['../a00304.html#ga3963b1050fc65a383ee28e3f827b6e3e',1,'glm']]], ['mediump_5fuint32',['mediump_uint32',['../a00304.html#ga34dd5ec1988c443bae80f1b20a8ade5f',1,'glm']]], ['mediump_5fuint32_5ft',['mediump_uint32_t',['../a00304.html#gaf4dae276fd29623950de14a6ca2586b5',1,'glm']]], ['mediump_5fuint64',['mediump_uint64',['../a00304.html#ga30652709815ad9404272a31957daa59e',1,'glm']]], ['mediump_5fuint64_5ft',['mediump_uint64_t',['../a00304.html#ga9b170dd4a8f38448a2dc93987c7875e9',1,'glm']]], ['mediump_5fuint8',['mediump_uint8',['../a00304.html#ga1fa92a233b9110861cdbc8c2ccf0b5a3',1,'glm']]], ['mediump_5fuint8_5ft',['mediump_uint8_t',['../a00304.html#gadfe65c78231039e90507770db50c98c7',1,'glm']]], ['mediump_5fumat2',['mediump_umat2',['../a00294.html#ga43041378b3410ea951b7de0dfd2bc7ee',1,'glm']]], ['mediump_5fumat2x2',['mediump_umat2x2',['../a00294.html#ga3b209b1b751f041422137e3c065dfa98',1,'glm']]], ['mediump_5fumat2x3',['mediump_umat2x3',['../a00294.html#gaee2c1f13b41f4c92ea5b3efe367a1306',1,'glm']]], ['mediump_5fumat2x4',['mediump_umat2x4',['../a00294.html#gae1317ddca16d01e119a40b7f0ee85f95',1,'glm']]], ['mediump_5fumat3',['mediump_umat3',['../a00294.html#ga1730dbe3c67801f53520b06d1aa0a34a',1,'glm']]], ['mediump_5fumat3x2',['mediump_umat3x2',['../a00294.html#gaadc28bfdc8ebca81ae85121b11994970',1,'glm']]], ['mediump_5fumat3x3',['mediump_umat3x3',['../a00294.html#ga48f2fc38d3f7fab3cfbc961278ced53d',1,'glm']]], ['mediump_5fumat3x4',['mediump_umat3x4',['../a00294.html#ga78009a1e4ca64217e46b418535e52546',1,'glm']]], ['mediump_5fumat4',['mediump_umat4',['../a00294.html#ga5087c2beb26a11d9af87432e554cf9d1',1,'glm']]], ['mediump_5fumat4x2',['mediump_umat4x2',['../a00294.html#gaf35aefd81cc13718f6b059623f7425fa',1,'glm']]], ['mediump_5fumat4x3',['mediump_umat4x3',['../a00294.html#ga4e1bed14fbc7f4b376aaed064f89f0fb',1,'glm']]], ['mediump_5fumat4x4',['mediump_umat4x4',['../a00294.html#gaa9428fc8430dc552aad920653f822ef3',1,'glm']]], ['mediump_5fuvec1',['mediump_uvec1',['../a00277.html#ga38fde73aaf1420175ece8d4882558a3f',1,'glm']]], ['mediump_5fuvec2',['mediump_uvec2',['../a00282.html#gaa3b4f7806dad03d83bb3da0baa1e3b9b',1,'glm']]], ['mediump_5fuvec3',['mediump_uvec3',['../a00282.html#ga83b7df38feefbb357f3673d950fafef7',1,'glm']]], ['mediump_5fuvec4',['mediump_uvec4',['../a00282.html#ga64ed0deb6573375b7016daf82ffd53a7',1,'glm']]], ['mediump_5fvec1',['mediump_vec1',['../a00271.html#ga645f53e6b8056609023a894b4e2beef4',1,'glm']]], ['mediump_5fvec2',['mediump_vec2',['../a00282.html#gabc61976261c406520c7a8e4d946dc3f0',1,'glm']]], ['mediump_5fvec3',['mediump_vec3',['../a00282.html#ga2384e263df19f1404b733016eff78fca',1,'glm']]], ['mediump_5fvec4',['mediump_vec4',['../a00282.html#ga5c6978d3ffba06738416a33083853fc0',1,'glm']]], ['min',['min',['../a00241.html#ga6cf8098827054a270ee36b18e30d471d',1,'glm::min(genType x, genType y)'],['../a00241.html#gaa7d015eba1f9f48519251f4abe69b14d',1,'glm::min(vec< L, T, Q > const &x, T y)'],['../a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48',1,'glm::min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#ga420b37cbd98c395b93dab0278305cd46',1,'glm::min(T a, T b, T c)'],['../a00258.html#ga0d24a9acb8178df77e4aff90cbb2010d',1,'glm::min(T a, T b, T c, T d)'],['../a00267.html#ga3cd83d80fd4f433d8e333593ec56dddf',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#gab66920ed064ab518d6859c5a889c4be4',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#ga713d3f9b3e76312c0d314e0c8611a6a6',1,'glm::min(T const &x, T const &y, T const &z)'],['../a00321.html#ga74d1a96e7cdbac40f6d35142d3bcbbd4',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#ga42b5c3fc027fd3d9a50d2ccc9126d9f0',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga95466987024d03039607f09e69813d69',1,'glm::min(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga4fe35dd31dd0c45693c9b60b830b8d47',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#ga7471ea4159eed8dd9ea4ac5d46c2fead',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], ['mirrorclamp',['mirrorClamp',['../a00369.html#gaa6856a0a048d2749252848da35e10c8b',1,'glm']]], ['mirrorrepeat',['mirrorRepeat',['../a00369.html#ga16a89b0661b60d5bea85137bbae74d73',1,'glm']]], ['mix',['mix',['../a00241.html#ga8e93f374aae27d1a88b921860351f8d4',1,'glm::mix(genTypeT x, genTypeT y, genTypeU a)'],['../a00248.html#gafbfe587b8da11fb89a30c3d67dd5ccc2',1,'glm::mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)']]], ['mixed_5fproduct_2ehpp',['mixed_product.hpp',['../a00111.html',1,'']]], ['mixedproduct',['mixedProduct',['../a00342.html#gab3c6048fbb67f7243b088a4fee48d020',1,'glm']]], ['mod',['mod',['../a00241.html#ga9b197a452cd52db3c5c18bac72bd7798',1,'glm::mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00330.html#gaabfbb41531ab7ad8d06fc176edfba785',1,'glm::mod(int x, int y)'],['../a00330.html#ga63fc8d63e7da1706439233b386ba8b6f',1,'glm::mod(uint x, uint y)']]], ['modf',['modf',['../a00241.html#ga85e33f139b8db1b39b590a5713b9e679',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_b.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_b.js ================================================ var searchData= [ ['nextmultiple',['nextMultiple',['../a00261.html#gab770a3835c44c8a6fd225be4f4e6b317',1,'glm::nextMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#gace38d00601cbf49cd4dc03f003ab42b7',1,'glm::nextMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gacda365edad320c7aff19cc283a3b8ca2',1,'glm::nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['nextpoweroftwo',['nextPowerOfTwo',['../a00261.html#ga3a37c2f2fd347886c9af6a3ca3db04dc',1,'glm::nextPowerOfTwo(genIUType v)'],['../a00274.html#gabba67f8aac9915e10fca727277274502',1,'glm::nextPowerOfTwo(vec< L, T, Q > const &v)']]], ['nlz',['nlz',['../a00330.html#ga78dff8bdb361bf0061194c93e003d189',1,'glm']]], ['noise_2ehpp',['noise.hpp',['../a00112.html',1,'']]], ['norm_2ehpp',['norm.hpp',['../a00113.html',1,'']]], ['normal_2ehpp',['normal.hpp',['../a00114.html',1,'']]], ['normalize',['normalize',['../a00254.html#gabf30e3263fffe8dcc6659aea76ae8927',1,'glm::normalize(qua< T, Q > const &q)'],['../a00279.html#ga3b8d3dcae77870781392ed2902cce597',1,'glm::normalize(vec< L, T, Q > const &x)'],['../a00317.html#ga299b8641509606b1958ffa104a162cfe',1,'glm::normalize(tdualquat< T, Q > const &q)']]], ['normalize_5fdot_2ehpp',['normalize_dot.hpp',['../a00115.html',1,'']]], ['normalizedot',['normalizeDot',['../a00345.html#gacb140a2b903115d318c8b0a2fb5a5daa',1,'glm']]], ['not_5f',['not_',['../a00374.html#ga610fcd175791fd246e328ffee10dbf1e',1,'glm']]], ['notequal',['notEqual',['../a00246.html#ga8504f18a7e2bf315393032c2137dad83',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#ga29071147d118569344d10944b7d5c378',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gad7959e14fbc35b4ed2617daf4d67f6cd',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gaa1cd7fc228ef6e26c73583fd0d9c6552',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#gaa5517341754149ffba742d230afd1f32',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gab441cee0de5867a868f3a586ee68cfe1',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#ga5117a44c1bf21af857cd23e44a96d313',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga4a99cc41341567567a608719449c1fac',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga417cf51304359db18e819dda9bce5767',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga8b5c2c3f83422ae5b71fa960d03b0339',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga0b15ffe32987a6029b14398eb0def01a',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#ga17c19dc1b76cd5aef63e9e7ff3aa3c27',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['number_5fprecision_2ehpp',['number_precision.hpp',['../a00116.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_c.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_c.js ================================================ var searchData= [ ['opengl_20mathematics_20_28glm_29',['OpenGL Mathematics (GLM)',['../index.html',1,'']]], ['one',['one',['../a00290.html#ga39c2fb227631ca25894326529bdd1ee5',1,'glm']]], ['one_5fover_5fpi',['one_over_pi',['../a00290.html#ga555150da2b06d23c8738981d5013e0eb',1,'glm']]], ['one_5fover_5froot_5ftwo',['one_over_root_two',['../a00290.html#ga788fa23a0939bac4d1d0205fb4f35818',1,'glm']]], ['one_5fover_5ftwo_5fpi',['one_over_two_pi',['../a00290.html#ga7c922b427986cbb2e4c6ac69874eefbc',1,'glm']]], ['openbounded',['openBounded',['../a00314.html#gafd303042ba2ba695bf53b2315f53f93f',1,'glm']]], ['optimum_5fpow_2ehpp',['optimum_pow.hpp',['../a00117.html',1,'']]], ['orientate2',['orientate2',['../a00319.html#gae16738a9f1887cf4e4db6a124637608d',1,'glm']]], ['orientate3',['orientate3',['../a00319.html#ga7ca98668a5786f19c7b38299ebbc9b4c',1,'glm::orientate3(T const &angle)'],['../a00319.html#ga7238c8e15c7720e3ca6a45ab151eeabb',1,'glm::orientate3(vec< 3, T, Q > const &angles)']]], ['orientate4',['orientate4',['../a00319.html#ga4a044653f71a4ecec68e0b623382b48a',1,'glm']]], ['orientation',['orientation',['../a00356.html#ga1a32fceb71962e6160e8af295c91930a',1,'glm']]], ['orientedangle',['orientedAngle',['../a00367.html#ga9556a803dce87fe0f42fdabe4ebba1d5',1,'glm::orientedAngle(vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)'],['../a00367.html#ga706fce3d111f485839756a64f5a48553',1,'glm::orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)']]], ['ortho',['ortho',['../a00243.html#gae5b6b40ed882cd56cd7cb97701909c06',1,'glm::ortho(T left, T right, T bottom, T top)'],['../a00243.html#ga6615d8a9d39432e279c4575313ecb456',1,'glm::ortho(T left, T right, T bottom, T top, T zNear, T zFar)']]], ['ortholh',['orthoLH',['../a00243.html#gad122a79aadaa5529cec4ac197203db7f',1,'glm']]], ['ortholh_5fno',['orthoLH_NO',['../a00243.html#ga526416735ea7c5c5cd255bf99d051bd8',1,'glm']]], ['ortholh_5fzo',['orthoLH_ZO',['../a00243.html#gab37ac3eec8d61f22fceda7775e836afa',1,'glm']]], ['orthono',['orthoNO',['../a00243.html#gab219d28a8f178d4517448fcd6395a073',1,'glm']]], ['orthonormalize',['orthonormalize',['../a00348.html#ga4cab5d698e6e2eccea30c8e81c74371f',1,'glm::orthonormalize(mat< 3, 3, T, Q > const &m)'],['../a00348.html#gac3bc7ef498815026bc3d361ae0b7138e',1,'glm::orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)']]], ['orthonormalize_2ehpp',['orthonormalize.hpp',['../a00118.html',1,'']]], ['orthorh',['orthoRH',['../a00243.html#ga16264c9b838edeb9dd1de7a1010a13a4',1,'glm']]], ['orthorh_5fno',['orthoRH_NO',['../a00243.html#gaa2f7a1373170bf0a4a2ddef9b0706780',1,'glm']]], ['orthorh_5fzo',['orthoRH_ZO',['../a00243.html#ga9aea2e515b08fd7dce47b7b6ec34d588',1,'glm']]], ['orthozo',['orthoZO',['../a00243.html#gaea11a70817af2c0801c869dea0b7a5bc',1,'glm']]], ['outerproduct',['outerProduct',['../a00371.html#gac29fb7bae75a8e4c1b74cbbf85520e50',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_d.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_d.js ================================================ var searchData= [ ['packdouble2x32',['packDouble2x32',['../a00372.html#gaa916ca426b2bb0343ba17e3753e245c2',1,'glm']]], ['packed_5fbvec1',['packed_bvec1',['../a00303.html#ga88632cea9008ac0ac1388e94e804a53c',1,'glm']]], ['packed_5fbvec2',['packed_bvec2',['../a00303.html#gab85245913eaa40ab82adabcae37086cb',1,'glm']]], ['packed_5fbvec3',['packed_bvec3',['../a00303.html#ga0c48f9417f649e27f3fb0c9f733a18bd',1,'glm']]], ['packed_5fbvec4',['packed_bvec4',['../a00303.html#ga3180d7db84a74c402157df3bbc0ae3ed',1,'glm']]], ['packed_5fdmat2',['packed_dmat2',['../a00303.html#gad87408a8350918711f845f071bbe43fb',1,'glm']]], ['packed_5fdmat2x2',['packed_dmat2x2',['../a00303.html#gaaa33d8e06657a777efb0c72c44ce87a9',1,'glm']]], ['packed_5fdmat2x3',['packed_dmat2x3',['../a00303.html#gac3a5315f588ba04ad255188071ec4e22',1,'glm']]], ['packed_5fdmat2x4',['packed_dmat2x4',['../a00303.html#gae398fc3156f51d3684b08f62c1a5a6d4',1,'glm']]], ['packed_5fdmat3',['packed_dmat3',['../a00303.html#ga03dfc90d539cc87ea3a15a9caa5d2245',1,'glm']]], ['packed_5fdmat3x2',['packed_dmat3x2',['../a00303.html#gae36de20a4c0e0b1444b7903ae811d94e',1,'glm']]], ['packed_5fdmat3x3',['packed_dmat3x3',['../a00303.html#gab9b909f1392d86854334350efcae85f5',1,'glm']]], ['packed_5fdmat3x4',['packed_dmat3x4',['../a00303.html#ga199131fd279c92c2ac12df6d978f1dd6',1,'glm']]], ['packed_5fdmat4',['packed_dmat4',['../a00303.html#gada980a3485640aa8151f368f17ad3086',1,'glm']]], ['packed_5fdmat4x2',['packed_dmat4x2',['../a00303.html#ga6dc65249730698d3cc9ac5d7e1bc4d72',1,'glm']]], ['packed_5fdmat4x3',['packed_dmat4x3',['../a00303.html#gadf202aaa9ed71c09f9bbe347e43f8764',1,'glm']]], ['packed_5fdmat4x4',['packed_dmat4x4',['../a00303.html#gae20617435a6d042d7c38da2badd64a09',1,'glm']]], ['packed_5fdvec1',['packed_dvec1',['../a00303.html#ga532f0c940649b1ee303acd572fc35531',1,'glm']]], ['packed_5fdvec2',['packed_dvec2',['../a00303.html#ga5c194b11fbda636f2ab20c3bd0079196',1,'glm']]], ['packed_5fdvec3',['packed_dvec3',['../a00303.html#ga0581ea552d86b2b5de7a2804bed80e72',1,'glm']]], ['packed_5fdvec4',['packed_dvec4',['../a00303.html#gae8a9b181f9dc813ad6e125a52b14b935',1,'glm']]], ['packed_5fhighp_5fbvec1',['packed_highp_bvec1',['../a00303.html#ga439e97795314b81cd15abd4e5c2e6e7a',1,'glm']]], ['packed_5fhighp_5fbvec2',['packed_highp_bvec2',['../a00303.html#gad791d671f4fcf1ed1ea41f752916b70a',1,'glm']]], ['packed_5fhighp_5fbvec3',['packed_highp_bvec3',['../a00303.html#ga6a5a3250b57dfadc66735bc72911437f',1,'glm']]], ['packed_5fhighp_5fbvec4',['packed_highp_bvec4',['../a00303.html#ga09f517d88b996ef1b2f42fd54222b82d',1,'glm']]], ['packed_5fhighp_5fdmat2',['packed_highp_dmat2',['../a00303.html#gae29686632fd05efac0675d9a6370d77b',1,'glm']]], ['packed_5fhighp_5fdmat2x2',['packed_highp_dmat2x2',['../a00303.html#ga22bd6382b16052e301edbfc031b9f37a',1,'glm']]], ['packed_5fhighp_5fdmat2x3',['packed_highp_dmat2x3',['../a00303.html#ga999d82719696d4c59f4d236dd08f273d',1,'glm']]], ['packed_5fhighp_5fdmat2x4',['packed_highp_dmat2x4',['../a00303.html#ga6998ac2a8d7fe456b651a6336ed26bb0',1,'glm']]], ['packed_5fhighp_5fdmat3',['packed_highp_dmat3',['../a00303.html#gadac7c040c4810dd52b36fcd09d097400',1,'glm']]], ['packed_5fhighp_5fdmat3x2',['packed_highp_dmat3x2',['../a00303.html#gab462744977beb85fb5c782bc2eea7b15',1,'glm']]], ['packed_5fhighp_5fdmat3x3',['packed_highp_dmat3x3',['../a00303.html#ga49e5a709d098523823b2f824e48672a6',1,'glm']]], ['packed_5fhighp_5fdmat3x4',['packed_highp_dmat3x4',['../a00303.html#ga2c67b3b0adab71c8680c3d819f1fa9b7',1,'glm']]], ['packed_5fhighp_5fdmat4',['packed_highp_dmat4',['../a00303.html#ga6718822cd7af005a9b5bd6ee282f6ba6',1,'glm']]], ['packed_5fhighp_5fdmat4x2',['packed_highp_dmat4x2',['../a00303.html#ga12e39e797fb724a5b51fcbea2513a7da',1,'glm']]], ['packed_5fhighp_5fdmat4x3',['packed_highp_dmat4x3',['../a00303.html#ga79c2e9f82e67963c1ecad0ad6d0ec72e',1,'glm']]], ['packed_5fhighp_5fdmat4x4',['packed_highp_dmat4x4',['../a00303.html#ga2df58e03e5afded28707b4f7d077afb4',1,'glm']]], ['packed_5fhighp_5fdvec1',['packed_highp_dvec1',['../a00303.html#gab472b2d917b5e6efd76e8c7dbfbbf9f1',1,'glm']]], ['packed_5fhighp_5fdvec2',['packed_highp_dvec2',['../a00303.html#ga5b2dc48fa19b684d207d69c6b145eb63',1,'glm']]], ['packed_5fhighp_5fdvec3',['packed_highp_dvec3',['../a00303.html#gaaac6b356ef00154da41aaae7d1549193',1,'glm']]], ['packed_5fhighp_5fdvec4',['packed_highp_dvec4',['../a00303.html#ga81b5368fe485e2630aa9b44832d592e7',1,'glm']]], ['packed_5fhighp_5fivec1',['packed_highp_ivec1',['../a00303.html#ga7245acc887a5438f46fd85fdf076bb3b',1,'glm']]], ['packed_5fhighp_5fivec2',['packed_highp_ivec2',['../a00303.html#ga54f368ec6b514a5aa4f28d40e6f93ef7',1,'glm']]], ['packed_5fhighp_5fivec3',['packed_highp_ivec3',['../a00303.html#ga865a9c7bb22434b1b8c5ac31e164b628',1,'glm']]], ['packed_5fhighp_5fivec4',['packed_highp_ivec4',['../a00303.html#gad6f1b4e3a51c2c051814b60d5d1b8895',1,'glm']]], ['packed_5fhighp_5fmat2',['packed_highp_mat2',['../a00303.html#ga2f2d913d8cca2f935b2522964408c0b2',1,'glm']]], ['packed_5fhighp_5fmat2x2',['packed_highp_mat2x2',['../a00303.html#ga245c12d2daf67feecaa2d3277c8f6661',1,'glm']]], ['packed_5fhighp_5fmat2x3',['packed_highp_mat2x3',['../a00303.html#ga069cc8892aadae144c00f35297617d44',1,'glm']]], ['packed_5fhighp_5fmat2x4',['packed_highp_mat2x4',['../a00303.html#ga6904d09b62141d09712b76983892f95b',1,'glm']]], ['packed_5fhighp_5fmat3',['packed_highp_mat3',['../a00303.html#gabdd5fbffe8b8b8a7b33523f25b120dbe',1,'glm']]], ['packed_5fhighp_5fmat3x2',['packed_highp_mat3x2',['../a00303.html#ga2624719cb251d8de8cad1beaefc3a3f9',1,'glm']]], ['packed_5fhighp_5fmat3x3',['packed_highp_mat3x3',['../a00303.html#gaf2e07527d678440bf0c20adbeb9177c5',1,'glm']]], ['packed_5fhighp_5fmat3x4',['packed_highp_mat3x4',['../a00303.html#ga72102fa6ac2445aa3bb203128ad52449',1,'glm']]], ['packed_5fhighp_5fmat4',['packed_highp_mat4',['../a00303.html#ga253e8379b08d2dc6fe2800b2fb913203',1,'glm']]], ['packed_5fhighp_5fmat4x2',['packed_highp_mat4x2',['../a00303.html#gae389c2071cf3cdb33e7812c6fd156710',1,'glm']]], ['packed_5fhighp_5fmat4x3',['packed_highp_mat4x3',['../a00303.html#ga4584f64394bd7123b7a8534741e4916c',1,'glm']]], ['packed_5fhighp_5fmat4x4',['packed_highp_mat4x4',['../a00303.html#ga0149fe15668925147e07c94fd2c2d6ae',1,'glm']]], ['packed_5fhighp_5fuvec1',['packed_highp_uvec1',['../a00303.html#ga8c32b53f628a3616aa5061e58d66fe74',1,'glm']]], ['packed_5fhighp_5fuvec2',['packed_highp_uvec2',['../a00303.html#gab704d4fb15f6f96d70e363d5db7060cd',1,'glm']]], ['packed_5fhighp_5fuvec3',['packed_highp_uvec3',['../a00303.html#ga0b570da473fec4619db5aa0dce5133b0',1,'glm']]], ['packed_5fhighp_5fuvec4',['packed_highp_uvec4',['../a00303.html#gaa582f38c82aef61dea7aaedf15bb06a6',1,'glm']]], ['packed_5fhighp_5fvec1',['packed_highp_vec1',['../a00303.html#ga56473759d2702ee19ab7f91d0017fa70',1,'glm']]], ['packed_5fhighp_5fvec2',['packed_highp_vec2',['../a00303.html#ga6b8b9475e7c3b16aed13edbc460bbc4d',1,'glm']]], ['packed_5fhighp_5fvec3',['packed_highp_vec3',['../a00303.html#ga3815661df0e2de79beff8168c09adf1e',1,'glm']]], ['packed_5fhighp_5fvec4',['packed_highp_vec4',['../a00303.html#ga4015f36bf5a5adb6ac5d45beed959867',1,'glm']]], ['packed_5fivec1',['packed_ivec1',['../a00303.html#ga11581a06fc7bf941fa4d4b6aca29812c',1,'glm']]], ['packed_5fivec2',['packed_ivec2',['../a00303.html#ga1fe4c5f56b8087d773aa90dc88a257a7',1,'glm']]], ['packed_5fivec3',['packed_ivec3',['../a00303.html#gae157682a7847161787951ba1db4cf325',1,'glm']]], ['packed_5fivec4',['packed_ivec4',['../a00303.html#gac228b70372abd561340d5f926a7c1778',1,'glm']]], ['packed_5flowp_5fbvec1',['packed_lowp_bvec1',['../a00303.html#gae3c8750f53259ece334d3aa3b3649a40',1,'glm']]], ['packed_5flowp_5fbvec2',['packed_lowp_bvec2',['../a00303.html#gac969befedbda69eb78d4e23f751fdbee',1,'glm']]], ['packed_5flowp_5fbvec3',['packed_lowp_bvec3',['../a00303.html#ga7c20adbe1409e3fe4544677a7f6fe954',1,'glm']]], ['packed_5flowp_5fbvec4',['packed_lowp_bvec4',['../a00303.html#gae473587cff3092edc0877fc691c26a0b',1,'glm']]], ['packed_5flowp_5fdmat2',['packed_lowp_dmat2',['../a00303.html#gac93f9b1a35b9de4f456b9f2dfeaf1097',1,'glm']]], ['packed_5flowp_5fdmat2x2',['packed_lowp_dmat2x2',['../a00303.html#gaeeaff6c132ec91ebd21da3a2399548ea',1,'glm']]], ['packed_5flowp_5fdmat2x3',['packed_lowp_dmat2x3',['../a00303.html#ga2ccdcd4846775cbe4f9d12e71d55b5d2',1,'glm']]], ['packed_5flowp_5fdmat2x4',['packed_lowp_dmat2x4',['../a00303.html#gac870c47d2d9d48503f6c9ee3baec8ce1',1,'glm']]], ['packed_5flowp_5fdmat3',['packed_lowp_dmat3',['../a00303.html#ga3894a059eeaacec8791c25de398d9955',1,'glm']]], ['packed_5flowp_5fdmat3x2',['packed_lowp_dmat3x2',['../a00303.html#ga23ec236950f5859f59197663266b535d',1,'glm']]], ['packed_5flowp_5fdmat3x3',['packed_lowp_dmat3x3',['../a00303.html#ga4a7c7d8c3a663d0ec2a858cbfa14e54c',1,'glm']]], ['packed_5flowp_5fdmat3x4',['packed_lowp_dmat3x4',['../a00303.html#ga8fc0e66da83599071b7ec17510686cd9',1,'glm']]], ['packed_5flowp_5fdmat4',['packed_lowp_dmat4',['../a00303.html#ga03e1edf5666c40affe39aee35c87956f',1,'glm']]], ['packed_5flowp_5fdmat4x2',['packed_lowp_dmat4x2',['../a00303.html#ga39658fb13369db869d363684bd8399c0',1,'glm']]], ['packed_5flowp_5fdmat4x3',['packed_lowp_dmat4x3',['../a00303.html#ga30b0351eebc18c6056101359bdd3a359',1,'glm']]], ['packed_5flowp_5fdmat4x4',['packed_lowp_dmat4x4',['../a00303.html#ga0294d4c45151425c86a11deee7693c0e',1,'glm']]], ['packed_5flowp_5fdvec1',['packed_lowp_dvec1',['../a00303.html#ga054050e9d4e78d81db0e6d1573b1c624',1,'glm']]], ['packed_5flowp_5fdvec2',['packed_lowp_dvec2',['../a00303.html#gadc19938ddb204bfcb4d9ef35b1e2bf93',1,'glm']]], ['packed_5flowp_5fdvec3',['packed_lowp_dvec3',['../a00303.html#ga9189210cabd6651a5e14a4c46fb20598',1,'glm']]], ['packed_5flowp_5fdvec4',['packed_lowp_dvec4',['../a00303.html#ga262dafd0c001c3a38d1cc91d024ca738',1,'glm']]], ['packed_5flowp_5fivec1',['packed_lowp_ivec1',['../a00303.html#gaf22b77f1cf3e73b8b1dddfe7f959357c',1,'glm']]], ['packed_5flowp_5fivec2',['packed_lowp_ivec2',['../a00303.html#ga52635859f5ef660ab999d22c11b7867f',1,'glm']]], ['packed_5flowp_5fivec3',['packed_lowp_ivec3',['../a00303.html#ga98c9d122a959e9f3ce10a5623c310f5d',1,'glm']]], ['packed_5flowp_5fivec4',['packed_lowp_ivec4',['../a00303.html#ga931731b8ae3b54c7ecc221509dae96bc',1,'glm']]], ['packed_5flowp_5fmat2',['packed_lowp_mat2',['../a00303.html#ga70dcb9ef0b24e832772a7405efa9669a',1,'glm']]], ['packed_5flowp_5fmat2x2',['packed_lowp_mat2x2',['../a00303.html#gac70667c7642ec8d50245e6e6936a3927',1,'glm']]], ['packed_5flowp_5fmat2x3',['packed_lowp_mat2x3',['../a00303.html#ga3e7df5a11e1be27bc29a4c0d3956f234',1,'glm']]], ['packed_5flowp_5fmat2x4',['packed_lowp_mat2x4',['../a00303.html#gaea9c555e669dc56c45d95dcc75d59bf3',1,'glm']]], ['packed_5flowp_5fmat3',['packed_lowp_mat3',['../a00303.html#ga0d22400969dd223465b2900fecfb4f53',1,'glm']]], ['packed_5flowp_5fmat3x2',['packed_lowp_mat3x2',['../a00303.html#ga128cd52649621861635fab746df91735',1,'glm']]], ['packed_5flowp_5fmat3x3',['packed_lowp_mat3x3',['../a00303.html#ga5adf1802c5375a9dfb1729691bedd94e',1,'glm']]], ['packed_5flowp_5fmat3x4',['packed_lowp_mat3x4',['../a00303.html#ga92247ca09fa03c4013ba364f3a0fca7f',1,'glm']]], ['packed_5flowp_5fmat4',['packed_lowp_mat4',['../a00303.html#ga2a1dd2387725a335413d4c4fee8609c4',1,'glm']]], ['packed_5flowp_5fmat4x2',['packed_lowp_mat4x2',['../a00303.html#ga8f22607dcd090cd280071ccc689f4079',1,'glm']]], ['packed_5flowp_5fmat4x3',['packed_lowp_mat4x3',['../a00303.html#ga7661d759d6ad218e132e3d051e7b2c6c',1,'glm']]], ['packed_5flowp_5fmat4x4',['packed_lowp_mat4x4',['../a00303.html#ga776f18d1a6e7d399f05d386167dc60f5',1,'glm']]], ['packed_5flowp_5fuvec1',['packed_lowp_uvec1',['../a00303.html#gaf111fed760ecce16cb1988807569bee5',1,'glm']]], ['packed_5flowp_5fuvec2',['packed_lowp_uvec2',['../a00303.html#ga958210fe245a75b058325d367c951132',1,'glm']]], ['packed_5flowp_5fuvec3',['packed_lowp_uvec3',['../a00303.html#ga576a3f8372197a56a79dee1c8280f485',1,'glm']]], ['packed_5flowp_5fuvec4',['packed_lowp_uvec4',['../a00303.html#gafdd97922b4a2a42cd0c99a13877ff4da',1,'glm']]], ['packed_5flowp_5fvec1',['packed_lowp_vec1',['../a00303.html#ga0a6198fe64166a6a61084d43c71518a9',1,'glm']]], ['packed_5flowp_5fvec2',['packed_lowp_vec2',['../a00303.html#gafbf1c2cce307c5594b165819ed83bf5d',1,'glm']]], ['packed_5flowp_5fvec3',['packed_lowp_vec3',['../a00303.html#ga3a30c137c1f8cce478c28eab0427a570',1,'glm']]], ['packed_5flowp_5fvec4',['packed_lowp_vec4',['../a00303.html#ga3cc94fb8de80bbd8a4aa7a5b206d304a',1,'glm']]], ['packed_5fmat2',['packed_mat2',['../a00303.html#gadd019b43fcf42e1590d45dddaa504a1a',1,'glm']]], ['packed_5fmat2x2',['packed_mat2x2',['../a00303.html#ga51eaadcdc292c8750f746a5dc3e6c517',1,'glm']]], ['packed_5fmat2x3',['packed_mat2x3',['../a00303.html#ga301b76a89b8a9625501ca58815017f20',1,'glm']]], ['packed_5fmat2x4',['packed_mat2x4',['../a00303.html#gac401da1dd9177ad81d7618a2a5541e23',1,'glm']]], ['packed_5fmat3',['packed_mat3',['../a00303.html#ga9bc12b0ab7be8448836711b77cc7b83a',1,'glm']]], ['packed_5fmat3x2',['packed_mat3x2',['../a00303.html#ga134f0d99fbd2459c13cd9ebd056509fa',1,'glm']]], ['packed_5fmat3x3',['packed_mat3x3',['../a00303.html#ga6c1dbe8cde9fbb231284b01f8aeaaa99',1,'glm']]], ['packed_5fmat3x4',['packed_mat3x4',['../a00303.html#gad63515526cccfe88ffa8fe5ed64f95f8',1,'glm']]], ['packed_5fmat4',['packed_mat4',['../a00303.html#ga2c139854e5b04cf08a957dee3b510441',1,'glm']]], ['packed_5fmat4x2',['packed_mat4x2',['../a00303.html#ga379c1153f1339bdeaefd592bebf538e8',1,'glm']]], ['packed_5fmat4x3',['packed_mat4x3',['../a00303.html#gab286466e19f7399c8d25089da9400d43',1,'glm']]], ['packed_5fmat4x4',['packed_mat4x4',['../a00303.html#ga67e7102557d6067bb6ac00d4ad0e1374',1,'glm']]], ['packed_5fmediump_5fbvec1',['packed_mediump_bvec1',['../a00303.html#ga5546d828d63010a8f9cf81161ad0275a',1,'glm']]], ['packed_5fmediump_5fbvec2',['packed_mediump_bvec2',['../a00303.html#gab4c6414a59539e66a242ad4cf4b476b4',1,'glm']]], ['packed_5fmediump_5fbvec3',['packed_mediump_bvec3',['../a00303.html#ga70147763edff3fe96b03a0b98d6339a2',1,'glm']]], ['packed_5fmediump_5fbvec4',['packed_mediump_bvec4',['../a00303.html#ga7b1620f259595b9da47a6374fc44588a',1,'glm']]], ['packed_5fmediump_5fdmat2',['packed_mediump_dmat2',['../a00303.html#ga9d60e32d3fcb51f817046cd881fdbf57',1,'glm']]], ['packed_5fmediump_5fdmat2x2',['packed_mediump_dmat2x2',['../a00303.html#ga39e8bb9b70e5694964e8266a21ba534e',1,'glm']]], ['packed_5fmediump_5fdmat2x3',['packed_mediump_dmat2x3',['../a00303.html#ga8897c6d9adb4140b1c3b0a07b8f0a430',1,'glm']]], ['packed_5fmediump_5fdmat2x4',['packed_mediump_dmat2x4',['../a00303.html#gaaa4126969c765e7faa2ebf6951c22ffb',1,'glm']]], ['packed_5fmediump_5fdmat3',['packed_mediump_dmat3',['../a00303.html#gaf969eb879c76a5f4576e4a1e10095cf6',1,'glm']]], ['packed_5fmediump_5fdmat3x2',['packed_mediump_dmat3x2',['../a00303.html#ga86efe91cdaa2864c828a5d6d46356c6a',1,'glm']]], ['packed_5fmediump_5fdmat3x3',['packed_mediump_dmat3x3',['../a00303.html#gaf85877d38d8cfbc21d59d939afd72375',1,'glm']]], ['packed_5fmediump_5fdmat3x4',['packed_mediump_dmat3x4',['../a00303.html#gad5dcaf93df267bc3029174e430e0907f',1,'glm']]], ['packed_5fmediump_5fdmat4',['packed_mediump_dmat4',['../a00303.html#ga4b0ee7996651ddd04eaa0c4cdbb66332',1,'glm']]], ['packed_5fmediump_5fdmat4x2',['packed_mediump_dmat4x2',['../a00303.html#ga9a15514a0631f700de6312b9d5db3a73',1,'glm']]], ['packed_5fmediump_5fdmat4x3',['packed_mediump_dmat4x3',['../a00303.html#gab5b36cc9caee1bb1c5178fe191bf5713',1,'glm']]], ['packed_5fmediump_5fdmat4x4',['packed_mediump_dmat4x4',['../a00303.html#ga21e86cf2f6c126bacf31b8985db06bd4',1,'glm']]], ['packed_5fmediump_5fdvec1',['packed_mediump_dvec1',['../a00303.html#ga8920e90ea9c01d9c97e604a938ce2cbd',1,'glm']]], ['packed_5fmediump_5fdvec2',['packed_mediump_dvec2',['../a00303.html#ga0c754a783b6fcf80374c013371c4dae9',1,'glm']]], ['packed_5fmediump_5fdvec3',['packed_mediump_dvec3',['../a00303.html#ga1f18ada6f7cdd8c46db33ba987280fc4',1,'glm']]], ['packed_5fmediump_5fdvec4',['packed_mediump_dvec4',['../a00303.html#ga568b850f1116b667043533cf77826968',1,'glm']]], ['packed_5fmediump_5fivec1',['packed_mediump_ivec1',['../a00303.html#ga09507ef020a49517a7bcd50438f05056',1,'glm']]], ['packed_5fmediump_5fivec2',['packed_mediump_ivec2',['../a00303.html#gaaa891048dddef4627df33809ec726219',1,'glm']]], ['packed_5fmediump_5fivec3',['packed_mediump_ivec3',['../a00303.html#ga06f26d54dca30994eb1fdadb8e69f4a2',1,'glm']]], ['packed_5fmediump_5fivec4',['packed_mediump_ivec4',['../a00303.html#ga70130dc8ed9c966ec2a221ce586d45d8',1,'glm']]], ['packed_5fmediump_5fmat2',['packed_mediump_mat2',['../a00303.html#ga43cd36d430c5187bfdca34a23cb41581',1,'glm']]], ['packed_5fmediump_5fmat2x2',['packed_mediump_mat2x2',['../a00303.html#ga2d2a73e662759e301c22b8931ff6a526',1,'glm']]], ['packed_5fmediump_5fmat2x3',['packed_mediump_mat2x3',['../a00303.html#ga99049db01faf1e95ed9fb875a47dffe2',1,'glm']]], ['packed_5fmediump_5fmat2x4',['packed_mediump_mat2x4',['../a00303.html#gad43a240533f388ce0504b495d9df3d52',1,'glm']]], ['packed_5fmediump_5fmat3',['packed_mediump_mat3',['../a00303.html#ga13a75c6cbd0a411f694bc82486cd1e55',1,'glm']]], ['packed_5fmediump_5fmat3x2',['packed_mediump_mat3x2',['../a00303.html#ga04cfaf1421284df3c24ea0985dab24e7',1,'glm']]], ['packed_5fmediump_5fmat3x3',['packed_mediump_mat3x3',['../a00303.html#gaaa9cea174d342dd9650e3436823cab23',1,'glm']]], ['packed_5fmediump_5fmat3x4',['packed_mediump_mat3x4',['../a00303.html#gabc93a9560593bd32e099c908531305f5',1,'glm']]], ['packed_5fmediump_5fmat4',['packed_mediump_mat4',['../a00303.html#gae89d72ffc149147f61df701bbc8755bf',1,'glm']]], ['packed_5fmediump_5fmat4x2',['packed_mediump_mat4x2',['../a00303.html#gaa458f9d9e0934bae3097e2a373b24707',1,'glm']]], ['packed_5fmediump_5fmat4x3',['packed_mediump_mat4x3',['../a00303.html#ga02ca6255394aa778abaeb0f733c4d2b6',1,'glm']]], ['packed_5fmediump_5fmat4x4',['packed_mediump_mat4x4',['../a00303.html#gaf304f64c06743c1571401504d3f50259',1,'glm']]], ['packed_5fmediump_5fuvec1',['packed_mediump_uvec1',['../a00303.html#ga2c29fb42bab9a4f9b66bc60b2e514a34',1,'glm']]], ['packed_5fmediump_5fuvec2',['packed_mediump_uvec2',['../a00303.html#gaa1f95690a78dc12e39da32943243aeef',1,'glm']]], ['packed_5fmediump_5fuvec3',['packed_mediump_uvec3',['../a00303.html#ga1ea2bbdbcb0a69242f6d884663c1b0ab',1,'glm']]], ['packed_5fmediump_5fuvec4',['packed_mediump_uvec4',['../a00303.html#ga63a73be86a4f07ea7a7499ab0bfebe45',1,'glm']]], ['packed_5fmediump_5fvec1',['packed_mediump_vec1',['../a00303.html#ga71d63cead1e113fca0bcdaaa33aad050',1,'glm']]], ['packed_5fmediump_5fvec2',['packed_mediump_vec2',['../a00303.html#ga6844c6f4691d1bf67673240850430948',1,'glm']]], ['packed_5fmediump_5fvec3',['packed_mediump_vec3',['../a00303.html#gab0eb771b708c5b2205d9b14dd1434fd8',1,'glm']]], ['packed_5fmediump_5fvec4',['packed_mediump_vec4',['../a00303.html#ga68c9bb24f387b312bae6a0a68e74d95e',1,'glm']]], ['packed_5fuvec1',['packed_uvec1',['../a00303.html#ga5621493caac01bdd22ab6be4416b0314',1,'glm']]], ['packed_5fuvec2',['packed_uvec2',['../a00303.html#gabcc33efb4d5e83b8fe4706360e75b932',1,'glm']]], ['packed_5fuvec3',['packed_uvec3',['../a00303.html#gab96804e99e3a72a35740fec690c79617',1,'glm']]], ['packed_5fuvec4',['packed_uvec4',['../a00303.html#ga8e5d92e84ebdbe2480cf96bc17d6e2f2',1,'glm']]], ['packed_5fvec1',['packed_vec1',['../a00303.html#ga14741e3d9da9ae83765389927f837331',1,'glm']]], ['packed_5fvec2',['packed_vec2',['../a00303.html#ga3254defa5a8f0ae4b02b45fedba84a66',1,'glm']]], ['packed_5fvec3',['packed_vec3',['../a00303.html#gaccccd090e185450caa28b5b63ad4e8f0',1,'glm']]], ['packed_5fvec4',['packed_vec4',['../a00303.html#ga37a0e0bf653169b581c5eea3d547fa5d',1,'glm']]], ['packf2x11_5f1x10',['packF2x11_1x10',['../a00298.html#ga4944ad465ff950e926d49621f916c78d',1,'glm']]], ['packf3x9_5fe1x5',['packF3x9_E1x5',['../a00298.html#ga3f648fc205467792dc6d8c59c748f8a6',1,'glm']]], ['packhalf',['packHalf',['../a00298.html#ga2d8bbce673ebc04831c1fb05c47f5251',1,'glm']]], ['packhalf1x16',['packHalf1x16',['../a00298.html#ga43f2093b6ff192a79058ff7834fc3528',1,'glm']]], ['packhalf2x16',['packHalf2x16',['../a00372.html#ga20f134b07db3a3d3a38efb2617388c92',1,'glm']]], ['packhalf4x16',['packHalf4x16',['../a00298.html#gafe2f7b39caf8f5ec555e1c059ec530e6',1,'glm']]], ['packi3x10_5f1x2',['packI3x10_1x2',['../a00298.html#ga06ecb6afb902dba45419008171db9023',1,'glm']]], ['packing_2ehpp',['packing.hpp',['../a00120.html',1,'']]], ['packint2x16',['packInt2x16',['../a00298.html#ga3644163cf3a47bf1d4af1f4b03013a7e',1,'glm']]], ['packint2x32',['packInt2x32',['../a00298.html#gad1e4c8a9e67d86b61a6eec86703a827a',1,'glm']]], ['packint2x8',['packInt2x8',['../a00298.html#ga8884b1f2292414f36d59ef3be5d62914',1,'glm']]], ['packint4x16',['packInt4x16',['../a00298.html#ga1989f093a27ae69cf9207145be48b3d7',1,'glm']]], ['packint4x8',['packInt4x8',['../a00298.html#gaf2238401d5ce2aaade1a44ba19709072',1,'glm']]], ['packrgbm',['packRGBM',['../a00298.html#ga0466daf4c90f76cc64b3f105ce727295',1,'glm']]], ['packsnorm',['packSnorm',['../a00298.html#gaa54b5855a750d6aeb12c1c902f5939b8',1,'glm']]], ['packsnorm1x16',['packSnorm1x16',['../a00298.html#gab22f8bcfdb5fc65af4701b25f143c1af',1,'glm']]], ['packsnorm1x8',['packSnorm1x8',['../a00298.html#gae3592e0795e62aaa1865b3a10496a7a1',1,'glm']]], ['packsnorm2x16',['packSnorm2x16',['../a00372.html#ga977ab172da5494e5ac63e952afacfbe2',1,'glm']]], ['packsnorm2x8',['packSnorm2x8',['../a00298.html#ga6be3cfb2cce3702f03e91bbeb5286d7e',1,'glm']]], ['packsnorm3x10_5f1x2',['packSnorm3x10_1x2',['../a00298.html#gab997545661877d2c7362a5084d3897d3',1,'glm']]], ['packsnorm4x16',['packSnorm4x16',['../a00298.html#ga358943934d21da947d5bcc88c2ab7832',1,'glm']]], ['packsnorm4x8',['packSnorm4x8',['../a00372.html#ga85e8f17627516445026ab7a9c2e3531a',1,'glm']]], ['packu3x10_5f1x2',['packU3x10_1x2',['../a00298.html#gada3d88d59f0f458f9c51a9fd359a4bc0',1,'glm']]], ['packuint2x16',['packUint2x16',['../a00298.html#ga5eecc9e8cbaf51ac6cf57501e670ee19',1,'glm']]], ['packuint2x32',['packUint2x32',['../a00298.html#gaa864081097b86e83d8e4a4d79c382b22',1,'glm']]], ['packuint2x8',['packUint2x8',['../a00298.html#ga3c3c9fb53ae7823b10fa083909357590',1,'glm']]], ['packuint4x16',['packUint4x16',['../a00298.html#ga2ceb62cca347d8ace42ee90317a3f1f9',1,'glm']]], ['packuint4x8',['packUint4x8',['../a00298.html#gaa0fe2f09aeb403cd66c1a062f58861ab',1,'glm']]], ['packunorm',['packUnorm',['../a00298.html#gaccd3f27e6ba5163eb7aa9bc8ff96251a',1,'glm']]], ['packunorm1x16',['packUnorm1x16',['../a00298.html#ga9f82737bf2a44bedff1d286b76837886',1,'glm']]], ['packunorm1x5_5f1x6_5f1x5',['packUnorm1x5_1x6_1x5',['../a00298.html#ga768e0337dd6246773f14aa0a421fe9a8',1,'glm']]], ['packunorm1x8',['packUnorm1x8',['../a00298.html#ga4b2fa60df3460403817d28b082ee0736',1,'glm']]], ['packunorm2x16',['packUnorm2x16',['../a00372.html#ga0e2d107039fe608a209497af867b85fb',1,'glm']]], ['packunorm2x3_5f1x2',['packUnorm2x3_1x2',['../a00298.html#ga7f9abdb50f9be1aa1c14912504a0d98d',1,'glm']]], ['packunorm2x4',['packUnorm2x4',['../a00298.html#gab6bbd5be3b8e6db538ecb33a7844481c',1,'glm']]], ['packunorm2x8',['packUnorm2x8',['../a00298.html#ga9a666b1c688ab54100061ed06526de6e',1,'glm']]], ['packunorm3x10_5f1x2',['packUnorm3x10_1x2',['../a00298.html#ga8a1ee625d2707c60530fb3fca2980b19',1,'glm']]], ['packunorm3x5_5f1x1',['packUnorm3x5_1x1',['../a00298.html#gaec4112086d7fb133bea104a7c237de52',1,'glm']]], ['packunorm4x16',['packUnorm4x16',['../a00298.html#ga1f63c264e7ab63264e2b2a99fd393897',1,'glm']]], ['packunorm4x4',['packUnorm4x4',['../a00298.html#gad3e7e3ce521513584a53aedc5f9765c1',1,'glm']]], ['packunorm4x8',['packUnorm4x8',['../a00372.html#gaf7d2f7341a9eeb4a436929d6f9ad08f2',1,'glm']]], ['perlin',['perlin',['../a00297.html#ga1e043ce3b51510e9bc4469227cefc38a',1,'glm::perlin(vec< L, T, Q > const &p)'],['../a00297.html#gac270edc54c5fc52f5985a45f940bb103',1,'glm::perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)']]], ['perp',['perp',['../a00349.html#ga264cfc4e180cf9b852e943b35089003c',1,'glm']]], ['perpendicular_2ehpp',['perpendicular.hpp',['../a00121.html',1,'']]], ['perspective',['perspective',['../a00243.html#ga747c8cf99458663dd7ad1bb3a2f07787',1,'glm']]], ['perspectivefov',['perspectiveFov',['../a00243.html#gaebd02240fd36e85ad754f02ddd9a560d',1,'glm']]], ['perspectivefovlh',['perspectiveFovLH',['../a00243.html#ga6aebe16c164bd8e52554cbe0304ef4aa',1,'glm']]], ['perspectivefovlh_5fno',['perspectiveFovLH_NO',['../a00243.html#gad18a4495b77530317327e8d466488c1a',1,'glm']]], ['perspectivefovlh_5fzo',['perspectiveFovLH_ZO',['../a00243.html#gabdd37014f529e25b2fa1b3ba06c10d5c',1,'glm']]], ['perspectivefovno',['perspectiveFovNO',['../a00243.html#gaf30e7bd3b1387a6776433dd5383e6633',1,'glm']]], ['perspectivefovrh',['perspectiveFovRH',['../a00243.html#gaf32bf563f28379c68554a44ee60c6a85',1,'glm']]], ['perspectivefovrh_5fno',['perspectiveFovRH_NO',['../a00243.html#ga257b733ff883c9a065801023cf243eb2',1,'glm']]], ['perspectivefovrh_5fzo',['perspectiveFovRH_ZO',['../a00243.html#ga7dcbb25331676f5b0795aced1a905c44',1,'glm']]], ['perspectivefovzo',['perspectiveFovZO',['../a00243.html#ga4bc69fa1d1f95128430aa3d2a712390b',1,'glm']]], ['perspectivelh',['perspectiveLH',['../a00243.html#ga9bd34951dc7022ac256fcb51d7f6fc2f',1,'glm']]], ['perspectivelh_5fno',['perspectiveLH_NO',['../a00243.html#gaead4d049d1feab463b700b5641aa590e',1,'glm']]], ['perspectivelh_5fzo',['perspectiveLH_ZO',['../a00243.html#gaca32af88c2719005c02817ad1142986c',1,'glm']]], ['perspectiveno',['perspectiveNO',['../a00243.html#gaf497e6bca61e7c87088370b126a93758',1,'glm']]], ['perspectiverh',['perspectiveRH',['../a00243.html#ga26b88757fbd90601b80768a7e1ad3aa1',1,'glm']]], ['perspectiverh_5fno',['perspectiveRH_NO',['../a00243.html#gad1526cb2cbe796095284e8f34b01c582',1,'glm']]], ['perspectiverh_5fzo',['perspectiveRH_ZO',['../a00243.html#ga4da358d6e1b8e5b9ae35d1f3f2dc3b9a',1,'glm']]], ['perspectivezo',['perspectiveZO',['../a00243.html#gaa9dfba5c2322da54f72b1eb7c7c11b47',1,'glm']]], ['pi',['pi',['../a00259.html#ga94bafeb2a0f23ab6450fed1f98ee4e45',1,'glm']]], ['pickmatrix',['pickMatrix',['../a00245.html#gaf6b21eadb7ac2ecbbe258a9a233b4c82',1,'glm']]], ['pitch',['pitch',['../a00299.html#ga7603e81477b46ddb448896909bc04928',1,'glm']]], ['polar',['polar',['../a00350.html#gab83ac2c0e55b684b06b6c46c28b1590d',1,'glm']]], ['polar_5fcoordinates_2ehpp',['polar_coordinates.hpp',['../a00122.html',1,'']]], ['pow',['pow',['../a00242.html#ga2254981952d4f333b900a6bf5167a6c4',1,'glm::pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)'],['../a00256.html#ga4975ffcacd312a8c0bbd046a76c5607e',1,'glm::pow(qua< T, Q > const &q, T y)'],['../a00330.html#ga465016030a81d513fa2fac881ebdaa83',1,'glm::pow(int x, uint y)'],['../a00330.html#ga998e5ee915d3769255519e2fbaa2bbf0',1,'glm::pow(uint x, uint y)']]], ['pow2',['pow2',['../a00347.html#ga19aaff3213bf23bdec3ef124ace237e9',1,'glm::gtx']]], ['pow3',['pow3',['../a00347.html#ga35689d03cd434d6ea819f1942d3bf82e',1,'glm::gtx']]], ['pow4',['pow4',['../a00347.html#gacef0968763026e180e53e735007dbf5a',1,'glm::gtx']]], ['poweroftwoabove',['powerOfTwoAbove',['../a00309.html#ga8cda2459871f574a0aecbe702ac93291',1,'glm::powerOfTwoAbove(genIUType Value)'],['../a00309.html#ga2bbded187c5febfefc1e524ba31b3fab',1,'glm::powerOfTwoAbove(vec< L, T, Q > const &value)']]], ['poweroftwobelow',['powerOfTwoBelow',['../a00309.html#ga3de7df63c589325101a2817a56f8e29d',1,'glm::powerOfTwoBelow(genIUType Value)'],['../a00309.html#gaf78ddcc4152c051b2a21e68fecb10980',1,'glm::powerOfTwoBelow(vec< L, T, Q > const &value)']]], ['poweroftwonearest',['powerOfTwoNearest',['../a00309.html#ga5f65973a5d2ea38c719e6a663149ead9',1,'glm::powerOfTwoNearest(genIUType Value)'],['../a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b',1,'glm::powerOfTwoNearest(vec< L, T, Q > const &value)']]], ['prevmultiple',['prevMultiple',['../a00261.html#gada3bdd871ffe31f2d484aa668362f636',1,'glm::prevMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga7b3915a7cd3d50ff4976ab7a75a6880a',1,'glm::prevMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#ga51e04379e8aebbf83e2e5ab094578ee9',1,'glm::prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['prevpoweroftwo',['prevPowerOfTwo',['../a00261.html#gab21902a0e7e5a8451a7ad80333618727',1,'glm::prevPowerOfTwo(genIUType v)'],['../a00274.html#ga759db73f14d79f63612bd2398b577e7a',1,'glm::prevPowerOfTwo(vec< L, T, Q > const &v)']]], ['proj',['proj',['../a00351.html#ga58384b7170801dd513de46f87c7fb00e',1,'glm']]], ['proj2d',['proj2D',['../a00363.html#ga5b992a0cdc8298054edb68e228f0d93e',1,'glm']]], ['proj3d',['proj3D',['../a00363.html#gaa2b7f4f15b98f697caede11bef50509e',1,'glm']]], ['project',['project',['../a00245.html#gaf36e96033f456659e6705472a06b6e11',1,'glm']]], ['projection_2ehpp',['projection.hpp',['../a00123.html',1,'']]], ['projectno',['projectNO',['../a00245.html#ga05249751f48d14cb282e4979802b8111',1,'glm']]], ['projectzo',['projectZO',['../a00245.html#ga77d157525063dec83a557186873ee080',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_e.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_e.js ================================================ var searchData= [ ['qr_5fdecompose',['qr_decompose',['../a00336.html#gac62d7bfc8dc661e616620d70552cd566',1,'glm']]], ['quadraticeasein',['quadraticEaseIn',['../a00318.html#gaf42089d35855695132d217cd902304a0',1,'glm']]], ['quadraticeaseinout',['quadraticEaseInOut',['../a00318.html#ga03e8fc2d7945a4e63ee33b2159c14cea',1,'glm']]], ['quadraticeaseout',['quadraticEaseOut',['../a00318.html#ga283717bc2d937547ad34ec0472234ee3',1,'glm']]], ['quarter_5fpi',['quarter_pi',['../a00290.html#ga3c9df42bd73c519a995c43f0f99e77e0',1,'glm']]], ['quarticeasein',['quarticEaseIn',['../a00318.html#ga808b41f14514f47dad5dcc69eb924afd',1,'glm']]], ['quarticeaseinout',['quarticEaseInOut',['../a00318.html#ga6d000f852de12b197e154f234b20c505',1,'glm']]], ['quarticeaseout',['quarticEaseOut',['../a00318.html#ga4dfb33fa7664aa888eb647999d329b98',1,'glm']]], ['quat',['quat',['../a00252.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], ['quat_5fcast',['quat_cast',['../a00299.html#ga1108a4ab88ca87bac321454eea7702f8',1,'glm::quat_cast(mat< 3, 3, T, Q > const &x)'],['../a00299.html#ga4524810f07f72e8c7bdc7764fa11cb58',1,'glm::quat_cast(mat< 4, 4, T, Q > const &x)']]], ['quat_5fidentity',['quat_identity',['../a00352.html#ga5ee8332600b2aca3a77622a28d857b55',1,'glm']]], ['quaternion_5fcommon_2ehpp',['quaternion_common.hpp',['../a00127.html',1,'']]], ['quaternion_5fdouble_2ehpp',['quaternion_double.hpp',['../a00128.html',1,'']]], ['quaternion_5fdouble_5fprecision_2ehpp',['quaternion_double_precision.hpp',['../a00129.html',1,'']]], ['quaternion_5fexponential_2ehpp',['quaternion_exponential.hpp',['../a00130.html',1,'']]], ['quaternion_5ffloat_2ehpp',['quaternion_float.hpp',['../a00131.html',1,'']]], ['quaternion_5ffloat_5fprecision_2ehpp',['quaternion_float_precision.hpp',['../a00132.html',1,'']]], ['quaternion_5fgeometric_2ehpp',['quaternion_geometric.hpp',['../a00133.html',1,'']]], ['quaternion_5frelational_2ehpp',['quaternion_relational.hpp',['../a00134.html',1,'']]], ['quaternion_5ftransform_2ehpp',['quaternion_transform.hpp',['../a00135.html',1,'']]], ['quaternion_5ftrigonometric_2ehpp',['quaternion_trigonometric.hpp',['../a00136.html',1,'']]], ['quatlookat',['quatLookAt',['../a00299.html#gabe7fc5ec5feb41ab234d5d2b6254697f',1,'glm']]], ['quatlookatlh',['quatLookAtLH',['../a00299.html#ga2da350c73411be3bb19441b226b81a74',1,'glm']]], ['quatlookatrh',['quatLookAtRH',['../a00299.html#gaf6529ac8c04a57fcc35865b5c9437cc8',1,'glm']]], ['quinticeasein',['quinticEaseIn',['../a00318.html#ga097579d8e087dcf48037588140a21640',1,'glm']]], ['quinticeaseinout',['quinticEaseInOut',['../a00318.html#ga2a82d5c46df7e2d21cc0108eb7b83934',1,'glm']]], ['quinticeaseout',['quinticEaseOut',['../a00318.html#ga7dbd4d5c8da3f5353121f615e7b591d7',1,'glm']]], ['qword',['qword',['../a00354.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_f.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/all_f.js ================================================ var searchData= [ ['recommended_20extensions',['Recommended extensions',['../a00286.html',1,'']]], ['radialgradient',['radialGradient',['../a00327.html#gaaecb1e93de4cbe0758b882812d4da294',1,'glm']]], ['radians',['radians',['../a00373.html#ga6e1db4862c5e25afd553930e2fdd6a68',1,'glm']]], ['random_2ehpp',['random.hpp',['../a00137.html',1,'']]], ['range_2ehpp',['range.hpp',['../a00138.html',1,'']]], ['raw_5fdata_2ehpp',['raw_data.hpp',['../a00139.html',1,'']]], ['reciprocal_2ehpp',['reciprocal.hpp',['../a00140.html',1,'']]], ['reflect',['reflect',['../a00279.html#ga5631dd1d5618de5450b1ea3cf3e94905',1,'glm']]], ['refract',['refract',['../a00279.html#ga01da3dff9e2ef6b9d4915c3047e22b74',1,'glm']]], ['repeat',['repeat',['../a00369.html#ga809650c6310ea7c42666e918c117fb6f',1,'glm']]], ['rgb2ycocg',['rgb2YCoCg',['../a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5',1,'glm']]], ['rgb2ycocgr',['rgb2YCoCgR',['../a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898',1,'glm']]], ['rgbcolor',['rgbColor',['../a00312.html#ga5f9193be46f45f0655c05a0cdca006db',1,'glm']]], ['righthanded',['rightHanded',['../a00328.html#ga99386a5ab5491871b947076e21699cc8',1,'glm']]], ['roll',['roll',['../a00299.html#ga0cc5ad970d0b00829b139fe0fe5a1e13',1,'glm']]], ['root_5ffive',['root_five',['../a00290.html#gae9ebbded75b53d4faeb1e4ef8b3347a2',1,'glm']]], ['root_5fhalf_5fpi',['root_half_pi',['../a00290.html#ga4e276cb823cc5e612d4f89ed99c75039',1,'glm']]], ['root_5fln_5ffour',['root_ln_four',['../a00290.html#ga4129412e96b33707a77c1a07652e23e2',1,'glm']]], ['root_5fpi',['root_pi',['../a00290.html#ga261380796b2cd496f68d2cf1d08b8eb9',1,'glm']]], ['root_5fthree',['root_three',['../a00290.html#ga4f286be4abe88be1eed7d2a9f6cb193e',1,'glm']]], ['root_5ftwo',['root_two',['../a00290.html#ga74e607d29020f100c0d0dc46ce2ca950',1,'glm']]], ['root_5ftwo_5fpi',['root_two_pi',['../a00290.html#ga2bcedc575039fe0cd765742f8bbb0bd3',1,'glm']]], ['rotate',['rotate',['../a00247.html#gaee9e865eaa9776370996da2940873fd4',1,'glm::rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)'],['../a00256.html#gabfc57de6d4d2e11970f54119c5ccf0f5',1,'glm::rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)'],['../a00341.html#gad5c84a4932a758f385a87098ce1b1660',1,'glm::rotate(mat< 3, 3, T, Q > const &m, T angle)'],['../a00352.html#ga07da6ef58646442efe93b0c273d73776',1,'glm::rotate(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#gafcb78dfff45fbf19a7fcb2bd03fbf196',1,'glm::rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)'],['../a00356.html#gab64a67b52ff4f86c3ba16595a5a25af6',1,'glm::rotate(vec< 2, T, Q > const &v, T const &angle)'],['../a00356.html#ga1ba501ef83d1a009a17ac774cc560f21',1,'glm::rotate(vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00356.html#ga1005f1267ed9c57faa3f24cf6873b961',1,'glm::rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00362.html#gaf599be4c0e9d99be1f9cddba79b6018b',1,'glm::rotate(T angle, vec< 3, T, Q > const &v)']]], ['rotate_5fnormalized_5faxis_2ehpp',['rotate_normalized_axis.hpp',['../a00141.html',1,'']]], ['rotate_5fvector_2ehpp',['rotate_vector.hpp',['../a00142.html',1,'']]], ['rotatenormalizedaxis',['rotateNormalizedAxis',['../a00355.html#ga50efd7ebca0f7a603bb3cc11e34c708d',1,'glm::rotateNormalizedAxis(mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)'],['../a00355.html#ga08f9c5411437d528019a25bfc01473d1',1,'glm::rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)']]], ['rotatex',['rotateX',['../a00356.html#ga059fdbdba4cca35cdff172a9d0d0afc9',1,'glm::rotateX(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga4333b1ea8ebf1bd52bc3801a7617398a',1,'glm::rotateX(vec< 4, T, Q > const &v, T const &angle)']]], ['rotatey',['rotateY',['../a00356.html#gaebdc8b054ace27d9f62e054531c6f44d',1,'glm::rotateY(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga3ce3db0867b7f8efd878ee34f95a623b',1,'glm::rotateY(vec< 4, T, Q > const &v, T const &angle)']]], ['rotatez',['rotateZ',['../a00356.html#ga5a048838a03f6249acbacb4dbacf79c4',1,'glm::rotateZ(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga923b75c6448161053768822d880702e6',1,'glm::rotateZ(vec< 4, T, Q > const &v, T const &angle)']]], ['rotation',['rotation',['../a00352.html#ga03e61282831cc3f52cc76f72f52ad2c5',1,'glm']]], ['round',['round',['../a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e',1,'glm']]], ['round_2ehpp',['round.hpp',['../a00143.html',1,'']]], ['roundeven',['roundEven',['../a00241.html#ga76b81785045a057989a84d99aeeb1578',1,'glm']]], ['roundmultiple',['roundMultiple',['../a00302.html#gab892defcc9c0b0618df7251253dc0fbb',1,'glm::roundMultiple(genType v, genType Multiple)'],['../a00302.html#ga2f1a68332d761804c054460a612e3a4b',1,'glm::roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['roundpoweroftwo',['roundPowerOfTwo',['../a00302.html#gae4e1bf5d1cd179f59261a7342bdcafca',1,'glm::roundPowerOfTwo(genIUType v)'],['../a00302.html#ga258802a7d55c03c918f28cf4d241c4d0',1,'glm::roundPowerOfTwo(vec< L, T, Q > const &v)']]], ['row',['row',['../a00293.html#ga259e5ebd0f31ec3f83440f8cae7f5dba',1,'glm::row(genType const &m, length_t index)'],['../a00293.html#gaadcc64829aadf4103477679e48c7594f',1,'glm::row(genType const &m, length_t index, typename genType::row_type const &x)']]], ['rowmajor2',['rowMajor2',['../a00338.html#gaf5b1aee9e3eb1acf9d6c3c8be1e73bb8',1,'glm::rowMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gaf66c75ed69ca9e87462550708c2c6726',1,'glm::rowMajor2(mat< 2, 2, T, Q > const &m)']]], ['rowmajor3',['rowMajor3',['../a00338.html#ga2ae46497493339f745754e40f438442e',1,'glm::rowMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#gad8a3a50ab47bbe8d36cdb81d90dfcf77',1,'glm::rowMajor3(mat< 3, 3, T, Q > const &m)']]], ['rowmajor4',['rowMajor4',['../a00338.html#ga9636cd6bbe2c32a8d0c03ffb8b1ef284',1,'glm::rowMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gac92ad1c2acdf18d3eb7be45a32f9566b',1,'glm::rowMajor4(mat< 4, 4, T, Q > const &m)']]], ['rq_5fdecompose',['rq_decompose',['../a00336.html#ga82874e2ebe891ba35ac21d9993873758',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_0.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_0.js ================================================ var searchData= [ ['associated_5fmin_5fmax_2ehpp',['associated_min_max.hpp',['../a00007.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_1.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_1.js ================================================ var searchData= [ ['bit_2ehpp',['bit.hpp',['../a00008.html',1,'']]], ['bitfield_2ehpp',['bitfield.hpp',['../a00009.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_10.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_10.js ================================================ var searchData= [ ['scalar_5fcommon_2ehpp',['scalar_common.hpp',['../a00144.html',1,'']]], ['scalar_5fconstants_2ehpp',['scalar_constants.hpp',['../a00145.html',1,'']]], ['scalar_5fint_5fsized_2ehpp',['scalar_int_sized.hpp',['../a00146.html',1,'']]], ['scalar_5finteger_2ehpp',['scalar_integer.hpp',['../a00147.html',1,'']]], ['scalar_5fmultiplication_2ehpp',['scalar_multiplication.hpp',['../a00148.html',1,'']]], ['scalar_5fuint_5fsized_2ehpp',['scalar_uint_sized.hpp',['../a00151.html',1,'']]], ['scalar_5fulp_2ehpp',['scalar_ulp.hpp',['../a00152.html',1,'']]], ['spline_2ehpp',['spline.hpp',['../a00154.html',1,'']]], ['std_5fbased_5ftype_2ehpp',['std_based_type.hpp',['../a00155.html',1,'']]], ['string_5fcast_2ehpp',['string_cast.hpp',['../a00156.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_11.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_11.js ================================================ var searchData= [ ['texture_2ehpp',['texture.hpp',['../a00157.html',1,'']]], ['transform_2ehpp',['transform.hpp',['../a00158.html',1,'']]], ['transform2_2ehpp',['transform2.hpp',['../a00159.html',1,'']]], ['trigonometric_2ehpp',['trigonometric.hpp',['../a00160.html',1,'']]], ['type_5fmat2x2_2ehpp',['type_mat2x2.hpp',['../a00165.html',1,'']]], ['type_5fmat2x3_2ehpp',['type_mat2x3.hpp',['../a00166.html',1,'']]], ['type_5fmat2x4_2ehpp',['type_mat2x4.hpp',['../a00167.html',1,'']]], ['type_5fmat3x2_2ehpp',['type_mat3x2.hpp',['../a00168.html',1,'']]], ['type_5fmat3x3_2ehpp',['type_mat3x3.hpp',['../a00169.html',1,'']]], ['type_5fmat3x4_2ehpp',['type_mat3x4.hpp',['../a00170.html',1,'']]], ['type_5fmat4x2_2ehpp',['type_mat4x2.hpp',['../a00171.html',1,'']]], ['type_5fmat4x3_2ehpp',['type_mat4x3.hpp',['../a00172.html',1,'']]], ['type_5fmat4x4_2ehpp',['type_mat4x4.hpp',['../a00173.html',1,'']]], ['type_5fprecision_2ehpp',['type_precision.hpp',['../a00174.html',1,'']]], ['type_5fptr_2ehpp',['type_ptr.hpp',['../a00175.html',1,'']]], ['type_5fquat_2ehpp',['type_quat.hpp',['../a00176.html',1,'']]], ['type_5ftrait_2ehpp',['type_trait.hpp',['../a00177.html',1,'']]], ['type_5fvec1_2ehpp',['type_vec1.hpp',['../a00178.html',1,'']]], ['type_5fvec2_2ehpp',['type_vec2.hpp',['../a00179.html',1,'']]], ['type_5fvec3_2ehpp',['type_vec3.hpp',['../a00180.html',1,'']]], ['type_5fvec4_2ehpp',['type_vec4.hpp',['../a00181.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_12.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_12.js ================================================ var searchData= [ ['ulp_2ehpp',['ulp.hpp',['../a00182.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_13.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_13.js ================================================ var searchData= [ ['vec1_2ehpp',['vec1.hpp',['../a00183.html',1,'']]], ['vec2_2ehpp',['vec2.hpp',['../a00184.html',1,'']]], ['vec3_2ehpp',['vec3.hpp',['../a00185.html',1,'']]], ['vec4_2ehpp',['vec4.hpp',['../a00186.html',1,'']]], ['vec_5fswizzle_2ehpp',['vec_swizzle.hpp',['../a00187.html',1,'']]], ['vector_5fangle_2ehpp',['vector_angle.hpp',['../a00188.html',1,'']]], ['vector_5fbool1_2ehpp',['vector_bool1.hpp',['../a00189.html',1,'']]], ['vector_5fbool1_5fprecision_2ehpp',['vector_bool1_precision.hpp',['../a00190.html',1,'']]], ['vector_5fbool2_2ehpp',['vector_bool2.hpp',['../a00191.html',1,'']]], ['vector_5fbool2_5fprecision_2ehpp',['vector_bool2_precision.hpp',['../a00192.html',1,'']]], ['vector_5fbool3_2ehpp',['vector_bool3.hpp',['../a00193.html',1,'']]], ['vector_5fbool3_5fprecision_2ehpp',['vector_bool3_precision.hpp',['../a00194.html',1,'']]], ['vector_5fbool4_2ehpp',['vector_bool4.hpp',['../a00195.html',1,'']]], ['vector_5fbool4_5fprecision_2ehpp',['vector_bool4_precision.hpp',['../a00196.html',1,'']]], ['vector_5fcommon_2ehpp',['vector_common.hpp',['../a00197.html',1,'']]], ['vector_5fdouble1_2ehpp',['vector_double1.hpp',['../a00198.html',1,'']]], ['vector_5fdouble1_5fprecision_2ehpp',['vector_double1_precision.hpp',['../a00199.html',1,'']]], ['vector_5fdouble2_2ehpp',['vector_double2.hpp',['../a00200.html',1,'']]], ['vector_5fdouble2_5fprecision_2ehpp',['vector_double2_precision.hpp',['../a00201.html',1,'']]], ['vector_5fdouble3_2ehpp',['vector_double3.hpp',['../a00202.html',1,'']]], ['vector_5fdouble3_5fprecision_2ehpp',['vector_double3_precision.hpp',['../a00203.html',1,'']]], ['vector_5fdouble4_2ehpp',['vector_double4.hpp',['../a00204.html',1,'']]], ['vector_5fdouble4_5fprecision_2ehpp',['vector_double4_precision.hpp',['../a00205.html',1,'']]], ['vector_5ffloat1_2ehpp',['vector_float1.hpp',['../a00206.html',1,'']]], ['vector_5ffloat1_5fprecision_2ehpp',['vector_float1_precision.hpp',['../a00207.html',1,'']]], ['vector_5ffloat2_2ehpp',['vector_float2.hpp',['../a00208.html',1,'']]], ['vector_5ffloat2_5fprecision_2ehpp',['vector_float2_precision.hpp',['../a00209.html',1,'']]], ['vector_5ffloat3_2ehpp',['vector_float3.hpp',['../a00210.html',1,'']]], ['vector_5ffloat3_5fprecision_2ehpp',['vector_float3_precision.hpp',['../a00211.html',1,'']]], ['vector_5ffloat4_2ehpp',['vector_float4.hpp',['../a00212.html',1,'']]], ['vector_5ffloat4_5fprecision_2ehpp',['vector_float4_precision.hpp',['../a00213.html',1,'']]], ['vector_5fint1_2ehpp',['vector_int1.hpp',['../a00214.html',1,'']]], ['vector_5fint1_5fprecision_2ehpp',['vector_int1_precision.hpp',['../a00215.html',1,'']]], ['vector_5fint2_2ehpp',['vector_int2.hpp',['../a00216.html',1,'']]], ['vector_5fint2_5fprecision_2ehpp',['vector_int2_precision.hpp',['../a00217.html',1,'']]], ['vector_5fint3_2ehpp',['vector_int3.hpp',['../a00218.html',1,'']]], ['vector_5fint3_5fprecision_2ehpp',['vector_int3_precision.hpp',['../a00219.html',1,'']]], ['vector_5fint4_2ehpp',['vector_int4.hpp',['../a00220.html',1,'']]], ['vector_5fint4_5fprecision_2ehpp',['vector_int4_precision.hpp',['../a00221.html',1,'']]], ['vector_5finteger_2ehpp',['vector_integer.hpp',['../a00222.html',1,'']]], ['vector_5fquery_2ehpp',['vector_query.hpp',['../a00223.html',1,'']]], ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00225.html',1,'']]], ['vector_5fuint1_2ehpp',['vector_uint1.hpp',['../a00226.html',1,'']]], ['vector_5fuint1_5fprecision_2ehpp',['vector_uint1_precision.hpp',['../a00227.html',1,'']]], ['vector_5fuint2_2ehpp',['vector_uint2.hpp',['../a00228.html',1,'']]], ['vector_5fuint2_5fprecision_2ehpp',['vector_uint2_precision.hpp',['../a00229.html',1,'']]], ['vector_5fuint3_2ehpp',['vector_uint3.hpp',['../a00230.html',1,'']]], ['vector_5fuint3_5fprecision_2ehpp',['vector_uint3_precision.hpp',['../a00231.html',1,'']]], ['vector_5fuint4_2ehpp',['vector_uint4.hpp',['../a00232.html',1,'']]], ['vector_5fuint4_5fprecision_2ehpp',['vector_uint4_precision.hpp',['../a00233.html',1,'']]], ['vector_5fulp_2ehpp',['vector_ulp.hpp',['../a00234.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_14.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_14.js ================================================ var searchData= [ ['wrap_2ehpp',['wrap.hpp',['../a00235.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_2.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_2.js ================================================ var searchData= [ ['closest_5fpoint_2ehpp',['closest_point.hpp',['../a00010.html',1,'']]], ['color_5fencoding_2ehpp',['color_encoding.hpp',['../a00011.html',1,'']]], ['color_5fspace_5fycocg_2ehpp',['color_space_YCoCg.hpp',['../a00014.html',1,'']]], ['common_2ehpp',['common.hpp',['../a00015.html',1,'']]], ['compatibility_2ehpp',['compatibility.hpp',['../a00017.html',1,'']]], ['component_5fwise_2ehpp',['component_wise.hpp',['../a00018.html',1,'']]], ['constants_2ehpp',['constants.hpp',['../a00021.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_3.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_3.js ================================================ var searchData= [ ['dual_5fquaternion_2ehpp',['dual_quaternion.hpp',['../a00022.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_4.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_4.js ================================================ var searchData= [ ['easing_2ehpp',['easing.hpp',['../a00023.html',1,'']]], ['epsilon_2ehpp',['epsilon.hpp',['../a00024.html',1,'']]], ['euler_5fangles_2ehpp',['euler_angles.hpp',['../a00025.html',1,'']]], ['exponential_2ehpp',['exponential.hpp',['../a00026.html',1,'']]], ['ext_2ehpp',['ext.hpp',['../a00027.html',1,'']]], ['extend_2ehpp',['extend.hpp',['../a00028.html',1,'']]], ['extended_5fmin_5fmax_2ehpp',['extended_min_max.hpp',['../a00029.html',1,'']]], ['exterior_5fproduct_2ehpp',['exterior_product.hpp',['../a00030.html',1,'']]], ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00108.html',1,'']]], ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00149.html',1,'']]], ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00224.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_5.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_5.js ================================================ var searchData= [ ['fast_5fexponential_2ehpp',['fast_exponential.hpp',['../a00031.html',1,'']]], ['fast_5fsquare_5froot_2ehpp',['fast_square_root.hpp',['../a00032.html',1,'']]], ['fast_5ftrigonometry_2ehpp',['fast_trigonometry.hpp',['../a00033.html',1,'']]], ['functions_2ehpp',['functions.hpp',['../a00034.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_6.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_6.js ================================================ var searchData= [ ['color_5fspace_2ehpp',['color_space.hpp',['../a00012.html',1,'']]], ['color_5fspace_2ehpp',['color_space.hpp',['../a00013.html',1,'']]], ['common_2ehpp',['common.hpp',['../a00016.html',1,'']]], ['geometric_2ehpp',['geometric.hpp',['../a00036.html',1,'']]], ['glm_2ehpp',['glm.hpp',['../a00037.html',1,'']]], ['gradient_5fpaint_2ehpp',['gradient_paint.hpp',['../a00038.html',1,'']]], ['integer_2ehpp',['integer.hpp',['../a00042.html',1,'']]], ['integer_2ehpp',['integer.hpp',['../a00041.html',1,'']]], ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00109.html',1,'']]], ['packing_2ehpp',['packing.hpp',['../a00119.html',1,'']]], ['quaternion_2ehpp',['quaternion.hpp',['../a00125.html',1,'']]], ['quaternion_2ehpp',['quaternion.hpp',['../a00126.html',1,'']]], ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00150.html',1,'']]], ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00162.html',1,'']]], ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00161.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_7.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_7.js ================================================ var searchData= [ ['handed_5fcoordinate_5fspace_2ehpp',['handed_coordinate_space.hpp',['../a00039.html',1,'']]], ['hash_2ehpp',['hash.hpp',['../a00040.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_8.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_8.js ================================================ var searchData= [ ['integer_2ehpp',['integer.hpp',['../a00043.html',1,'']]], ['intersect_2ehpp',['intersect.hpp',['../a00044.html',1,'']]], ['io_2ehpp',['io.hpp',['../a00045.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_9.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_9.js ================================================ var searchData= [ ['log_5fbase_2ehpp',['log_base.hpp',['../a00046.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_a.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_a.js ================================================ var searchData= [ ['mat2x2_2ehpp',['mat2x2.hpp',['../a00048.html',1,'']]], ['mat2x3_2ehpp',['mat2x3.hpp',['../a00049.html',1,'']]], ['mat2x4_2ehpp',['mat2x4.hpp',['../a00050.html',1,'']]], ['mat3x2_2ehpp',['mat3x2.hpp',['../a00051.html',1,'']]], ['mat3x3_2ehpp',['mat3x3.hpp',['../a00052.html',1,'']]], ['mat3x4_2ehpp',['mat3x4.hpp',['../a00053.html',1,'']]], ['mat4x2_2ehpp',['mat4x2.hpp',['../a00054.html',1,'']]], ['mat4x3_2ehpp',['mat4x3.hpp',['../a00055.html',1,'']]], ['mat4x4_2ehpp',['mat4x4.hpp',['../a00056.html',1,'']]], ['matrix_2ehpp',['matrix.hpp',['../a00057.html',1,'']]], ['matrix_5faccess_2ehpp',['matrix_access.hpp',['../a00058.html',1,'']]], ['matrix_5fclip_5fspace_2ehpp',['matrix_clip_space.hpp',['../a00059.html',1,'']]], ['matrix_5fcommon_2ehpp',['matrix_common.hpp',['../a00060.html',1,'']]], ['matrix_5fcross_5fproduct_2ehpp',['matrix_cross_product.hpp',['../a00061.html',1,'']]], ['matrix_5fdecompose_2ehpp',['matrix_decompose.hpp',['../a00062.html',1,'']]], ['matrix_5fdouble2x2_2ehpp',['matrix_double2x2.hpp',['../a00063.html',1,'']]], ['matrix_5fdouble2x2_5fprecision_2ehpp',['matrix_double2x2_precision.hpp',['../a00064.html',1,'']]], ['matrix_5fdouble2x3_2ehpp',['matrix_double2x3.hpp',['../a00065.html',1,'']]], ['matrix_5fdouble2x3_5fprecision_2ehpp',['matrix_double2x3_precision.hpp',['../a00066.html',1,'']]], ['matrix_5fdouble2x4_2ehpp',['matrix_double2x4.hpp',['../a00067.html',1,'']]], ['matrix_5fdouble2x4_5fprecision_2ehpp',['matrix_double2x4_precision.hpp',['../a00068.html',1,'']]], ['matrix_5fdouble3x2_2ehpp',['matrix_double3x2.hpp',['../a00069.html',1,'']]], ['matrix_5fdouble3x2_5fprecision_2ehpp',['matrix_double3x2_precision.hpp',['../a00070.html',1,'']]], ['matrix_5fdouble3x3_2ehpp',['matrix_double3x3.hpp',['../a00071.html',1,'']]], ['matrix_5fdouble3x3_5fprecision_2ehpp',['matrix_double3x3_precision.hpp',['../a00072.html',1,'']]], ['matrix_5fdouble3x4_2ehpp',['matrix_double3x4.hpp',['../a00073.html',1,'']]], ['matrix_5fdouble3x4_5fprecision_2ehpp',['matrix_double3x4_precision.hpp',['../a00074.html',1,'']]], ['matrix_5fdouble4x2_2ehpp',['matrix_double4x2.hpp',['../a00075.html',1,'']]], ['matrix_5fdouble4x2_5fprecision_2ehpp',['matrix_double4x2_precision.hpp',['../a00076.html',1,'']]], ['matrix_5fdouble4x3_2ehpp',['matrix_double4x3.hpp',['../a00077.html',1,'']]], ['matrix_5fdouble4x3_5fprecision_2ehpp',['matrix_double4x3_precision.hpp',['../a00078.html',1,'']]], ['matrix_5fdouble4x4_2ehpp',['matrix_double4x4.hpp',['../a00079.html',1,'']]], ['matrix_5fdouble4x4_5fprecision_2ehpp',['matrix_double4x4_precision.hpp',['../a00080.html',1,'']]], ['matrix_5ffactorisation_2ehpp',['matrix_factorisation.hpp',['../a00081.html',1,'']]], ['matrix_5ffloat2x2_2ehpp',['matrix_float2x2.hpp',['../a00082.html',1,'']]], ['matrix_5ffloat2x2_5fprecision_2ehpp',['matrix_float2x2_precision.hpp',['../a00083.html',1,'']]], ['matrix_5ffloat2x3_2ehpp',['matrix_float2x3.hpp',['../a00084.html',1,'']]], ['matrix_5ffloat2x3_5fprecision_2ehpp',['matrix_float2x3_precision.hpp',['../a00085.html',1,'']]], ['matrix_5ffloat2x4_2ehpp',['matrix_float2x4.hpp',['../a00086.html',1,'']]], ['matrix_5ffloat2x4_5fprecision_2ehpp',['matrix_float2x4_precision.hpp',['../a00087.html',1,'']]], ['matrix_5ffloat3x2_2ehpp',['matrix_float3x2.hpp',['../a00088.html',1,'']]], ['matrix_5ffloat3x2_5fprecision_2ehpp',['matrix_float3x2_precision.hpp',['../a00089.html',1,'']]], ['matrix_5ffloat3x3_2ehpp',['matrix_float3x3.hpp',['../a00090.html',1,'']]], ['matrix_5ffloat3x3_5fprecision_2ehpp',['matrix_float3x3_precision.hpp',['../a00091.html',1,'']]], ['matrix_5ffloat3x4_2ehpp',['matrix_float3x4.hpp',['../a00092.html',1,'']]], ['matrix_5ffloat3x4_5fprecision_2ehpp',['matrix_float3x4_precision.hpp',['../a00093.html',1,'']]], ['matrix_5ffloat4x2_2ehpp',['matrix_float4x2.hpp',['../a00094.html',1,'']]], ['matrix_5ffloat4x3_2ehpp',['matrix_float4x3.hpp',['../a00096.html',1,'']]], ['matrix_5ffloat4x3_5fprecision_2ehpp',['matrix_float4x3_precision.hpp',['../a00097.html',1,'']]], ['matrix_5ffloat4x4_2ehpp',['matrix_float4x4.hpp',['../a00098.html',1,'']]], ['matrix_5ffloat4x4_5fprecision_2ehpp',['matrix_float4x4_precision.hpp',['../a00099.html',1,'']]], ['matrix_5finteger_2ehpp',['matrix_integer.hpp',['../a00100.html',1,'']]], ['matrix_5finterpolation_2ehpp',['matrix_interpolation.hpp',['../a00101.html',1,'']]], ['matrix_5finverse_2ehpp',['matrix_inverse.hpp',['../a00102.html',1,'']]], ['matrix_5fmajor_5fstorage_2ehpp',['matrix_major_storage.hpp',['../a00103.html',1,'']]], ['matrix_5foperation_2ehpp',['matrix_operation.hpp',['../a00104.html',1,'']]], ['matrix_5fprojection_2ehpp',['matrix_projection.hpp',['../a00105.html',1,'']]], ['matrix_5fquery_2ehpp',['matrix_query.hpp',['../a00106.html',1,'']]], ['matrix_5frelational_2ehpp',['matrix_relational.hpp',['../a00107.html',1,'']]], ['matrix_5ftransform_5f2d_2ehpp',['matrix_transform_2d.hpp',['../a00110.html',1,'']]], ['mixed_5fproduct_2ehpp',['mixed_product.hpp',['../a00111.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_b.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_b.js ================================================ var searchData= [ ['noise_2ehpp',['noise.hpp',['../a00112.html',1,'']]], ['norm_2ehpp',['norm.hpp',['../a00113.html',1,'']]], ['normal_2ehpp',['normal.hpp',['../a00114.html',1,'']]], ['normalize_5fdot_2ehpp',['normalize_dot.hpp',['../a00115.html',1,'']]], ['number_5fprecision_2ehpp',['number_precision.hpp',['../a00116.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_c.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_c.js ================================================ var searchData= [ ['optimum_5fpow_2ehpp',['optimum_pow.hpp',['../a00117.html',1,'']]], ['orthonormalize_2ehpp',['orthonormalize.hpp',['../a00118.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_d.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_d.js ================================================ var searchData= [ ['packing_2ehpp',['packing.hpp',['../a00120.html',1,'']]], ['perpendicular_2ehpp',['perpendicular.hpp',['../a00121.html',1,'']]], ['polar_5fcoordinates_2ehpp',['polar_coordinates.hpp',['../a00122.html',1,'']]], ['projection_2ehpp',['projection.hpp',['../a00123.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_e.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_e.js ================================================ var searchData= [ ['quaternion_5fcommon_2ehpp',['quaternion_common.hpp',['../a00127.html',1,'']]], ['quaternion_5fdouble_2ehpp',['quaternion_double.hpp',['../a00128.html',1,'']]], ['quaternion_5fdouble_5fprecision_2ehpp',['quaternion_double_precision.hpp',['../a00129.html',1,'']]], ['quaternion_5fexponential_2ehpp',['quaternion_exponential.hpp',['../a00130.html',1,'']]], ['quaternion_5ffloat_2ehpp',['quaternion_float.hpp',['../a00131.html',1,'']]], ['quaternion_5ffloat_5fprecision_2ehpp',['quaternion_float_precision.hpp',['../a00132.html',1,'']]], ['quaternion_5fgeometric_2ehpp',['quaternion_geometric.hpp',['../a00133.html',1,'']]], ['quaternion_5frelational_2ehpp',['quaternion_relational.hpp',['../a00134.html',1,'']]], ['quaternion_5ftransform_2ehpp',['quaternion_transform.hpp',['../a00135.html',1,'']]], ['quaternion_5ftrigonometric_2ehpp',['quaternion_trigonometric.hpp',['../a00136.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_f.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/files_f.js ================================================ var searchData= [ ['random_2ehpp',['random.hpp',['../a00137.html',1,'']]], ['range_2ehpp',['range.hpp',['../a00138.html',1,'']]], ['raw_5fdata_2ehpp',['raw_data.hpp',['../a00139.html',1,'']]], ['reciprocal_2ehpp',['reciprocal.hpp',['../a00140.html',1,'']]], ['rotate_5fnormalized_5faxis_2ehpp',['rotate_normalized_axis.hpp',['../a00141.html',1,'']]], ['rotate_5fvector_2ehpp',['rotate_vector.hpp',['../a00142.html',1,'']]], ['round_2ehpp',['round.hpp',['../a00143.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_0.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_0.js ================================================ var searchData= [ ['abs',['abs',['../a00241.html#ga439e60a72eadecfeda2df5449c613a64',1,'glm::abs(genType x)'],['../a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6',1,'glm::abs(vec< L, T, Q > const &x)']]], ['acos',['acos',['../a00373.html#gacc9b092df8257c68f19c9053703e2563',1,'glm']]], ['acosh',['acosh',['../a00373.html#ga858f35dc66fd2688f20c52b5f25be76a',1,'glm']]], ['acot',['acot',['../a00301.html#gaeadfb9c9d71093f7865b2ba2ca8d104d',1,'glm']]], ['acoth',['acoth',['../a00301.html#gafaca98a7100170db8841f446282debfa',1,'glm']]], ['acsc',['acsc',['../a00301.html#ga1b4bed91476b9b915e76b4a30236d330',1,'glm']]], ['acsch',['acsch',['../a00301.html#ga4b50aa5e5afc7e19ec113ab91596c576',1,'glm']]], ['adjugate',['adjugate',['../a00339.html#ga40a38402a30860af6e508fe76211e659',1,'glm::adjugate(mat< 2, 2, T, Q > const &m)'],['../a00339.html#gaddb09f7abc1a9c56a243d32ff3538be6',1,'glm::adjugate(mat< 3, 3, T, Q > const &m)'],['../a00339.html#ga9aaa7d1f40391b0b5cacccb60e104ba8',1,'glm::adjugate(mat< 4, 4, T, Q > const &m)']]], ['affineinverse',['affineInverse',['../a00295.html#gae0fcc5fc8783291f9702272de428fa0e',1,'glm']]], ['all',['all',['../a00374.html#ga87e53f50b679f5f95c5cb4780311b3dd',1,'glm']]], ['angle',['angle',['../a00257.html#ga8aa248b31d5ade470c87304df5eb7bd8',1,'glm::angle(qua< T, Q > const &x)'],['../a00367.html#ga2e2917b4cb75ca3d043ac15ff88f14e1',1,'glm::angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['angleaxis',['angleAxis',['../a00257.html#ga5c0095cfcb218c75a4b79d7687950036',1,'glm']]], ['any',['any',['../a00374.html#ga911b3f8e41459dd551ccb6d385d91061',1,'glm']]], ['arecollinear',['areCollinear',['../a00368.html#ga13da4a787a2ff70e95d561fb19ff91b4',1,'glm']]], ['areorthogonal',['areOrthogonal',['../a00368.html#gac7b95b3f798e3c293262b2bdaad47c57',1,'glm']]], ['areorthonormal',['areOrthonormal',['../a00368.html#ga1b091c3d7f9ee3b0708311c001c293e3',1,'glm']]], ['asec',['asec',['../a00301.html#ga2c5b7f962c2c9ff684e6d2de48db1f10',1,'glm']]], ['asech',['asech',['../a00301.html#gaec7586dccfe431f850d006f3824b8ca6',1,'glm']]], ['asin',['asin',['../a00373.html#ga0552d2df4865fa8c3d7cfc3ec2caac73',1,'glm']]], ['asinh',['asinh',['../a00373.html#ga3ef16b501ee859fddde88e22192a5950',1,'glm']]], ['associatedmax',['associatedMax',['../a00308.html#ga7d9c8785230c8db60f72ec8975f1ba45',1,'glm::associatedMax(T x, U a, T y, U b)'],['../a00308.html#ga5c6758bc50aa7fbe700f87123a045aad',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#ga0d169d6ce26b03248df175f39005d77f',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)'],['../a00308.html#ga4086269afabcb81dd7ded33cb3448653',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gaec891e363d91abbf3a4443cf2f652209',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c)'],['../a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)'],['../a00308.html#ga19f59d1141a51a3b2108a9807af78f7f',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)'],['../a00308.html#ga3038ffcb43eaa6af75897a99a5047ccc',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], ['associatedmin',['associatedMin',['../a00308.html#gacc01bd272359572fc28437ae214a02df',1,'glm::associatedMin(T x, U a, T y, U b)'],['../a00308.html#gac2f0dff90948f2e44386a5eafd941d1c',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#gacfec519c820331d023ef53a511749319',1,'glm::associatedMin(T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)'],['../a00308.html#ga4757c7cab2d809124a8525d0a9deeb37',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gad0aa8f86259a26d839d34a3577a923fc',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c)'],['../a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#ga432224ebe2085eaa2b63a077ecbbbff6',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#ga66b08118bc88f0494bcacb7cdb940556',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68',1,'glm::associatedMin(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#ga2db7e351994baee78540a562d4bb6d3b',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], ['atan',['atan',['../a00373.html#gac61629f3a4aa14057e7a8cae002291db',1,'glm::atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)'],['../a00373.html#ga5229f087eaccbc466f1c609ce3107b95',1,'glm::atan(vec< L, T, Q > const &y_over_x)']]], ['atan2',['atan2',['../a00315.html#gac63011205bf6d0be82589dc56dd26708',1,'glm::atan2(T x, T y)'],['../a00315.html#ga83bc41bd6f89113ee8006576b12bfc50',1,'glm::atan2(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y)'],['../a00315.html#gac39314f5087e7e51e592897cabbc1927',1,'glm::atan2(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y)'],['../a00315.html#gaba86c28da7bf5bdac64fecf7d56e8ff3',1,'glm::atan2(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y)']]], ['atanh',['atanh',['../a00373.html#gabc925650e618357d07da255531658b87',1,'glm']]], ['axis',['axis',['../a00257.html#ga764254f10248b505e936e5309a88c23d',1,'glm']]], ['axisangle',['axisAngle',['../a00337.html#gafefe32ce5a90a135287ba34fac3623bc',1,'glm']]], ['axisanglematrix',['axisAngleMatrix',['../a00337.html#ga3a788e2f5223397df5c426413ecc2f6b',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_1.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_1.js ================================================ var searchData= [ ['backeasein',['backEaseIn',['../a00318.html#ga93cddcdb6347a44d5927cc2bf2570816',1,'glm::backEaseIn(genType const &a)'],['../a00318.html#ga33777c9dd98f61d9472f96aafdf2bd36',1,'glm::backEaseIn(genType const &a, genType const &o)']]], ['backeaseinout',['backEaseInOut',['../a00318.html#gace6d24722a2f6722b56398206eb810bb',1,'glm::backEaseInOut(genType const &a)'],['../a00318.html#ga68a7b760f2afdfab298d5cd6d7611fb1',1,'glm::backEaseInOut(genType const &a, genType const &o)']]], ['backeaseout',['backEaseOut',['../a00318.html#gabf25069fa906413c858fd46903d520b9',1,'glm::backEaseOut(genType const &a)'],['../a00318.html#ga640c1ac6fe9d277a197da69daf60ee4f',1,'glm::backEaseOut(genType const &a, genType const &o)']]], ['ballrand',['ballRand',['../a00300.html#ga7c53b7797f3147af68a11c767679fa3f',1,'glm']]], ['bitcount',['bitCount',['../a00370.html#ga44abfe3379e11cbd29425a843420d0d6',1,'glm::bitCount(genType v)'],['../a00370.html#gaac7b15e40bdea8d9aa4c4cb34049f7b5',1,'glm::bitCount(vec< L, T, Q > const &v)']]], ['bitfielddeinterleave',['bitfieldDeinterleave',['../a00288.html#ga091d934233a2e121df91b8c7230357c8',1,'glm::bitfieldDeinterleave(glm::uint16 x)'],['../a00288.html#ga7d1cc24dfbcdd932c3a2abbb76235f98',1,'glm::bitfieldDeinterleave(glm::uint32 x)'],['../a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60',1,'glm::bitfieldDeinterleave(glm::uint64 x)']]], ['bitfieldextract',['bitfieldExtract',['../a00370.html#ga346b25ab11e793e91a4a69c8aa6819f2',1,'glm']]], ['bitfieldfillone',['bitfieldFillOne',['../a00288.html#ga46f9295abe3b5c7658f5b13c7f819f0a',1,'glm::bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1',1,'glm::bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], ['bitfieldfillzero',['bitfieldFillZero',['../a00288.html#ga697b86998b7d74ee0a69d8e9f8819fee',1,'glm::bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2',1,'glm::bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], ['bitfieldinsert',['bitfieldInsert',['../a00370.html#ga2e82992340d421fadb61a473df699b20',1,'glm']]], ['bitfieldinterleave',['bitfieldInterleave',['../a00288.html#ga24cad0069f9a0450abd80b3e89501adf',1,'glm::bitfieldInterleave(int8 x, int8 y)'],['../a00288.html#ga9a4976a529aec2cee56525e1165da484',1,'glm::bitfieldInterleave(uint8 x, uint8 y)'],['../a00288.html#ga4a76bbca39c40153f3203d0a1926e142',1,'glm::bitfieldInterleave(u8vec2 const &v)'],['../a00288.html#gac51c33a394593f0631fa3aa5bb778809',1,'glm::bitfieldInterleave(int16 x, int16 y)'],['../a00288.html#ga94f3646a5667f4be56f8dcf3310e963f',1,'glm::bitfieldInterleave(uint16 x, uint16 y)'],['../a00288.html#ga406c4ee56af4ca37a73f449f154eca3e',1,'glm::bitfieldInterleave(u16vec2 const &v)'],['../a00288.html#gaebb756a24a0784e3d6fba8bd011ab77a',1,'glm::bitfieldInterleave(int32 x, int32 y)'],['../a00288.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd',1,'glm::bitfieldInterleave(uint32 x, uint32 y)'],['../a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78',1,'glm::bitfieldInterleave(u32vec2 const &v)'],['../a00288.html#ga8fdb724dccd4a07d57efc01147102137',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z)'],['../a00288.html#ga9fc2a0dd5dcf8b00e113f272a5feca93',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z)'],['../a00288.html#gaa901c36a842fa5d126ea650549f17b24',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z)'],['../a00288.html#ga3afd6d38881fe3948c53d4214d2197fd',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z)'],['../a00288.html#gad2075d96a6640121edaa98ea534102ca',1,'glm::bitfieldInterleave(int32 x, int32 y, int32 z)'],['../a00288.html#gab19fbc739fc0cf7247978602c36f7da8',1,'glm::bitfieldInterleave(uint32 x, uint32 y, uint32 z)'],['../a00288.html#ga8a44ae22f5c953b296c42d067dccbe6d',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)'],['../a00288.html#ga14bb274d54a3c26f4919dd7ed0dd0c36',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)'],['../a00288.html#ga180a63161e1319fbd5a53c84d0429c7a',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)'],['../a00288.html#gafca8768671a14c8016facccb66a89f26',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)']]], ['bitfieldreverse',['bitfieldReverse',['../a00370.html#ga750a1d92464489b7711dee67aa3441b6',1,'glm']]], ['bitfieldrotateleft',['bitfieldRotateLeft',['../a00288.html#ga2eb49678a344ce1495bdb5586d9896b9',1,'glm::bitfieldRotateLeft(genIUType In, int Shift)'],['../a00288.html#gae186317091b1a39214ebf79008d44a1e',1,'glm::bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)']]], ['bitfieldrotateright',['bitfieldRotateRight',['../a00288.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca',1,'glm::bitfieldRotateRight(genIUType In, int Shift)'],['../a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88',1,'glm::bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)']]], ['bounceeasein',['bounceEaseIn',['../a00318.html#gaac30767f2e430b0c3fc859a4d59c7b5b',1,'glm']]], ['bounceeaseinout',['bounceEaseInOut',['../a00318.html#gadf9f38eff1e5f4c2fa5b629a25ae413e',1,'glm']]], ['bounceeaseout',['bounceEaseOut',['../a00318.html#ga94007005ff0dcfa0749ebfa2aec540b2',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_10.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_10.js ================================================ var searchData= [ ['saturate',['saturate',['../a00315.html#ga0fd09e616d122bc2ed9726682ffd44b7',1,'glm::saturate(T x)'],['../a00315.html#gaee97b8001c794a78a44f5d59f62a8aba',1,'glm::saturate(const vec< 2, T, Q > &x)'],['../a00315.html#ga39bfe3a421286ee31680d45c31ccc161',1,'glm::saturate(const vec< 3, T, Q > &x)'],['../a00315.html#ga356f8c3a7e7d6376d3d4b0a026407183',1,'glm::saturate(const vec< 4, T, Q > &x)']]], ['saturation',['saturation',['../a00312.html#ga01a97152b44e1550edcac60bd849e884',1,'glm::saturation(T const s)'],['../a00312.html#ga2156cea600e90148ece5bc96fd6db43a',1,'glm::saturation(T const s, vec< 3, T, Q > const &color)'],['../a00312.html#gaba0eacee0736dae860e9371cc1ae4785',1,'glm::saturation(T const s, vec< 4, T, Q > const &color)']]], ['scale',['scale',['../a00247.html#ga05051adbee603fb3c5095d8cf5cc229b',1,'glm::scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gadb47d2ad2bd984b213e8ff7d9cd8154e',1,'glm::scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#gafbeefee8fec884d566e4ada0049174d7',1,'glm::scale(vec< 3, T, Q > const &v)']]], ['scalebias',['scaleBias',['../a00363.html#gabf249498b236e62c983d90d30d63c99c',1,'glm::scaleBias(T scale, T bias)'],['../a00363.html#gae2bdd91a76759fecfbaef97e3020aa8e',1,'glm::scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)']]], ['sec',['sec',['../a00301.html#gae4bcbebee670c5ea155f0777b3acbd84',1,'glm']]], ['sech',['sech',['../a00301.html#ga9a5cfd1e7170104a7b33863b1b75e5ae',1,'glm']]], ['shearx',['shearX',['../a00341.html#ga2a118ece5db1e2022112b954846012af',1,'glm']]], ['shearx2d',['shearX2D',['../a00363.html#gabf714b8a358181572b32a45555f71948',1,'glm']]], ['shearx3d',['shearX3D',['../a00363.html#ga73e867c6cd4d700fe2054437e56106c4',1,'glm']]], ['sheary',['shearY',['../a00341.html#ga717f1833369c1ac4a40e4ac015af885e',1,'glm']]], ['sheary2d',['shearY2D',['../a00363.html#gac7998d0763d9181550c77e8af09a182c',1,'glm']]], ['sheary3d',['shearY3D',['../a00363.html#gade5bb65ffcb513973db1a1314fb5cfac',1,'glm']]], ['shearz3d',['shearZ3D',['../a00363.html#ga6591e0a3a9d2c9c0b6577bb4dace0255',1,'glm']]], ['shortmix',['shortMix',['../a00352.html#gadc576cc957adc2a568cdcbc3799175bc',1,'glm']]], ['sign',['sign',['../a00241.html#ga1e2e5cfff800056540e32f6c9b604b28',1,'glm::sign(vec< L, T, Q > const &x)'],['../a00333.html#ga04ef803a24f3d4f8c67dbccb33b0fce0',1,'glm::sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)']]], ['simplex',['simplex',['../a00297.html#ga8122468c69015ff397349a7dcc638b27',1,'glm']]], ['sin',['sin',['../a00373.html#ga29747fd108cb7292ae5a284f69691a69',1,'glm']]], ['sineeasein',['sineEaseIn',['../a00318.html#gafb338ac6f6b2bcafee50e3dca5201dbf',1,'glm']]], ['sineeaseinout',['sineEaseInOut',['../a00318.html#gaa46e3d5fbf7a15caa28eff9ef192d7c7',1,'glm']]], ['sineeaseout',['sineEaseOut',['../a00318.html#gab3e454f883afc1606ef91363881bf5a3',1,'glm']]], ['sinh',['sinh',['../a00373.html#gac7c39ff21809e281552b4dbe46f4a39d',1,'glm']]], ['slerp',['slerp',['../a00248.html#gae7fc3c945be366b9942b842f55da428a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00356.html#ga8b11b18ce824174ea1a5a69ea14e2cee',1,'glm::slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)']]], ['smoothstep',['smoothstep',['../a00241.html#ga562edf7eca082cc5b7a0aaf180436daf',1,'glm']]], ['sphericalrand',['sphericalRand',['../a00300.html#ga22f90fcaccdf001c516ca90f6428e138',1,'glm']]], ['sqrt',['sqrt',['../a00242.html#gaa83e5f1648b7ccdf33b87c07c76cb77c',1,'glm::sqrt(vec< L, T, Q > const &v)'],['../a00256.html#ga64b7b255ed7bcba616fe6b44470b022e',1,'glm::sqrt(qua< T, Q > const &q)'],['../a00330.html#ga7ce36693a75879ccd9bb10167cfa722d',1,'glm::sqrt(int x)'],['../a00330.html#ga1975d318978d6dacf78b6444fa5ed7bc',1,'glm::sqrt(uint x)']]], ['squad',['squad',['../a00352.html#ga0b9bf3459e132ad8a18fe970669e3e35',1,'glm']]], ['step',['step',['../a00241.html#ga015a1261ff23e12650211aa872863cce',1,'glm::step(genType edge, genType x)'],['../a00241.html#ga8f9a911a48ef244b51654eaefc81c551',1,'glm::step(T edge, vec< L, T, Q > const &x)'],['../a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f',1,'glm::step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_11.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_11.js ================================================ var searchData= [ ['tan',['tan',['../a00373.html#ga293a34cfb9f0115cc606b4a97c84f11f',1,'glm']]], ['tanh',['tanh',['../a00373.html#gaa1bccbfdcbe40ed2ffcddc2aa8bfd0f1',1,'glm']]], ['third',['third',['../a00290.html#ga3077c6311010a214b69ddc8214ec13b5',1,'glm']]], ['three_5fover_5ftwo_5fpi',['three_over_two_pi',['../a00290.html#gae94950df74b0ce382b1fc1d978ef7394',1,'glm']]], ['to_5fstring',['to_string',['../a00360.html#ga8f0dced1fd45e67e2d77e80ab93c7af5',1,'glm']]], ['tomat3',['toMat3',['../a00352.html#gaab0afabb894b28a983fb8ec610409d56',1,'glm']]], ['tomat4',['toMat4',['../a00352.html#gadfa2c77094e8cc9adad321d938855ffb',1,'glm']]], ['toquat',['toQuat',['../a00352.html#ga798de5d186499c9a9231cd92c8afaef1',1,'glm::toQuat(mat< 3, 3, T, Q > const &x)'],['../a00352.html#ga5eb36f51e1638e710451eba194dbc011',1,'glm::toQuat(mat< 4, 4, T, Q > const &x)']]], ['translate',['translate',['../a00247.html#ga1a4ecc4ad82652b8fb14dcb087879284',1,'glm::translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gaf4573ae47c80938aa9053ef6a33755ab',1,'glm::translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#ga309a30e652e58c396e2c3d4db3ee7658',1,'glm::translate(vec< 3, T, Q > const &v)']]], ['transpose',['transpose',['../a00371.html#gae679d841da8ce9dbcc6c2d454f15bc35',1,'glm']]], ['trianglenormal',['triangleNormal',['../a00344.html#gaff1cb5496925dfa7962df457772a7f35',1,'glm']]], ['trunc',['trunc',['../a00241.html#gaf9375e3e06173271d49e6ffa3a334259',1,'glm']]], ['tweakedinfiniteperspective',['tweakedInfinitePerspective',['../a00243.html#gaaeacc04a2a6f4b18c5899d37e7bb3ef9',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near)'],['../a00243.html#gaf5b3c85ff6737030a1d2214474ffa7a8',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)']]], ['two_5fover_5fpi',['two_over_pi',['../a00290.html#ga74eadc8a211253079683219a3ea0462a',1,'glm']]], ['two_5fover_5froot_5fpi',['two_over_root_pi',['../a00290.html#ga5827301817640843cf02026a8d493894',1,'glm']]], ['two_5fpi',['two_pi',['../a00290.html#gaa5276a4617566abcfe49286f40e3a256',1,'glm']]], ['two_5fthirds',['two_thirds',['../a00290.html#ga9b4d2f4322edcf63a6737b92a29dd1f5',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_12.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_12.js ================================================ var searchData= [ ['uaddcarry',['uaddCarry',['../a00370.html#gaedcec48743632dff6786bcc492074b1b',1,'glm']]], ['uintbitstofloat',['uintBitsToFloat',['../a00241.html#gab2bae0d15dcdca6093f88f76b3975d97',1,'glm::uintBitsToFloat(uint const &v)'],['../a00241.html#ga97f46b5f7b42fe44482e13356eb394ae',1,'glm::uintBitsToFloat(vec< L, uint, Q > const &v)']]], ['umulextended',['umulExtended',['../a00370.html#ga732e2fb56db57ea541c7e5c92b7121be',1,'glm']]], ['unpackdouble2x32',['unpackDouble2x32',['../a00372.html#ga5f4296dc5f12f0aa67ac05b8bb322483',1,'glm']]], ['unpackf2x11_5f1x10',['unpackF2x11_1x10',['../a00298.html#ga2b1fd1e854705b1345e98409e0a25e50',1,'glm']]], ['unpackf3x9_5fe1x5',['unpackF3x9_E1x5',['../a00298.html#gab9e60ebe3ad3eeced6a9ec6eb876d74e',1,'glm']]], ['unpackhalf',['unpackHalf',['../a00298.html#ga30d6b2f1806315bcd6047131f547d33b',1,'glm']]], ['unpackhalf1x16',['unpackHalf1x16',['../a00298.html#gac37dedaba24b00adb4ec6e8f92c19dbf',1,'glm']]], ['unpackhalf2x16',['unpackHalf2x16',['../a00372.html#gaf59b52e6b28da9335322c4ae19b5d745',1,'glm']]], ['unpackhalf4x16',['unpackHalf4x16',['../a00298.html#ga57dfc41b2eb20b0ac00efae7d9c49dcd',1,'glm']]], ['unpacki3x10_5f1x2',['unpackI3x10_1x2',['../a00298.html#ga9a05330e5490be0908d3b117d82aff56',1,'glm']]], ['unpackint2x16',['unpackInt2x16',['../a00298.html#gaccde055882918a3175de82f4ca8b7d8e',1,'glm']]], ['unpackint2x32',['unpackInt2x32',['../a00298.html#gab297c0bfd38433524791eb0584d8f08d',1,'glm']]], ['unpackint2x8',['unpackInt2x8',['../a00298.html#gab0c59f1e259fca9e68adb2207a6b665e',1,'glm']]], ['unpackint4x16',['unpackInt4x16',['../a00298.html#ga52c154a9b232b62c22517a700cc0c78c',1,'glm']]], ['unpackint4x8',['unpackInt4x8',['../a00298.html#ga1cd8d2038cdd33a860801aa155a26221',1,'glm']]], ['unpackrgbm',['unpackRGBM',['../a00298.html#ga5c1ec97894b05ea21a05aea4f0204a02',1,'glm']]], ['unpacksnorm',['unpackSnorm',['../a00298.html#ga6d49b31e5c3f9df8e1f99ab62b999482',1,'glm']]], ['unpacksnorm1x16',['unpackSnorm1x16',['../a00298.html#ga96dd15002370627a443c835ab03a766c',1,'glm']]], ['unpacksnorm1x8',['unpackSnorm1x8',['../a00298.html#ga4851ff86678aa1c7ace9d67846894285',1,'glm']]], ['unpacksnorm2x16',['unpackSnorm2x16',['../a00372.html#gacd8f8971a3fe28418be0d0fa1f786b38',1,'glm']]], ['unpacksnorm2x8',['unpackSnorm2x8',['../a00298.html#ga8b128e89be449fc71336968a66bf6e1a',1,'glm']]], ['unpacksnorm3x10_5f1x2',['unpackSnorm3x10_1x2',['../a00298.html#ga7a4fbf79be9740e3c57737bc2af05e5b',1,'glm']]], ['unpacksnorm4x16',['unpackSnorm4x16',['../a00298.html#gaaddf9c353528fe896106f7181219c7f4',1,'glm']]], ['unpacksnorm4x8',['unpackSnorm4x8',['../a00372.html#ga2db488646d48b7c43d3218954523fe82',1,'glm']]], ['unpacku3x10_5f1x2',['unpackU3x10_1x2',['../a00298.html#ga48df3042a7d079767f5891a1bfd8a60a',1,'glm']]], ['unpackuint2x16',['unpackUint2x16',['../a00298.html#ga035bbbeab7ec2b28c0529757395b645b',1,'glm']]], ['unpackuint2x32',['unpackUint2x32',['../a00298.html#gaf942ff11b65e83eb5f77e68329ebc6ab',1,'glm']]], ['unpackuint2x8',['unpackUint2x8',['../a00298.html#gaa7600a6c71784b637a410869d2a5adcd',1,'glm']]], ['unpackuint4x16',['unpackUint4x16',['../a00298.html#gab173834ef14cfc23a96a959f3ff4b8dc',1,'glm']]], ['unpackuint4x8',['unpackUint4x8',['../a00298.html#gaf6dc0e4341810a641c7ed08f10e335d1',1,'glm']]], ['unpackunorm',['unpackUnorm',['../a00298.html#ga3e6ac9178b59f0b1b2f7599f2183eb7f',1,'glm']]], ['unpackunorm1x16',['unpackUnorm1x16',['../a00298.html#ga83d34160a5cb7bcb5339823210fc7501',1,'glm']]], ['unpackunorm1x5_5f1x6_5f1x5',['unpackUnorm1x5_1x6_1x5',['../a00298.html#gab3bc08ecfc0f3339be93fb2b3b56d88a',1,'glm']]], ['unpackunorm1x8',['unpackUnorm1x8',['../a00298.html#ga1319207e30874fb4931a9ee913983ee1',1,'glm']]], ['unpackunorm2x16',['unpackUnorm2x16',['../a00372.html#ga1f66188e5d65afeb9ffba1ad971e4007',1,'glm']]], ['unpackunorm2x3_5f1x2',['unpackUnorm2x3_1x2',['../a00298.html#ga6abd5a9014df3b5ce4059008d2491260',1,'glm']]], ['unpackunorm2x4',['unpackUnorm2x4',['../a00298.html#ga2e50476132fe5f27f08e273d9c70d85b',1,'glm']]], ['unpackunorm2x8',['unpackUnorm2x8',['../a00298.html#ga637cbe3913dd95c6e7b4c99c61bd611f',1,'glm']]], ['unpackunorm3x10_5f1x2',['unpackUnorm3x10_1x2',['../a00298.html#ga5156d3060355fe332865da2c7f78815f',1,'glm']]], ['unpackunorm3x5_5f1x1',['unpackUnorm3x5_1x1',['../a00298.html#ga5ff95ff5bc16f396432ab67243dbae4d',1,'glm']]], ['unpackunorm4x16',['unpackUnorm4x16',['../a00298.html#ga2ae149c5d2473ac1e5f347bb654a242d',1,'glm']]], ['unpackunorm4x4',['unpackUnorm4x4',['../a00298.html#gac58ee89d0e224bb6df5e8bbb18843a2d',1,'glm']]], ['unpackunorm4x8',['unpackUnorm4x8',['../a00372.html#ga7f903259150b67e9466f5f8edffcd197',1,'glm']]], ['unproject',['unProject',['../a00245.html#ga36641e5d60f994e01c3d8f56b10263d2',1,'glm']]], ['unprojectno',['unProjectNO',['../a00245.html#gae089ba9fc150ff69c252a20e508857b5',1,'glm']]], ['unprojectzo',['unProjectZO',['../a00245.html#gade5136413ce530f8e606124d570fba32',1,'glm']]], ['uround',['uround',['../a00292.html#ga6715b9d573972a0f7763d30d45bcaec4',1,'glm']]], ['usubborrow',['usubBorrow',['../a00370.html#gae3316ba1229ad9b9f09480833321b053',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_13.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_13.js ================================================ var searchData= [ ['value_5fptr',['value_ptr',['../a00305.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_14.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_14.js ================================================ var searchData= [ ['wrapangle',['wrapAngle',['../a00325.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_15.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_15.js ================================================ var searchData= [ ['yaw',['yaw',['../a00299.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], ['yawpitchroll',['yawPitchRoll',['../a00319.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], ['ycocg2rgb',['YCoCg2rgb',['../a00313.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], ['ycocgr2rgb',['YCoCgR2rgb',['../a00313.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_16.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_16.js ================================================ var searchData= [ ['zero',['zero',['../a00290.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_2.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_2.js ================================================ var searchData= [ ['catmullrom',['catmullRom',['../a00358.html#ga8119c04f8210fd0d292757565cd6918d',1,'glm']]], ['ceil',['ceil',['../a00241.html#gafb9d2a645a23aca12d4d6de0104b7657',1,'glm']]], ['ceilmultiple',['ceilMultiple',['../a00302.html#ga1d89ac88582aaf4d5dfa5feb4a376fd4',1,'glm::ceilMultiple(genType v, genType Multiple)'],['../a00302.html#gab77fdcc13f8e92d2e0b1b7d7aeab8e9d',1,'glm::ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['ceilpoweroftwo',['ceilPowerOfTwo',['../a00302.html#ga5c3ef36ae32aa4271f1544f92bd578b6',1,'glm::ceilPowerOfTwo(genIUType v)'],['../a00302.html#gab53d4a97c0d3e297be5f693cdfdfe5d2',1,'glm::ceilPowerOfTwo(vec< L, T, Q > const &v)']]], ['circulareasein',['circularEaseIn',['../a00318.html#ga34508d4b204a321ec26d6086aa047997',1,'glm']]], ['circulareaseinout',['circularEaseInOut',['../a00318.html#ga0c1027637a5b02d4bb3612aa12599d69',1,'glm']]], ['circulareaseout',['circularEaseOut',['../a00318.html#ga26fefde9ced9b72745fe21f1a3fe8da7',1,'glm']]], ['circularrand',['circularRand',['../a00300.html#ga9dd05c36025088fae25b97c869e88517',1,'glm']]], ['clamp',['clamp',['../a00241.html#ga7cd77683da6361e297c56443fc70806d',1,'glm::clamp(genType x, genType minVal, genType maxVal)'],['../a00241.html#gafba2e0674deb5953878d89483cd6323d',1,'glm::clamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d',1,'glm::clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)'],['../a00369.html#ga6c0cc6bd1d67ea1008d2592e998bad33',1,'glm::clamp(genType const &Texcoord)']]], ['closebounded',['closeBounded',['../a00314.html#gab7d89c14c48ad01f720fb5daf8813161',1,'glm']]], ['closestpointonline',['closestPointOnLine',['../a00310.html#ga36529c278ef716986151d58d151d697d',1,'glm::closestPointOnLine(vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)'],['../a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0',1,'glm::closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)']]], ['colmajor2',['colMajor2',['../a00338.html#gaaff72f11286e59a4a88ed21a347f284c',1,'glm::colMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gafc25fd44196c92b1397b127aec1281ab',1,'glm::colMajor2(mat< 2, 2, T, Q > const &m)']]], ['colmajor3',['colMajor3',['../a00338.html#ga1e25b72b085087740c92f5c70f3b051f',1,'glm::colMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#ga86bd0656e787bb7f217607572590af27',1,'glm::colMajor3(mat< 3, 3, T, Q > const &m)']]], ['colmajor4',['colMajor4',['../a00338.html#gaf4aa6c7e17bfce41a6c13bf6469fab05',1,'glm::colMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gaf3f9511c366c20ba2e4a64c9e4cec2b3',1,'glm::colMajor4(mat< 4, 4, T, Q > const &m)']]], ['column',['column',['../a00293.html#ga96022eb0d3fae39d89fc7a954e59b374',1,'glm::column(genType const &m, length_t index)'],['../a00293.html#ga9e757377523890e8b80c5843dbe4dd15',1,'glm::column(genType const &m, length_t index, typename genType::col_type const &x)']]], ['compadd',['compAdd',['../a00316.html#gaf71833350e15e74d31cbf8a3e7f27051',1,'glm']]], ['compmax',['compMax',['../a00316.html#gabfa4bb19298c8c73d4217ba759c496b6',1,'glm']]], ['compmin',['compMin',['../a00316.html#gab5d0832b5c7bb01b8d7395973bfb1425',1,'glm']]], ['compmul',['compMul',['../a00316.html#gae8ab88024197202c9479d33bdc5a8a5d',1,'glm']]], ['compnormalize',['compNormalize',['../a00316.html#ga8f2b81ada8515875e58cb1667b6b9908',1,'glm']]], ['compscale',['compScale',['../a00316.html#ga80abc2980d65d675f435d178c36880eb',1,'glm']]], ['conjugate',['conjugate',['../a00248.html#ga10d7bda73201788ac2ab28cd8d0d409b',1,'glm']]], ['convertd65xyztod50xyz',['convertD65XYZToD50XYZ',['../a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48',1,'glm']]], ['convertd65xyztolinearsrgb',['convertD65XYZToLinearSRGB',['../a00311.html#ga5265386fc3ac29e4c580d37ed470859c',1,'glm']]], ['convertlinearsrgbtod50xyz',['convertLinearSRGBToD50XYZ',['../a00311.html#ga1522ba180e3d83d554a734056da031f9',1,'glm']]], ['convertlinearsrgbtod65xyz',['convertLinearSRGBToD65XYZ',['../a00311.html#gaf9e130d9d4ccf51cc99317de7449f369',1,'glm']]], ['convertlineartosrgb',['convertLinearToSRGB',['../a00289.html#ga42239e7b3da900f7ef37cec7e2476579',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear)'],['../a00289.html#gaace0a21167d13d26116c283009af57f6',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)']]], ['convertsrgbtolinear',['convertSRGBToLinear',['../a00289.html#ga16c798b7a226b2c3079dedc55083d187',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB)'],['../a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)']]], ['cos',['cos',['../a00373.html#ga6a41efc740e3b3c937447d3a6284130e',1,'glm']]], ['cosh',['cosh',['../a00373.html#ga4e260e372742c5f517aca196cf1e62b3',1,'glm']]], ['cot',['cot',['../a00301.html#ga3a7b517a95bbd3ad74da3aea87a66314',1,'glm']]], ['coth',['coth',['../a00301.html#ga6b8b770eb7198e4dea59d52e6db81442',1,'glm']]], ['cross',['cross',['../a00254.html#ga755beaa929c75751dee646cccba37e4c',1,'glm::cross(qua< T, Q > const &q1, qua< T, Q > const &q2)'],['../a00279.html#gaeeec0794212fe84fc9d261de067c9587',1,'glm::cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00322.html#gac36e72b934ea6a9dd313772d7e78fa93',1,'glm::cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)'],['../a00352.html#ga2f32f970411c44cdd38bb98960198385',1,'glm::cross(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#ga9f5f77255756e5668dfee7f0d07ed021',1,'glm::cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)']]], ['csc',['csc',['../a00301.html#ga59dd0005b6474eea48af743b4f14ebbb',1,'glm']]], ['csch',['csch',['../a00301.html#ga6d95843ff3ca6472ab399ba171d290a0',1,'glm']]], ['cubic',['cubic',['../a00358.html#ga6b867eb52e2fc933d2e0bf26aabc9a70',1,'glm']]], ['cubiceasein',['cubicEaseIn',['../a00318.html#gaff52f746102b94864d105563ba8895ae',1,'glm']]], ['cubiceaseinout',['cubicEaseInOut',['../a00318.html#ga55134072b42d75452189321d4a2ad91c',1,'glm']]], ['cubiceaseout',['cubicEaseOut',['../a00318.html#ga40d746385d8bcc5973f5bc6a2340ca91',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_3.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_3.js ================================================ var searchData= [ ['decompose',['decompose',['../a00335.html#gac0e342656ba09a9bc97c57182ba73124',1,'glm']]], ['degrees',['degrees',['../a00373.html#ga8faec9e303538065911ba8b3caf7326b',1,'glm']]], ['derivedeuleranglex',['derivedEulerAngleX',['../a00319.html#ga994b8186b3b80d91cf90bc403164692f',1,'glm']]], ['derivedeulerangley',['derivedEulerAngleY',['../a00319.html#ga0a4c56ecce7abcb69508ebe6313e9d10',1,'glm']]], ['derivedeuleranglez',['derivedEulerAngleZ',['../a00319.html#gae8b397348201c42667be983ba3f344df',1,'glm']]], ['determinant',['determinant',['../a00371.html#gad7928795124768e058f99dce270f5c8d',1,'glm']]], ['diagonal2x2',['diagonal2x2',['../a00339.html#ga58a32a2beeb2478dae2a721368cdd4ac',1,'glm']]], ['diagonal2x3',['diagonal2x3',['../a00339.html#gab69f900206a430e2875a5a073851e175',1,'glm']]], ['diagonal2x4',['diagonal2x4',['../a00339.html#ga30b4dbfed60a919d66acc8a63bcdc549',1,'glm']]], ['diagonal3x2',['diagonal3x2',['../a00339.html#ga832c805d5130d28ad76236958d15b47d',1,'glm']]], ['diagonal3x3',['diagonal3x3',['../a00339.html#ga5487ff9cdbc8e04d594adef1bcb16ee0',1,'glm']]], ['diagonal3x4',['diagonal3x4',['../a00339.html#gad7551139cff0c4208d27f0ad3437833e',1,'glm']]], ['diagonal4x2',['diagonal4x2',['../a00339.html#gacb8969e6543ba775c6638161a37ac330',1,'glm']]], ['diagonal4x3',['diagonal4x3',['../a00339.html#gae235def5049d6740f0028433f5e13f90',1,'glm']]], ['diagonal4x4',['diagonal4x4',['../a00339.html#ga0b4cd8dea436791b072356231ee8578f',1,'glm']]], ['diskrand',['diskRand',['../a00300.html#gaa0b18071f3f97dbf8bcf6f53c6fe5f73',1,'glm']]], ['distance',['distance',['../a00279.html#gaa68de6c53e20dfb2dac2d20197562e3f',1,'glm']]], ['distance2',['distance2',['../a00343.html#ga85660f1b79f66c09c7b5a6f80e68c89f',1,'glm']]], ['dot',['dot',['../a00254.html#ga84865a56acb8fbd7bc4f5c0b928e3cfc',1,'glm::dot(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00279.html#gaad6c5d9d39bdc0bf43baf1b22e147a0a',1,'glm::dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['dual_5fquat_5fidentity',['dual_quat_identity',['../a00317.html#ga0b35c0e30df8a875dbaa751e0bd800e0',1,'glm']]], ['dualquat_5fcast',['dualquat_cast',['../a00317.html#gac4064ff813759740201765350eac4236',1,'glm::dualquat_cast(mat< 2, 4, T, Q > const &x)'],['../a00317.html#ga91025ebdca0f4ea54da08497b00e8c84',1,'glm::dualquat_cast(mat< 3, 4, T, Q > const &x)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_4.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_4.js ================================================ var searchData= [ ['e',['e',['../a00290.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139',1,'glm']]], ['elasticeasein',['elasticEaseIn',['../a00318.html#ga230918eccee4e113d10ec5b8cdc58695',1,'glm']]], ['elasticeaseinout',['elasticEaseInOut',['../a00318.html#ga2db4ac8959559b11b4029e54812908d6',1,'glm']]], ['elasticeaseout',['elasticEaseOut',['../a00318.html#gace9c9d1bdf88bf2ab1e7cdefa54c7365',1,'glm']]], ['epsilon',['epsilon',['../a00259.html#ga2a1e57fc5592b69cfae84174cbfc9429',1,'glm']]], ['epsilonequal',['epsilonEqual',['../a00291.html#ga91b417866cafadd076004778217a1844',1,'glm::epsilonEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#gaa7f227999ca09e7ca994e8b35aba47bb',1,'glm::epsilonEqual(genType const &x, genType const &y, genType const &epsilon)']]], ['epsilonnotequal',['epsilonNotEqual',['../a00291.html#gaf840d33b9a5261ec78dcd5125743b025',1,'glm::epsilonNotEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#ga50a92103fb0cbd796908e1bf20c79aaf',1,'glm::epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)']]], ['equal',['equal',['../a00246.html#ga27e90dcb7941c9b70e295dc3f6f6369f',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#gaf5d687d70d11708b68c36c6db5777040',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gafa6a053e81179fa4292b35651c83c3fb',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gab3a93f19e72e9141f50527c9de21d0c0',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#ga5305af376173f1902719fa309bbae671',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gad7827af0549504ff1cd6a359786acc7a',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#gaa001eecb91106463169a8e5ef1577b39',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga2ac7651a2fa7354f2da610dbd50d28e2',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga37d261a65f69babc82cec2ae1af7145f',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga2b46cb50911e97b32f4cd743c2c69771',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga7da2b8605be7f245b39cb6fbf6d9d581',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#gab4c5cfdaa70834421397a85aa83ad946',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['euclidean',['euclidean',['../a00350.html#ga1821d5b3324201e60a9e2823d0b5d0c8',1,'glm']]], ['euler',['euler',['../a00290.html#gad8fe2e6f90bce9d829e9723b649fbd42',1,'glm']]], ['eulerangles',['eulerAngles',['../a00299.html#gaf4dd967dead22dd932fc7460ceecb03f',1,'glm']]], ['euleranglex',['eulerAngleX',['../a00319.html#gafba6282e4ed3ff8b5c75331abfba3489',1,'glm']]], ['euleranglexy',['eulerAngleXY',['../a00319.html#ga64036577ee17a2d24be0dbc05881d4e2',1,'glm']]], ['euleranglexyx',['eulerAngleXYX',['../a00319.html#ga29bd0787a28a6648159c0d6e69706066',1,'glm']]], ['euleranglexyz',['eulerAngleXYZ',['../a00319.html#ga1975e0f0e9bed7f716dc9946da2ab645',1,'glm']]], ['euleranglexz',['eulerAngleXZ',['../a00319.html#gaa39bd323c65c2fc0a1508be33a237ce9',1,'glm']]], ['euleranglexzx',['eulerAngleXZX',['../a00319.html#ga60171c79a17aec85d7891ae1d1533ec9',1,'glm']]], ['euleranglexzy',['eulerAngleXZY',['../a00319.html#ga996dce12a60d8a674ba6737a535fa910',1,'glm']]], ['eulerangley',['eulerAngleY',['../a00319.html#gab84bf4746805fd69b8ecbb230e3974c5',1,'glm']]], ['eulerangleyx',['eulerAngleYX',['../a00319.html#ga4f57e6dd25c3cffbbd4daa6ef3f4486d',1,'glm']]], ['eulerangleyxy',['eulerAngleYXY',['../a00319.html#ga750fba9894117f87bcc529d7349d11de',1,'glm']]], ['eulerangleyxz',['eulerAngleYXZ',['../a00319.html#gab8ba99a9814f6d9edf417b6c6d5b0c10',1,'glm']]], ['eulerangleyz',['eulerAngleYZ',['../a00319.html#ga220379e10ac8cca55e275f0c9018fed9',1,'glm']]], ['eulerangleyzx',['eulerAngleYZX',['../a00319.html#ga08bef16357b8f9b3051b3dcaec4b7848',1,'glm']]], ['eulerangleyzy',['eulerAngleYZY',['../a00319.html#ga5e5e40abc27630749b42b3327c76d6e4',1,'glm']]], ['euleranglez',['eulerAngleZ',['../a00319.html#ga5b3935248bb6c3ec6b0d9297d406e251',1,'glm']]], ['euleranglezx',['eulerAngleZX',['../a00319.html#ga483903115cd4059228961046a28d69b5',1,'glm']]], ['euleranglezxy',['eulerAngleZXY',['../a00319.html#gab4505c54d2dd654df4569fd1f04c43aa',1,'glm']]], ['euleranglezxz',['eulerAngleZXZ',['../a00319.html#ga178f966c52b01e4d65e31ebd007e3247',1,'glm']]], ['euleranglezy',['eulerAngleZY',['../a00319.html#ga400b2bd5984999efab663f3a68e1d020',1,'glm']]], ['euleranglezyx',['eulerAngleZYX',['../a00319.html#ga2e61f1e39069c47530acab9167852dd6',1,'glm']]], ['euleranglezyz',['eulerAngleZYZ',['../a00319.html#gacd795f1dbecaf74974f9c76bbcca6830',1,'glm']]], ['exp',['exp',['../a00242.html#ga071566cadc7505455e611f2a0353f4d4',1,'glm::exp(vec< L, T, Q > const &v)'],['../a00256.html#gaab2d37ef7265819f1d2939b9dc2c52ac',1,'glm::exp(qua< T, Q > const &q)']]], ['exp2',['exp2',['../a00242.html#gaff17ace6b579a03bf223ed4d1ed2cd16',1,'glm']]], ['exponentialeasein',['exponentialEaseIn',['../a00318.html#ga7f24ee9219ab4c84dc8de24be84c1e3c',1,'glm']]], ['exponentialeaseinout',['exponentialEaseInOut',['../a00318.html#ga232fb6dc093c5ce94bee105ff2947501',1,'glm']]], ['exponentialeaseout',['exponentialEaseOut',['../a00318.html#ga517f2bcfd15bc2c25c466ae50808efc3',1,'glm']]], ['extend',['extend',['../a00320.html#ga8140caae613b0f847ab0d7175dc03a37',1,'glm']]], ['extracteuleranglexyx',['extractEulerAngleXYX',['../a00319.html#gaf1077a72171d0f3b08f022ab5ff88af7',1,'glm']]], ['extracteuleranglexyz',['extractEulerAngleXYZ',['../a00319.html#gacea701562f778c1da4d3a0a1cf091000',1,'glm']]], ['extracteuleranglexzx',['extractEulerAngleXZX',['../a00319.html#gacf0bc6c031f25fa3ee0055b62c8260d0',1,'glm']]], ['extracteuleranglexzy',['extractEulerAngleXZY',['../a00319.html#gabe5a65d8eb1cd873c8de121cce1a15ed',1,'glm']]], ['extracteulerangleyxy',['extractEulerAngleYXY',['../a00319.html#gaab8868556361a190db94374e9983ed39',1,'glm']]], ['extracteulerangleyxz',['extractEulerAngleYXZ',['../a00319.html#gaf0937518e63037335a0e8358b6f053c5',1,'glm']]], ['extracteulerangleyzx',['extractEulerAngleYZX',['../a00319.html#ga9049b78466796c0de2971756e25b93d3',1,'glm']]], ['extracteulerangleyzy',['extractEulerAngleYZY',['../a00319.html#ga11dad972c109e4bf8694c915017c44a6',1,'glm']]], ['extracteuleranglezxy',['extractEulerAngleZXY',['../a00319.html#ga81fbbca2ba0c778b9662d5355b4e2363',1,'glm']]], ['extracteuleranglezxz',['extractEulerAngleZXZ',['../a00319.html#ga59359fef9bad92afaca55e193f91e702',1,'glm']]], ['extracteuleranglezyx',['extractEulerAngleZYX',['../a00319.html#ga2d6c11a4abfa60c565483cee2d3f7665',1,'glm']]], ['extracteuleranglezyz',['extractEulerAngleZYZ',['../a00319.html#gafdfa880a64b565223550c2d3938b1aeb',1,'glm']]], ['extractmatrixrotation',['extractMatrixRotation',['../a00337.html#gabbc1c7385a145f04b5c54228965df145',1,'glm']]], ['extractrealcomponent',['extractRealComponent',['../a00352.html#ga321953c1b2e7befe6f5dcfddbfc6b76b',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_5.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_5.js ================================================ var searchData= [ ['faceforward',['faceforward',['../a00279.html#ga7aed0a36c738169402404a3a5d54e43b',1,'glm']]], ['factorial',['factorial',['../a00330.html#ga8cbd3120905f398ec321b5d1836e08fb',1,'glm']]], ['fastacos',['fastAcos',['../a00325.html#ga9721d63356e5d94fdc4b393a426ab26b',1,'glm']]], ['fastasin',['fastAsin',['../a00325.html#ga562cb62c51fbfe7fac7db0bce706b81f',1,'glm']]], ['fastatan',['fastAtan',['../a00325.html#ga8d197c6ef564f5e5d59af3b3f8adcc2c',1,'glm::fastAtan(T y, T x)'],['../a00325.html#gae25de86a968490ff56856fa425ec9d30',1,'glm::fastAtan(T angle)']]], ['fastcos',['fastCos',['../a00325.html#gab34c8b45c23c0165a64dcecfcc3b302a',1,'glm']]], ['fastdistance',['fastDistance',['../a00324.html#gaac333418d0c4e0cc6d3d219ed606c238',1,'glm::fastDistance(genType x, genType y)'],['../a00324.html#ga42d3e771fa7cb3c60d828e315829df19',1,'glm::fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['fastexp',['fastExp',['../a00323.html#gaa3180ac8f96ab37ab96e0cacaf608e10',1,'glm::fastExp(T x)'],['../a00323.html#ga3ba6153aec6bd74628f8b00530aa8d58',1,'glm::fastExp(vec< L, T, Q > const &x)']]], ['fastexp2',['fastExp2',['../a00323.html#ga0af50585955eb14c60bb286297fabab2',1,'glm::fastExp2(T x)'],['../a00323.html#gacaaed8b67d20d244b7de217e7816c1b6',1,'glm::fastExp2(vec< L, T, Q > const &x)']]], ['fastinversesqrt',['fastInverseSqrt',['../a00324.html#ga7f081b14d9c7035c8714eba5f7f75a8f',1,'glm::fastInverseSqrt(genType x)'],['../a00324.html#gadcd7be12b1e5ee182141359d4c45dd24',1,'glm::fastInverseSqrt(vec< L, T, Q > const &x)']]], ['fastlength',['fastLength',['../a00324.html#gafe697d6287719538346bbdf8b1367c59',1,'glm::fastLength(genType x)'],['../a00324.html#ga90f66be92ef61e705c005e7b3209edb8',1,'glm::fastLength(vec< L, T, Q > const &x)']]], ['fastlog',['fastLog',['../a00323.html#gae1bdc97b7f96a600e29c753f1cd4388a',1,'glm::fastLog(T x)'],['../a00323.html#ga937256993a7219e73f186bb348fe6be8',1,'glm::fastLog(vec< L, T, Q > const &x)']]], ['fastlog2',['fastLog2',['../a00323.html#ga6e98118685f6dc9e05fbb13dd5e5234e',1,'glm::fastLog2(T x)'],['../a00323.html#ga7562043539194ccc24649f8475bc5584',1,'glm::fastLog2(vec< L, T, Q > const &x)']]], ['fastmix',['fastMix',['../a00352.html#ga264e10708d58dd0ff53b7902a2bd2561',1,'glm']]], ['fastnormalize',['fastNormalize',['../a00324.html#ga3b02c1d6e0c754144e2f1e110bf9f16c',1,'glm']]], ['fastnormalizedot',['fastNormalizeDot',['../a00345.html#ga2746fb9b5bd22b06b2f7c8babba5de9e',1,'glm']]], ['fastpow',['fastPow',['../a00323.html#ga5340e98a11fcbbd936ba6e983a154d50',1,'glm::fastPow(genType x, genType y)'],['../a00323.html#ga15325a8ed2d1c4ed2412c4b3b3927aa2',1,'glm::fastPow(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00323.html#ga7f2562db9c3e02ae76169c36b086c3f6',1,'glm::fastPow(genTypeT x, genTypeU y)'],['../a00323.html#ga1abe488c0829da5b9de70ac64aeaa7e5',1,'glm::fastPow(vec< L, T, Q > const &x)']]], ['fastsin',['fastSin',['../a00325.html#ga0aab3257bb3b628d10a1e0483e2c6915',1,'glm']]], ['fastsqrt',['fastSqrt',['../a00324.html#ga6c460e9414a50b2fc455c8f64c86cdc9',1,'glm::fastSqrt(genType x)'],['../a00324.html#gae83f0c03614f73eae5478c5b6274ee6d',1,'glm::fastSqrt(vec< L, T, Q > const &x)']]], ['fasttan',['fastTan',['../a00325.html#gaf29b9c1101a10007b4f79ee89df27ba2',1,'glm']]], ['fclamp',['fclamp',['../a00321.html#ga1e28539d3a46965ed9ef92ec7cb3b18a',1,'glm::fclamp(genType x, genType minVal, genType maxVal)'],['../a00321.html#ga60796d08903489ee185373593bc16b9d',1,'glm::fclamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00321.html#ga5c15fa4709763c269c86c0b8b3aa2297',1,'glm::fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)']]], ['findlsb',['findLSB',['../a00370.html#gaf74c4d969fa34ab8acb9d390f5ca5274',1,'glm::findLSB(genIUType x)'],['../a00370.html#ga4454c0331d6369888c28ab677f4810c7',1,'glm::findLSB(vec< L, T, Q > const &v)']]], ['findmsb',['findMSB',['../a00370.html#ga7e4a794d766861c70bc961630f8ef621',1,'glm::findMSB(genIUType x)'],['../a00370.html#ga39ac4d52028bb6ab08db5ad6562c2872',1,'glm::findMSB(vec< L, T, Q > const &v)']]], ['findnsb',['findNSB',['../a00261.html#ga2777901e41ad6e1e9d0ad6cc855d1075',1,'glm::findNSB(genIUType x, int significantBitCount)'],['../a00274.html#gaff61eca266da315002a3db92ff0dd604',1,'glm::findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)']]], ['fliplr',['fliplr',['../a00336.html#gaf39f4e5f78eb29c1a90277d45b9b3feb',1,'glm']]], ['flipud',['flipud',['../a00336.html#ga85003371f0ba97380dd25e8905de1870',1,'glm']]], ['floatbitstoint',['floatBitsToInt',['../a00241.html#ga1425c1c3160ec51214b03a0469a3013d',1,'glm::floatBitsToInt(float const &v)'],['../a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed',1,'glm::floatBitsToInt(vec< L, float, Q > const &v)']]], ['floatbitstouint',['floatBitsToUint',['../a00241.html#ga70e0271c34af52f3100c7960e18c3f2b',1,'glm::floatBitsToUint(float const &v)'],['../a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db',1,'glm::floatBitsToUint(vec< L, float, Q > const &v)']]], ['floor',['floor',['../a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d',1,'glm']]], ['floor_5flog2',['floor_log2',['../a00330.html#ga7011b4e1c1e1ed492149b028feacc00e',1,'glm']]], ['floormultiple',['floorMultiple',['../a00302.html#ga2ffa3cd5f2ea746ee1bf57c46da6315e',1,'glm::floorMultiple(genType v, genType Multiple)'],['../a00302.html#gacdd8901448f51f0b192380e422fae3e4',1,'glm::floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['floorpoweroftwo',['floorPowerOfTwo',['../a00302.html#gafe273a57935d04c9db677bf67f9a71f4',1,'glm::floorPowerOfTwo(genIUType v)'],['../a00302.html#gaf0d591a8fca8ddb9289cdeb44b989c2d',1,'glm::floorPowerOfTwo(vec< L, T, Q > const &v)']]], ['fma',['fma',['../a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2',1,'glm']]], ['fmax',['fmax',['../a00258.html#ga36920478565cf608e93064283ce06421',1,'glm::fmax(T a, T b)'],['../a00258.html#ga0007bba71ca451ac70e99d28dfbeaab9',1,'glm::fmax(T a, T b, T C)'],['../a00258.html#ga27e260b1ff4d04c3ad4b864d26cbaf08',1,'glm::fmax(T a, T b, T C, T D)'],['../a00267.html#gad66b6441f7200db16c9f341711733c56',1,'glm::fmax(vec< L, T, Q > const &a, T b)'],['../a00267.html#ga8df4be3f48d6717c40ea788fd30deebf',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b)'],['../a00267.html#ga0f04ba924294dae4234ca93ede23229a',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4ed3eb250ccbe17bfe8ded8a6b72d230',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gae5792cb2b51190057e4aea027eb56f81',1,'glm::fmax(genType x, genType y)']]], ['fmin',['fmin',['../a00258.html#ga7b2b438a765e2a62098c79eb212f28f0',1,'glm::fmin(T a, T b)'],['../a00258.html#ga1a95fe4cf5437e8133f1093fe9726a64',1,'glm::fmin(T a, T b, T c)'],['../a00258.html#ga3d6f9c6c16bfd6f38f2c4f8076e8b661',1,'glm::fmin(T a, T b, T c, T d)'],['../a00267.html#gae989203363cff9eab5093630df4fe071',1,'glm::fmin(vec< L, T, Q > const &x, T y)'],['../a00267.html#ga7c42e93cd778c9181d1cdeea4d3e43bd',1,'glm::fmin(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00267.html#ga7e62739055b49189d9355471f78fe000',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4a543dd7d22ad1f3b8b839f808a9d93c',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gaa3200559611ac5b9b9ae7283547916a7',1,'glm::fmin(genType x, genType y)']]], ['fmod',['fmod',['../a00314.html#gae5e80425df9833164ad469e83b475fb4',1,'glm']]], ['four_5fover_5fpi',['four_over_pi',['../a00290.html#ga753950e5140e4ea6a88e4a18ba61dc09',1,'glm']]], ['fract',['fract',['../a00241.html#ga8ba89e40e55ae5cdf228548f9b7639c7',1,'glm::fract(genType x)'],['../a00241.html#ga2df623004f634b440d61e018d62c751b',1,'glm::fract(vec< L, T, Q > const &x)']]], ['frexp',['frexp',['../a00241.html#gaddf5ef73283c171730e0bcc11833fa81',1,'glm']]], ['frustum',['frustum',['../a00243.html#ga0bcd4542e0affc63a0b8c08fcb839ea9',1,'glm']]], ['frustumlh',['frustumLH',['../a00243.html#gae4277c37f61d81da01bc9db14ea90296',1,'glm']]], ['frustumlh_5fno',['frustumLH_NO',['../a00243.html#ga259520cad03b3f8bca9417920035ed01',1,'glm']]], ['frustumlh_5fzo',['frustumLH_ZO',['../a00243.html#ga94218b094862d17798370242680b9030',1,'glm']]], ['frustumno',['frustumNO',['../a00243.html#gae34ec664ad44860bf4b5ba631f0e0e90',1,'glm']]], ['frustumrh',['frustumRH',['../a00243.html#ga4366ab45880c6c5f8b3e8c371ca4b136',1,'glm']]], ['frustumrh_5fno',['frustumRH_NO',['../a00243.html#ga9236c8439f21be186b79c97b588836b9',1,'glm']]], ['frustumrh_5fzo',['frustumRH_ZO',['../a00243.html#ga7654a9227f14d5382786b9fc0eb5692d',1,'glm']]], ['frustumzo',['frustumZO',['../a00243.html#gaa73322e152edf50cf30a6edac342a757',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_6.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_6.js ================================================ var searchData= [ ['gauss',['gauss',['../a00326.html#ga0b50b197ff74261a0fad90f4b8d24702',1,'glm::gauss(T x, T ExpectedValue, T StandardDeviation)'],['../a00326.html#gad19ec8754a83c0b9a8dc16b7e60705ab',1,'glm::gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)']]], ['gaussrand',['gaussRand',['../a00300.html#ga5193a83e49e4fdc5652c084711083574',1,'glm']]], ['glm_5faligned_5ftypedef',['GLM_ALIGNED_TYPEDEF',['../a00364.html#gab5cd5c5fad228b25c782084f1cc30114',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1)'],['../a00364.html#ga5bb5dd895ef625c1b113f2cf400186b0',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2)'],['../a00364.html#gac6efa54cf7c6c86f7158922abdb1a430',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4)'],['../a00364.html#ga6612eb77c8607048e7552279a11eeb5f',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8)'],['../a00364.html#ga7ddc1848ff2223026db8968ce0c97497',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1)'],['../a00364.html#ga22240dd9458b0f8c11fbcc4f48714f68',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2)'],['../a00364.html#ga8130ea381d76a2cc34a93ccbb6cf487d',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4)'],['../a00364.html#ga7ccb60f3215d293fd62b33b31ed0e7be',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8)'],['../a00364.html#gac20d508d2ef5cc95ad3daf083c57ec2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1)'],['../a00364.html#ga50257b48069a31d0c8d9c1f644d267de',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2)'],['../a00364.html#gaa07e98e67b7a3435c0746018c7a2a839',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4)'],['../a00364.html#ga62601fc6f8ca298b77285bedf03faffd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8)'],['../a00364.html#gac8cff825951aeb54dd846037113c72db',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1)'],['../a00364.html#ga78f443d88f438575a62b5df497cdf66b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2)'],['../a00364.html#ga0680cd3b5d4e8006985fb41a4f9b57af',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4)'],['../a00364.html#gad9e5babb1dd3e3531b42c37bf25dd951',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8)'],['../a00364.html#ga353fd9fa8a9ad952fcabd0d53ad9a6dd',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1)'],['../a00364.html#ga2196442c0e5c5e8c77842de388c42521',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2)'],['../a00364.html#ga1284488189daf897cf095c5eefad9744',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4)'],['../a00364.html#ga73fdc86a539808af58808b7c60a1c4d8',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8)'],['../a00364.html#gafafeea923e1983262c972e2b83922d3b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1)'],['../a00364.html#ga4b35ca5fe8f55c9d2fe54fdb8d8896f4',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2)'],['../a00364.html#ga63b882e29170d428463d99c3d630acc6',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4)'],['../a00364.html#ga8b20507bb048c1edea2d441cc953e6f0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8)'],['../a00364.html#ga56c5ca60813027b603c7b61425a0479d',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1)'],['../a00364.html#ga7a751b3aff24c0259f4a7357c2969089',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2)'],['../a00364.html#ga70cd2144351c556469ee6119e59971fc',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4)'],['../a00364.html#ga46bbf08dc004d8c433041e0b5018a5d3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8)'],['../a00364.html#gab3e10c77a20d1abad2de1c561c7a5c18',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1)'],['../a00364.html#ga968f30319ebeaca9ebcd3a25a8e139fb',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2)'],['../a00364.html#gaae773c28e6390c6aa76f5b678b7098a3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4)'],['../a00364.html#ga790cfff1ca39d0ed696ffed980809311',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8)'],['../a00364.html#ga8265b91eb23c120a9b0c3e381bc37b96',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1)'],['../a00364.html#gae6d384de17588d8edb894fbe06e0d410',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2)'],['../a00364.html#ga9c8172b745ee03fc5b2b91c350c2922f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4)'],['../a00364.html#ga77e0dff12aa4020ddc3f8cabbea7b2e6',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8)'],['../a00364.html#gabd82b9faa9d4d618dbbe0fc8a1efee63',1,'glm::GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1)'],['../a00364.html#ga285649744560be21000cfd81bbb5d507',1,'glm::GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2)'],['../a00364.html#ga07732da630b2deda428ce95c0ecaf3ff',1,'glm::GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4)'],['../a00364.html#ga1a8da2a8c51f69c07a2e7f473aa420f4',1,'glm::GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8)'],['../a00364.html#ga848aedf13e2d9738acf0bb482c590174',1,'glm::GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1)'],['../a00364.html#gafd2803d39049dd45a37a63931e25d943',1,'glm::GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2)'],['../a00364.html#gae553b33349d6da832cf0724f1e024094',1,'glm::GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4)'],['../a00364.html#ga16d223a2b3409e812e1d3bd87f0e9e5c',1,'glm::GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8)'],['../a00364.html#ga2de065d2ddfdb366bcd0febca79ae2ad',1,'glm::GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1)'],['../a00364.html#gabd786bdc20a11c8cb05c92c8212e28d3',1,'glm::GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2)'],['../a00364.html#gad4aefe56691cdb640c72f0d46d3fb532',1,'glm::GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4)'],['../a00364.html#ga8fe9745f7de24a8394518152ff9fccdc',1,'glm::GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8)'],['../a00364.html#gaaad735483450099f7f882d4e3a3569bd',1,'glm::GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4)'],['../a00364.html#gac7b6f823802edbd6edbaf70ea25bf068',1,'glm::GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8)'],['../a00364.html#ga3e235bcd2b8029613f25b8d40a2d3ef7',1,'glm::GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16)'],['../a00364.html#ga50d8a9523968c77f8325b4c9bfbff41e',1,'glm::GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16)'],['../a00364.html#ga9ec20fdfb729c702032da9378c79679f',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1)'],['../a00364.html#ga25b3fe1d9e8d0a5e86c1949c1acd8131',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2)'],['../a00364.html#ga2958f907719d94d8109b562540c910e2',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4)'],['../a00364.html#ga1fe6fc032a978f1c845fac9aa0668714',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4)'],['../a00364.html#gaa4161e7a496dc96972254143fe873e55',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2)'],['../a00364.html#ga9d7cb211ccda69b1c22ddeeb0f3e7aba',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4)'],['../a00364.html#gaaee91dd2ab34423bcc11072ef6bd0f02',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8)'],['../a00364.html#ga49f047ccaa8b31fad9f26c67bf9b3510',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8)'],['../a00364.html#ga904e9c2436bb099397c0823506a0771f',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4)'],['../a00364.html#gaf90651cf2f5e7ee2b11cfdc5a6749534',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8)'],['../a00364.html#ga7354a4ead8cb17868aec36b9c30d6010',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16)'],['../a00364.html#gad2ecbdea18732163e2636e27b37981ee',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16)'],['../a00364.html#ga965b1c9aa1800e93d4abc2eb2b5afcbf',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8)'],['../a00364.html#ga1f9e9c2ea2768675dff9bae5cde2d829',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16)'],['../a00364.html#gad77c317b7d942322cd5be4c8127b3187',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32)'],['../a00364.html#ga716f8ea809bdb11b5b542d8b71aeb04f',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32)'],['../a00364.html#gad46f8e9082d5878b1bc04f9c1471cdaa',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1)'],['../a00364.html#ga1246094581af624aca6c7499aaabf801',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2)'],['../a00364.html#ga7a5009a1d0196bbf21dd7518f61f0249',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4)'],['../a00364.html#ga45213fd18b3bb1df391671afefe4d1e7',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8)'],['../a00364.html#ga0ba26b4e3fd9ecbc25358efd68d8a4ca',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1)'],['../a00364.html#gaf2b58f5fb6d4ec8ce7b76221d3af43e1',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2)'],['../a00364.html#gadc246401847dcba155f0699425e49dcd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4)'],['../a00364.html#gaace64bddf51a9def01498da9a94fb01c',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8)'],['../a00364.html#gad7bb97c29d664bd86ffb1bed4abc5534',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1)'],['../a00364.html#ga404bba7785130e0b1384d695a9450b28',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2)'],['../a00364.html#ga31ba41fd896257536958ec6080203d2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4)'],['../a00364.html#gacca5f13627f57b3505676e40a6e43e5e',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8)'],['../a00364.html#ga5faf1d3e70bf33174dd7f3d01d5b883b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1)'],['../a00364.html#ga727e2bf2c433bb3b0182605860a48363',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2)'],['../a00364.html#ga12566ca66d5962dadb4a5eb4c74e891e',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4)'],['../a00364.html#ga7b66a97a8acaa35c5a377b947318c6bc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8)'],['../a00364.html#gaa9cde002439b74fa66120a16a9f55fcc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1)'],['../a00364.html#ga1ca98c67f7d1e975f7c5202f1da1df1f',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2)'],['../a00364.html#ga1dc8bc6199d785f235576948d80a597c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4)'],['../a00364.html#gad14a0f2ec93519682b73d70b8e401d81',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8)'],['../a00364.html#gada8b996eb6526dc1ead813bd49539d1b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1)'],['../a00364.html#ga28948f6bfb52b42deb9d73ae1ea8d8b0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2)'],['../a00364.html#gad6a7c0b5630f89d3f1c5b4ef2919bb4c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4)'],['../a00364.html#gaa0fc531cbaa972ac3a0b86d21ef4a7fa',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8)'],['../a00364.html#ga0ee829f7b754b262bbfe6317c0d678ac',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1)'],['../a00364.html#ga447848a817a626cae08cedc9778b331c',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2)'],['../a00364.html#ga6027ae13b2734f542a6e7beee11b8820',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4)'],['../a00364.html#ga2aca46c8608c95ef991ee4c332acde5f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8)'],['../a00364.html#gaff50b10dd1c48be324fdaffd18e2c7ea',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1)'],['../a00364.html#ga9fc4421dbb833d5461e6d4e59dcfde55',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2)'],['../a00364.html#ga329f1e2b94b33ba5e3918197030bcf03',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4)'],['../a00364.html#ga71e646f7e301aa422328194162c9c998',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8)'],['../a00364.html#ga8942e09f479489441a7a5004c6d8cb66',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1)'],['../a00364.html#gaab32497d6e4db16ee439dbedd64c5865',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2)'],['../a00364.html#gaaadbb34952eca8e3d7fe122c3e167742',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4)'],['../a00364.html#ga92024d27c74a3650afb55ec8e024ed25',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8)'],['../a00364.html#gabde1d0b4072df35453db76075ab896a6',1,'glm::GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1)'],['../a00364.html#ga06c296c9e398b294c8c9dd2a7693dcbb',1,'glm::GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2)'],['../a00364.html#gacf1744488c96ebd33c9f36ad33b2010a',1,'glm::GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4)'],['../a00364.html#ga3328061a64c20ba59d5f9da24c2cd059',1,'glm::GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8)'],['../a00364.html#gaf6ced36f13bae57f377bafa6f5fcc299',1,'glm::GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1)'],['../a00364.html#gafbc7fb7847bfc78a339d1d371c915c73',1,'glm::GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2)'],['../a00364.html#gaa86bc56a73fd8120b1121b5f5e6245ae',1,'glm::GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4)'],['../a00364.html#ga68c0b9e669060d0eb5ab8c3ddeb483d8',1,'glm::GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8)'],['../a00364.html#ga4f3bab577daf3343e99cc005134bce86',1,'glm::GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1)'],['../a00364.html#ga13a2391339d0790d43b76d00a7611c4f',1,'glm::GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2)'],['../a00364.html#ga197570e03acbc3d18ab698e342971e8f',1,'glm::GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4)'],['../a00364.html#ga0f033b21e145a1faa32c62ede5878993',1,'glm::GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8)'],['../a00364.html#ga509af83527f5cd512e9a7873590663aa',1,'glm::GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4)'],['../a00364.html#ga94e86186978c502c6dc0c0d9c4a30679',1,'glm::GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8)'],['../a00364.html#ga5cec574686a7f3c8ed24bb195c5e2d0a',1,'glm::GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16)'],['../a00364.html#ga47edfdcee9c89b1ebdaf20450323b1d4',1,'glm::GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16)'],['../a00364.html#ga5611d6718e3a00096918a64192e73a45',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1)'],['../a00364.html#ga19837e6f72b60d994a805ef564c6c326',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2)'],['../a00364.html#ga9740cf8e34f068049b42a2753f9601c2',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4)'],['../a00364.html#ga8b8588bb221448f5541a858903822a57',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4)'],['../a00364.html#ga991abe990c16de26b2129d6bc2f4c051',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2)'],['../a00364.html#gac01bb9fc32a1cd76c2b80d030f71df4c',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4)'],['../a00364.html#ga09540dbca093793a36a8997e0d4bee77',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8)'],['../a00364.html#gaecafb5996f5a44f57e34d29c8670741e',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8)'],['../a00364.html#gac6b161a04d2f8408fe1c9d857e8daac0',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4)'],['../a00364.html#ga1fa0dfc8feb0fa17dab2acd43e05342b',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8)'],['../a00364.html#ga0019500abbfa9c66eff61ca75eaaed94',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16)'],['../a00364.html#ga14fd29d01dae7b08a04e9facbcc18824',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16)'],['../a00364.html#gab253845f534a67136f9619843cade903',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8)'],['../a00364.html#ga929427a7627940cdf3304f9c050b677d',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16)'],['../a00364.html#gae373b6c04fdf9879f33d63e6949c037e',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32)'],['../a00364.html#ga53a8a03dca2015baec4584f45b8e9cdc',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32)'],['../a00364.html#gab3301bae94ef5bf59fbdd9a24e7d2a01',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4)'],['../a00364.html#gada9b0bea273d3ae0286f891533b9568f',1,'glm::GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4)'],['../a00364.html#gadbce23b9f23d77bb3884e289a574ebd5',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4)'],['../a00364.html#ga75930684ff2233171c573e603f216162',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8)'],['../a00364.html#ga6e3a2d83b131336219a0f4c7cbba2a48',1,'glm::GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8)'],['../a00364.html#gaa4deaa0dea930c393d55e7a4352b0a20',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8)'],['../a00364.html#ga81bc497b2bfc6f80bab690c6ee28f0f9',1,'glm::GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4)'],['../a00364.html#gada3e8f783e9d4b90006695a16c39d4d4',1,'glm::GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8)'],['../a00364.html#gab8d081fac3a38d6f55fa552f32168d32',1,'glm::GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16)'],['../a00364.html#ga12fe7b9769c964c5b48dcfd8b7f40198',1,'glm::GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16)'],['../a00364.html#gaefab04611c7f8fe1fd9be3071efea6cc',1,'glm::GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4)'],['../a00364.html#ga2543c05ba19b3bd19d45b1227390c5b4',1,'glm::GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8)'],['../a00364.html#ga009afd727fd657ef33a18754d6d28f60',1,'glm::GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16)'],['../a00364.html#ga2f26177e74bfb301a3d0e02ec3c3ef53',1,'glm::GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16)'],['../a00364.html#ga309f495a1d6b75ddf195b674b65cb1e4',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4)'],['../a00364.html#ga5e185865a2217d0cd47187644683a8c3',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8)'],['../a00364.html#gade4458b27b039b9ca34f8ec049f3115a',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16)'],['../a00364.html#ga2e8a12c5e6a9c4ae4ddaeda1d1cffe3b',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16)'],['../a00364.html#ga3e0f35fa0c626285a8bad41707e7316c',1,'glm::GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8)'],['../a00364.html#ga78bfec2f185d1d365ea0a9ef1e3d45b8',1,'glm::GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16)'],['../a00364.html#ga01fe6fee6db5df580b6724a7e681f069',1,'glm::GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32)'],['../a00364.html#ga687d5b8f551d5af32425c0b2fba15e99',1,'glm::GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32)'],['../a00364.html#ga8e842371d46842ff8f1813419ba49d0f',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8)'],['../a00364.html#ga32814aa0f19316b43134fc25f2aad2b9',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16)'],['../a00364.html#gaf3d3bbc1e93909b689123b085e177a14',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32)'],['../a00364.html#ga804c654cead1139bd250f90f9bb01fad',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32)'],['../a00364.html#gacce4ac532880b8c7469d3c31974420a1',1,'glm::GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16)'],['../a00364.html#ga0498e0e249a6faddaf96aa55d7f81c3b',1,'glm::GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16)'],['../a00364.html#ga7435d87de82a0d652b35dc5b9cc718d5',1,'glm::GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16)'],['../a00364.html#ga719da577361541a4c43a2dd1d0e361e1',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16)'],['../a00364.html#ga6e7ee4f541e1d7db66cd1a224caacafb',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16)'],['../a00364.html#gae5d672d359f2a39f63f98c7975057486',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16)'],['../a00364.html#ga6fa2df037dbfc5fe8c8e0b4db8a34953',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16)'],['../a00364.html#ga0743b4f4f69a3227b82ff58f6abbad62',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16)'],['../a00364.html#ga1a76b325fdf70f961d835edd182c63dd',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16)'],['../a00364.html#ga4b4e181cd041ba28c3163e7b8074aef0',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16)'],['../a00364.html#ga27b13f465abc8a40705698145e222c3f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16)'],['../a00364.html#ga2608d19cc275830a6f8c0b6405625a4f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16)'],['../a00364.html#ga93f09768241358a287c4cca538f1f7e7',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16)'],['../a00364.html#ga7c117e3ecca089e10247b1d41d88aff9',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16)'],['../a00364.html#ga07c75cd04ba42dc37fa3e105f89455c5',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16)'],['../a00364.html#ga65ff0d690a34a4d7f46f9b2eb51525ee',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16)'],['../a00364.html#gadd8ddbe2bf65ccede865ba2f510176dc',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16)'],['../a00364.html#gaf18dbff14bf13d3ff540c517659ec045',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16)'],['../a00364.html#ga66339f6139bf7ff19e245beb33f61cc8',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16)'],['../a00364.html#ga1558a48b3934011b52612809f443e46d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16)'],['../a00364.html#gaa52e5732daa62851627021ad551c7680',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16)'],['../a00364.html#gac09663c42566bcb58d23c6781ac4e85a',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16)'],['../a00364.html#ga3f510999e59e1b309113e1d561162b29',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16)'],['../a00364.html#ga2c9c94f0c89cd71ce56551db6cf4aaec',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16)'],['../a00364.html#ga99ce8274c750fbfdf0e70c95946a2875',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16)'],['../a00364.html#ga9476ef66790239df53dbe66f3989c3b5',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16)'],['../a00364.html#gacc429b3b0b49921e12713b6d31e14e1d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16)'],['../a00364.html#ga88f6c6fa06e6e64479763e69444669cf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32)'],['../a00364.html#gaae8e4639c991e64754145ab8e4c32083',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32)'],['../a00364.html#ga6e9094f3feb3b5b49d0f83683a101fde',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32)'],['../a00364.html#gadbd2c639c03de1c3e9591b5a39f65559',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32)'],['../a00364.html#gab059d7b9fe2094acc563b7223987499f',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32)'],['../a00364.html#gabbc811d1c52ed2b8cfcaff1378f75c69',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32)'],['../a00364.html#ga9ddf5212777734d2fd841a84439f3bdf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32)'],['../a00364.html#gad1dda32ed09f94bfcf0a7d8edfb6cf13',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32)'],['../a00364.html#ga5875e0fa72f07e271e7931811cbbf31a',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32)'],['../a00364.html#ga41e82cd6ac07f912ba2a2d45799dcf0d',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32)'],['../a00364.html#ga0892638d6ba773043b3d63d1d092622e',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32)'],['../a00364.html#ga912a16432608b822f1e13607529934c1',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32)'],['../a00364.html#gafd945a8ea86b042aba410e0560df9a3d',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16)'],['../a00364.html#ga19c2ba545d1f2f36bcb7b60c9a228622',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16)'],['../a00364.html#gaabc28c84a3288b697605d4688686f9a9',1,'glm::GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32)'],['../a00364.html#ga1ed8aeb5ca67fade269a46105f1bf273',1,'glm::GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16)'],['../a00364.html#ga95cc03b8b475993fa50e05e38e203303',1,'glm::GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)']]], ['golden_5fratio',['golden_ratio',['../a00290.html#ga748cf8642830657c5b7eae04d0a80899',1,'glm']]], ['greaterthan',['greaterThan',['../a00299.html#ga8f7fa76e06c417b757ddfd438f3f677b',1,'glm::greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gadfdb8ea82deca869ddc7e63ea5a63ae4',1,'glm::greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['greaterthanequal',['greaterThanEqual',['../a00299.html#ga388cbeba987dae7b5937f742efa49a5a',1,'glm::greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#ga859975f538940f8d18fe62f916b9abd7',1,'glm::greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_7.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_7.js ================================================ var searchData= [ ['half_5fpi',['half_pi',['../a00290.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], ['hermite',['hermite',['../a00358.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], ['highestbitvalue',['highestBitValue',['../a00309.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00309.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], ['hsvcolor',['hsvColor',['../a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_8.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_8.js ================================================ var searchData= [ ['identity',['identity',['../a00247.html#ga81696f2b8d1db02ea1aff8da8f269314',1,'glm']]], ['imulextended',['imulExtended',['../a00370.html#gac0c510a70e852f57594a9141848642e3',1,'glm']]], ['infiniteperspective',['infinitePerspective',['../a00243.html#ga44fa38a18349450325cae2661bb115ca',1,'glm']]], ['infiniteperspectivelh',['infinitePerspectiveLH',['../a00243.html#ga3201b30f5b3ea0f933246d87bfb992a9',1,'glm']]], ['infiniteperspectiverh',['infinitePerspectiveRH',['../a00243.html#ga99672ffe5714ef478dab2437255fe7e1',1,'glm']]], ['intbitstofloat',['intBitsToFloat',['../a00241.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4',1,'glm::intBitsToFloat(int const &v)'],['../a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0',1,'glm::intBitsToFloat(vec< L, int, Q > const &v)']]], ['intermediate',['intermediate',['../a00352.html#gacc5cd5f3e78de61d141c2355417424de',1,'glm']]], ['interpolate',['interpolate',['../a00337.html#ga4e67863d150724b10c1ac00972dc958c',1,'glm']]], ['intersectlinesphere',['intersectLineSphere',['../a00331.html#ga9c68139f3d8a4f3d7fe45f9dbc0de5b7',1,'glm']]], ['intersectlinetriangle',['intersectLineTriangle',['../a00331.html#ga9d29b9b3acb504d43986502f42740df4',1,'glm']]], ['intersectrayplane',['intersectRayPlane',['../a00331.html#gad3697a9700ea379739a667ea02573488',1,'glm']]], ['intersectraysphere',['intersectRaySphere',['../a00331.html#gac88f8cd84c4bcb5b947d56acbbcfa56e',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquared, typename genType::value_type &intersectionDistance)'],['../a00331.html#gad28c00515b823b579c608aafa1100c1d',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)']]], ['intersectraytriangle',['intersectRayTriangle',['../a00331.html#ga65bf2c594482f04881c36bc761f9e946',1,'glm']]], ['inverse',['inverse',['../a00248.html#gab41da854ae678e23e114b598cbca4065',1,'glm::inverse(qua< T, Q > const &q)'],['../a00317.html#ga070f521a953f6461af4ab4cf8ccbf27e',1,'glm::inverse(tdualquat< T, Q > const &q)'],['../a00371.html#gaed509fe8129b01e4f20a6d0de5690091',1,'glm::inverse(mat< C, R, T, Q > const &m)']]], ['inversesqrt',['inversesqrt',['../a00242.html#ga523dd6bd0ad9f75ae2d24c8e4b017b7a',1,'glm']]], ['inversetranspose',['inverseTranspose',['../a00295.html#gab213cd0e3ead5f316d583f99d6312008',1,'glm']]], ['iround',['iround',['../a00292.html#ga57824268ebe13a922f1d69a5d37f637f',1,'glm']]], ['iscompnull',['isCompNull',['../a00368.html#gaf6ec1688eab7442fe96fe4941d5d4e76',1,'glm']]], ['isdenormal',['isdenormal',['../a00314.html#ga74aa7c7462245d83bd5a9edf9c6c2d91',1,'glm']]], ['isfinite',['isfinite',['../a00315.html#gaf4b04dcd3526996d68c1bfe17bfc8657',1,'glm::isfinite(genType const &x)'],['../a00315.html#gac3b12b8ac3014418fe53c299478b6603',1,'glm::isfinite(const vec< 1, T, Q > &x)'],['../a00315.html#ga8e76dc3e406ce6a4155c2b12a2e4b084',1,'glm::isfinite(const vec< 2, T, Q > &x)'],['../a00315.html#ga929ef27f896d902c1771a2e5e150fc97',1,'glm::isfinite(const vec< 3, T, Q > &x)'],['../a00315.html#ga19925badbe10ce61df1d0de00be0b5ad',1,'glm::isfinite(const vec< 4, T, Q > &x)']]], ['isidentity',['isIdentity',['../a00340.html#gaee935d145581c82e82b154ccfd78ad91',1,'glm']]], ['isinf',['isinf',['../a00241.html#ga2885587c23a106301f20443896365b62',1,'glm::isinf(vec< L, T, Q > const &x)'],['../a00248.html#ga45722741ea266b4e861938b365c5f362',1,'glm::isinf(qua< T, Q > const &x)']]], ['ismultiple',['isMultiple',['../a00261.html#gaec593d33956a8fe43f78fccc63ddde9a',1,'glm::isMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga354caf634ef333d9cb4844407416256a',1,'glm::isMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gabb4360e38c0943d8981ba965dead519d',1,'glm::isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['isnan',['isnan',['../a00241.html#ga29ef934c00306490de837b4746b4e14d',1,'glm::isnan(vec< L, T, Q > const &x)'],['../a00248.html#ga1bb55f8963616502e96dc564384d8a03',1,'glm::isnan(qua< T, Q > const &x)']]], ['isnormalized',['isNormalized',['../a00340.html#gae785af56f47ce220a1609f7f84aa077a',1,'glm::isNormalized(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gaa068311695f28f5f555f5f746a6a66fb',1,'glm::isNormalized(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga4d9bb4d0465df49fedfad79adc6ce4ad',1,'glm::isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gac3c974f459fd75453134fad7ae89a39e',1,'glm::isNormalized(vec< L, T, Q > const &v, T const &epsilon)']]], ['isnull',['isNull',['../a00340.html#ga9790ec222ce948c0ff0d8ce927340dba',1,'glm::isNull(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gae14501c6b14ccda6014cc5350080103d',1,'glm::isNull(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga2b98bb30a9fefa7cdea5f1dcddba677b',1,'glm::isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gab4a3637dbcb4bb42dc55caea7a1e0495',1,'glm::isNull(vec< L, T, Q > const &v, T const &epsilon)']]], ['isorthogonal',['isOrthogonal',['../a00340.html#ga58f3289f74dcab653387dd78ad93ca40',1,'glm']]], ['ispoweroftwo',['isPowerOfTwo',['../a00261.html#gadf491730354aa7da67fbe23d4d688763',1,'glm::isPowerOfTwo(genIUType v)'],['../a00274.html#gabf2b61ded7049bcb13e25164f832a290',1,'glm::isPowerOfTwo(vec< L, T, Q > const &v)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_9.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_9.js ================================================ var searchData= [ ['l1norm',['l1Norm',['../a00343.html#gae2fc0b2aa967bebfd6a244700bff6997',1,'glm::l1Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga1a7491e2037ceeb37f83ce41addfc0be',1,'glm::l1Norm(vec< 3, T, Q > const &v)']]], ['l2norm',['l2Norm',['../a00343.html#ga41340b2ef40a9307ab0f137181565168',1,'glm::l2Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#gae288bde8f0e41fb4ed62e65137b18cba',1,'glm::l2Norm(vec< 3, T, Q > const &x)']]], ['ldexp',['ldexp',['../a00241.html#gac3010e0a0c35a1b514540f2fb579c58c',1,'glm']]], ['lefthanded',['leftHanded',['../a00328.html#ga6f1bad193b9a3b048543d1935cf04dd3',1,'glm']]], ['length',['length',['../a00254.html#gab703732449be6c7199369b3f9a91ed38',1,'glm::length(qua< T, Q > const &q)'],['../a00279.html#ga0cdabbb000834d994a1d6dc56f8f5263',1,'glm::length(vec< L, T, Q > const &x)']]], ['length2',['length2',['../a00343.html#ga8d1789651050adb7024917984b41c3de',1,'glm::length2(vec< L, T, Q > const &x)'],['../a00352.html#ga58a609b1b8ab965f5df2702e8ca4e75b',1,'glm::length2(qua< T, Q > const &q)']]], ['lerp',['lerp',['../a00248.html#ga6033dc0741051fa463a0a147ba29f293',1,'glm::lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00315.html#ga5494ba3a95ea6594c86fc75236886864',1,'glm::lerp(T x, T y, T a)'],['../a00315.html#gaa551c0a0e16d2d4608e49f7696df897f',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)'],['../a00315.html#ga44a8b5fd776320f1713413dec959b32a',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)'],['../a00315.html#ga89ac8e000199292ec7875519d27e214b',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)'],['../a00315.html#gaf68de5baf72d16135368b8ef4f841604',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)'],['../a00315.html#ga4ae1a616c8540a2649eab8e0cd051bb3',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)'],['../a00315.html#gab5477ab69c40de4db5d58d3359529724',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)'],['../a00317.html#gace8380112d16d33f520839cb35a4d173',1,'glm::lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)']]], ['lessthan',['lessThan',['../a00299.html#gad091a2d22c8acfebfa92bcfca1dfe9c4',1,'glm::lessThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gae90ed1592c395f93e3f3dfce6b2f39c6',1,'glm::lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['lessthanequal',['lessThanEqual',['../a00299.html#gac00012eea281800d2403f4ea8443134d',1,'glm::lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gab0bdafc019d227257ff73fb5bcca1718',1,'glm::lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], ['levels',['levels',['../a00361.html#gaa8c377f4e63486db4fa872d77880da73',1,'glm']]], ['lineargradient',['linearGradient',['../a00327.html#ga849241df1e55129b8ce9476200307419',1,'glm']]], ['linearinterpolation',['linearInterpolation',['../a00318.html#ga290c3e47cb0a49f2e8abe90b1872b649',1,'glm']]], ['linearrand',['linearRand',['../a00300.html#ga04e241ab88374a477a2c2ceadd2fa03d',1,'glm::linearRand(genType Min, genType Max)'],['../a00300.html#ga94731130c298a9ff5e5025fdee6d97a0',1,'glm::linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)']]], ['lmaxnorm',['lMaxNorm',['../a00343.html#gad58a8231fc32e38104a9e1c4d3c0cb64',1,'glm::lMaxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga6968a324837a8e899396d44de23d5aae',1,'glm::lMaxNorm(vec< 3, T, Q > const &x)']]], ['ln_5fln_5ftwo',['ln_ln_two',['../a00290.html#gaca94292c839ed31a405ab7a81ae7e850',1,'glm']]], ['ln_5ften',['ln_ten',['../a00290.html#gaf97ebc6c059ffd788e6c4946f71ef66c',1,'glm']]], ['ln_5ftwo',['ln_two',['../a00290.html#ga24f4d27765678116f41a2f336ab7975c',1,'glm']]], ['log',['log',['../a00242.html#ga918c9f3fd086ce20e6760c903bd30fa9',1,'glm::log(vec< L, T, Q > const &v)'],['../a00256.html#gaa5f7b20e296671b16ce25a2ab7ad5473',1,'glm::log(qua< T, Q > const &q)'],['../a00333.html#ga60a7b0a401da660869946b2b77c710c9',1,'glm::log(genType const &x, genType const &base)']]], ['log2',['log2',['../a00242.html#ga82831c7d9cca777cebedfe03a19c8d75',1,'glm::log2(vec< L, T, Q > const &v)'],['../a00292.html#ga9bd682e74bfacb005c735305207ec417',1,'glm::log2(genIUType x)']]], ['lookat',['lookAt',['../a00247.html#gaa64aa951a0e99136bba9008d2b59c78e',1,'glm']]], ['lookatlh',['lookAtLH',['../a00247.html#gab2c09e25b0a16d3a9d89cc85bbae41b0',1,'glm']]], ['lookatrh',['lookAtRH',['../a00247.html#gacfa12c8889c754846bc20c65d9b5c701',1,'glm']]], ['lowestbitvalue',['lowestBitValue',['../a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f',1,'glm']]], ['luminosity',['luminosity',['../a00312.html#gad028e0a4f1a9c812b39439b746295b34',1,'glm']]], ['lxnorm',['lxNorm',['../a00343.html#gacad23d30497eb16f67709f2375d1f66a',1,'glm::lxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)'],['../a00343.html#gac61b6d81d796d6eb4d4183396a19ab91',1,'glm::lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_a.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_a.js ================================================ var searchData= [ ['make_5fmat2',['make_mat2',['../a00305.html#ga04409e74dc3da251d2501acf5b4b546c',1,'glm']]], ['make_5fmat2x2',['make_mat2x2',['../a00305.html#gae49e1c7bcd5abec74d1c34155031f663',1,'glm']]], ['make_5fmat2x3',['make_mat2x3',['../a00305.html#ga21982104164789cf8985483aaefc25e8',1,'glm']]], ['make_5fmat2x4',['make_mat2x4',['../a00305.html#ga078b862c90b0e9a79ed43a58997d8388',1,'glm']]], ['make_5fmat3',['make_mat3',['../a00305.html#ga611ee7c4d4cadfc83a8fa8e1d10a170f',1,'glm']]], ['make_5fmat3x2',['make_mat3x2',['../a00305.html#ga27a24e121dc39e6857620e0f85b6e1a8',1,'glm']]], ['make_5fmat3x3',['make_mat3x3',['../a00305.html#gaf2e8337b15c3362aaeb6e5849e1c0536',1,'glm']]], ['make_5fmat3x4',['make_mat3x4',['../a00305.html#ga05dd66232aedb993e3b8e7b35eaf932b',1,'glm']]], ['make_5fmat4',['make_mat4',['../a00305.html#gae7bcedb710d1446c87fd1fc93ed8ee9a',1,'glm']]], ['make_5fmat4x2',['make_mat4x2',['../a00305.html#ga8b34c9b25bf3310d8ff9c828c7e2d97c',1,'glm']]], ['make_5fmat4x3',['make_mat4x3',['../a00305.html#ga0330bf6640092d7985fac92927bbd42b',1,'glm']]], ['make_5fmat4x4',['make_mat4x4',['../a00305.html#ga8f084be30e404844bfbb4a551ac2728c',1,'glm']]], ['make_5fquat',['make_quat',['../a00305.html#ga58110d7d81cf7d029e2bab7f8cd9b246',1,'glm']]], ['make_5fvec1',['make_vec1',['../a00305.html#ga4135f03f3049f0a4eb76545c4967957c',1,'glm::make_vec1(vec< 1, T, Q > const &v)'],['../a00305.html#ga13c92b81e55f201b052a6404d57da220',1,'glm::make_vec1(vec< 2, T, Q > const &v)'],['../a00305.html#ga3c23cc74086d361e22bbd5e91a334e03',1,'glm::make_vec1(vec< 3, T, Q > const &v)'],['../a00305.html#ga6af06bb60d64ca8bcd169e3c93bc2419',1,'glm::make_vec1(vec< 4, T, Q > const &v)']]], ['make_5fvec2',['make_vec2',['../a00305.html#ga8476d0e6f1b9b4a6193cc25f59d8a896',1,'glm::make_vec2(vec< 1, T, Q > const &v)'],['../a00305.html#gae54bd325a08ad26edf63929201adebc7',1,'glm::make_vec2(vec< 2, T, Q > const &v)'],['../a00305.html#ga0084fea4694cf47276e9cccbe7b1015a',1,'glm::make_vec2(vec< 3, T, Q > const &v)'],['../a00305.html#ga2b81f71f3a222fe5bba81e3983751249',1,'glm::make_vec2(vec< 4, T, Q > const &v)'],['../a00305.html#ga81253cf7b0ebfbb1e70540c5774e6824',1,'glm::make_vec2(T const *const ptr)']]], ['make_5fvec3',['make_vec3',['../a00305.html#ga9147e4b3a5d0f4772edfbfd179d7ea0b',1,'glm::make_vec3(vec< 1, T, Q > const &v)'],['../a00305.html#ga482b60a842a5b154d3eed392417a9511',1,'glm::make_vec3(vec< 2, T, Q > const &v)'],['../a00305.html#gacd57046034df557b8b1c457f58613623',1,'glm::make_vec3(vec< 3, T, Q > const &v)'],['../a00305.html#ga8b589ed7d41a298b516d2a69169248f1',1,'glm::make_vec3(vec< 4, T, Q > const &v)'],['../a00305.html#gad9e0d36ff489cb30c65ad1fa40351651',1,'glm::make_vec3(T const *const ptr)']]], ['make_5fvec4',['make_vec4',['../a00305.html#ga600cb97f70c5d50d3a4a145e1cafbf37',1,'glm::make_vec4(vec< 1, T, Q > const &v)'],['../a00305.html#gaa9bd116caf28196fd1cf00b278286fa7',1,'glm::make_vec4(vec< 2, T, Q > const &v)'],['../a00305.html#ga4036328ba4702c74cbdfad1fc03d1b8f',1,'glm::make_vec4(vec< 3, T, Q > const &v)'],['../a00305.html#gaa95cb15732f708f613e65a0578895ae5',1,'glm::make_vec4(vec< 4, T, Q > const &v)'],['../a00305.html#ga63f576518993efc22a969f18f80e29bb',1,'glm::make_vec4(T const *const ptr)']]], ['mask',['mask',['../a00288.html#gad7eba518a0b71662114571ee76939f8a',1,'glm::mask(genIUType Bits)'],['../a00288.html#ga2e64e3b922a296033b825311e7f5fff1',1,'glm::mask(vec< L, T, Q > const &v)']]], ['mat2x4_5fcast',['mat2x4_cast',['../a00317.html#gae99d143b37f9cad4cd9285571aab685a',1,'glm']]], ['mat3_5fcast',['mat3_cast',['../a00299.html#ga333ab70047fbe4132406100c292dbc89',1,'glm']]], ['mat3x4_5fcast',['mat3x4_cast',['../a00317.html#gaf59f5bb69620d2891c3795c6f2639179',1,'glm']]], ['mat4_5fcast',['mat4_cast',['../a00299.html#ga1113212d9bdefc2e31ad40e5bbb506f3',1,'glm']]], ['matrixcompmult',['matrixCompMult',['../a00371.html#gaf14569404c779fedca98d0b9b8e58c1f',1,'glm']]], ['matrixcross3',['matrixCross3',['../a00334.html#ga5802386bb4c37b3332a3b6fd8b6960ff',1,'glm']]], ['matrixcross4',['matrixCross4',['../a00334.html#ga20057fff91ddafa102934adb25458cde',1,'glm']]], ['max',['max',['../a00241.html#gae02d42887fc5570451f880e3c624b9ac',1,'glm::max(genType x, genType y)'],['../a00241.html#ga03e45d6e60d1c36edb00c52edeea0f31',1,'glm::max(vec< L, T, Q > const &x, T y)'],['../a00241.html#gac1fec0c3303b572a6d4697a637213870',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#gaa20839d9ab14514f8966f69877ea0de8',1,'glm::max(T a, T b, T c)'],['../a00258.html#ga2274b5e75ed84b0b1e50d8d22f1f2f67',1,'glm::max(T a, T b, T c, T d)'],['../a00267.html#gaa45d34f6a2906f8bf58ab2ba5429234d',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)'],['../a00267.html#ga94d42b8da2b4ded5ddf7504fbdc6bf10',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)'],['../a00321.html#ga04991ccb9865c4c4e58488cfb209ce69',1,'glm::max(T const &x, T const &y, T const &z)'],['../a00321.html#gae1b7bbe5c91de4924835ea3e14530744',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#gaf832e9d4ab4826b2dda2fda25935a3a4',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga78e04a0cef1c4863fcae1a2130500d87',1,'glm::max(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga7cca8b53cfda402040494cdf40fbdf4a',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#gaacffbc466c2d08c140b181e7fd8a4858',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], ['min',['min',['../a00241.html#ga6cf8098827054a270ee36b18e30d471d',1,'glm::min(genType x, genType y)'],['../a00241.html#gaa7d015eba1f9f48519251f4abe69b14d',1,'glm::min(vec< L, T, Q > const &x, T y)'],['../a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48',1,'glm::min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#ga420b37cbd98c395b93dab0278305cd46',1,'glm::min(T a, T b, T c)'],['../a00258.html#ga0d24a9acb8178df77e4aff90cbb2010d',1,'glm::min(T a, T b, T c, T d)'],['../a00267.html#ga3cd83d80fd4f433d8e333593ec56dddf',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#gab66920ed064ab518d6859c5a889c4be4',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#ga713d3f9b3e76312c0d314e0c8611a6a6',1,'glm::min(T const &x, T const &y, T const &z)'],['../a00321.html#ga74d1a96e7cdbac40f6d35142d3bcbbd4',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#ga42b5c3fc027fd3d9a50d2ccc9126d9f0',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga95466987024d03039607f09e69813d69',1,'glm::min(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga4fe35dd31dd0c45693c9b60b830b8d47',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#ga7471ea4159eed8dd9ea4ac5d46c2fead',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], ['mirrorclamp',['mirrorClamp',['../a00369.html#gaa6856a0a048d2749252848da35e10c8b',1,'glm']]], ['mirrorrepeat',['mirrorRepeat',['../a00369.html#ga16a89b0661b60d5bea85137bbae74d73',1,'glm']]], ['mix',['mix',['../a00241.html#ga8e93f374aae27d1a88b921860351f8d4',1,'glm::mix(genTypeT x, genTypeT y, genTypeU a)'],['../a00248.html#gafbfe587b8da11fb89a30c3d67dd5ccc2',1,'glm::mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)']]], ['mixedproduct',['mixedProduct',['../a00342.html#gab3c6048fbb67f7243b088a4fee48d020',1,'glm']]], ['mod',['mod',['../a00241.html#ga9b197a452cd52db3c5c18bac72bd7798',1,'glm::mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00330.html#gaabfbb41531ab7ad8d06fc176edfba785',1,'glm::mod(int x, int y)'],['../a00330.html#ga63fc8d63e7da1706439233b386ba8b6f',1,'glm::mod(uint x, uint y)']]], ['modf',['modf',['../a00241.html#ga85e33f139b8db1b39b590a5713b9e679',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_b.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_b.js ================================================ var searchData= [ ['nextmultiple',['nextMultiple',['../a00261.html#gab770a3835c44c8a6fd225be4f4e6b317',1,'glm::nextMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#gace38d00601cbf49cd4dc03f003ab42b7',1,'glm::nextMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gacda365edad320c7aff19cc283a3b8ca2',1,'glm::nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['nextpoweroftwo',['nextPowerOfTwo',['../a00261.html#ga3a37c2f2fd347886c9af6a3ca3db04dc',1,'glm::nextPowerOfTwo(genIUType v)'],['../a00274.html#gabba67f8aac9915e10fca727277274502',1,'glm::nextPowerOfTwo(vec< L, T, Q > const &v)']]], ['nlz',['nlz',['../a00330.html#ga78dff8bdb361bf0061194c93e003d189',1,'glm']]], ['normalize',['normalize',['../a00254.html#gabf30e3263fffe8dcc6659aea76ae8927',1,'glm::normalize(qua< T, Q > const &q)'],['../a00279.html#ga3b8d3dcae77870781392ed2902cce597',1,'glm::normalize(vec< L, T, Q > const &x)'],['../a00317.html#ga299b8641509606b1958ffa104a162cfe',1,'glm::normalize(tdualquat< T, Q > const &q)']]], ['normalizedot',['normalizeDot',['../a00345.html#gacb140a2b903115d318c8b0a2fb5a5daa',1,'glm']]], ['not_5f',['not_',['../a00374.html#ga610fcd175791fd246e328ffee10dbf1e',1,'glm']]], ['notequal',['notEqual',['../a00246.html#ga8504f18a7e2bf315393032c2137dad83',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#ga29071147d118569344d10944b7d5c378',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gad7959e14fbc35b4ed2617daf4d67f6cd',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gaa1cd7fc228ef6e26c73583fd0d9c6552',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#gaa5517341754149ffba742d230afd1f32',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gab441cee0de5867a868f3a586ee68cfe1',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#ga5117a44c1bf21af857cd23e44a96d313',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga4a99cc41341567567a608719449c1fac',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga417cf51304359db18e819dda9bce5767',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga8b5c2c3f83422ae5b71fa960d03b0339',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga0b15ffe32987a6029b14398eb0def01a',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#ga17c19dc1b76cd5aef63e9e7ff3aa3c27',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_c.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_c.js ================================================ var searchData= [ ['one',['one',['../a00290.html#ga39c2fb227631ca25894326529bdd1ee5',1,'glm']]], ['one_5fover_5fpi',['one_over_pi',['../a00290.html#ga555150da2b06d23c8738981d5013e0eb',1,'glm']]], ['one_5fover_5froot_5ftwo',['one_over_root_two',['../a00290.html#ga788fa23a0939bac4d1d0205fb4f35818',1,'glm']]], ['one_5fover_5ftwo_5fpi',['one_over_two_pi',['../a00290.html#ga7c922b427986cbb2e4c6ac69874eefbc',1,'glm']]], ['openbounded',['openBounded',['../a00314.html#gafd303042ba2ba695bf53b2315f53f93f',1,'glm']]], ['orientate2',['orientate2',['../a00319.html#gae16738a9f1887cf4e4db6a124637608d',1,'glm']]], ['orientate3',['orientate3',['../a00319.html#ga7ca98668a5786f19c7b38299ebbc9b4c',1,'glm::orientate3(T const &angle)'],['../a00319.html#ga7238c8e15c7720e3ca6a45ab151eeabb',1,'glm::orientate3(vec< 3, T, Q > const &angles)']]], ['orientate4',['orientate4',['../a00319.html#ga4a044653f71a4ecec68e0b623382b48a',1,'glm']]], ['orientation',['orientation',['../a00356.html#ga1a32fceb71962e6160e8af295c91930a',1,'glm']]], ['orientedangle',['orientedAngle',['../a00367.html#ga9556a803dce87fe0f42fdabe4ebba1d5',1,'glm::orientedAngle(vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)'],['../a00367.html#ga706fce3d111f485839756a64f5a48553',1,'glm::orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)']]], ['ortho',['ortho',['../a00243.html#gae5b6b40ed882cd56cd7cb97701909c06',1,'glm::ortho(T left, T right, T bottom, T top)'],['../a00243.html#ga6615d8a9d39432e279c4575313ecb456',1,'glm::ortho(T left, T right, T bottom, T top, T zNear, T zFar)']]], ['ortholh',['orthoLH',['../a00243.html#gad122a79aadaa5529cec4ac197203db7f',1,'glm']]], ['ortholh_5fno',['orthoLH_NO',['../a00243.html#ga526416735ea7c5c5cd255bf99d051bd8',1,'glm']]], ['ortholh_5fzo',['orthoLH_ZO',['../a00243.html#gab37ac3eec8d61f22fceda7775e836afa',1,'glm']]], ['orthono',['orthoNO',['../a00243.html#gab219d28a8f178d4517448fcd6395a073',1,'glm']]], ['orthonormalize',['orthonormalize',['../a00348.html#ga4cab5d698e6e2eccea30c8e81c74371f',1,'glm::orthonormalize(mat< 3, 3, T, Q > const &m)'],['../a00348.html#gac3bc7ef498815026bc3d361ae0b7138e',1,'glm::orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)']]], ['orthorh',['orthoRH',['../a00243.html#ga16264c9b838edeb9dd1de7a1010a13a4',1,'glm']]], ['orthorh_5fno',['orthoRH_NO',['../a00243.html#gaa2f7a1373170bf0a4a2ddef9b0706780',1,'glm']]], ['orthorh_5fzo',['orthoRH_ZO',['../a00243.html#ga9aea2e515b08fd7dce47b7b6ec34d588',1,'glm']]], ['orthozo',['orthoZO',['../a00243.html#gaea11a70817af2c0801c869dea0b7a5bc',1,'glm']]], ['outerproduct',['outerProduct',['../a00371.html#gac29fb7bae75a8e4c1b74cbbf85520e50',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_d.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_d.js ================================================ var searchData= [ ['packdouble2x32',['packDouble2x32',['../a00372.html#gaa916ca426b2bb0343ba17e3753e245c2',1,'glm']]], ['packf2x11_5f1x10',['packF2x11_1x10',['../a00298.html#ga4944ad465ff950e926d49621f916c78d',1,'glm']]], ['packf3x9_5fe1x5',['packF3x9_E1x5',['../a00298.html#ga3f648fc205467792dc6d8c59c748f8a6',1,'glm']]], ['packhalf',['packHalf',['../a00298.html#ga2d8bbce673ebc04831c1fb05c47f5251',1,'glm']]], ['packhalf1x16',['packHalf1x16',['../a00298.html#ga43f2093b6ff192a79058ff7834fc3528',1,'glm']]], ['packhalf2x16',['packHalf2x16',['../a00372.html#ga20f134b07db3a3d3a38efb2617388c92',1,'glm']]], ['packhalf4x16',['packHalf4x16',['../a00298.html#gafe2f7b39caf8f5ec555e1c059ec530e6',1,'glm']]], ['packi3x10_5f1x2',['packI3x10_1x2',['../a00298.html#ga06ecb6afb902dba45419008171db9023',1,'glm']]], ['packint2x16',['packInt2x16',['../a00298.html#ga3644163cf3a47bf1d4af1f4b03013a7e',1,'glm']]], ['packint2x32',['packInt2x32',['../a00298.html#gad1e4c8a9e67d86b61a6eec86703a827a',1,'glm']]], ['packint2x8',['packInt2x8',['../a00298.html#ga8884b1f2292414f36d59ef3be5d62914',1,'glm']]], ['packint4x16',['packInt4x16',['../a00298.html#ga1989f093a27ae69cf9207145be48b3d7',1,'glm']]], ['packint4x8',['packInt4x8',['../a00298.html#gaf2238401d5ce2aaade1a44ba19709072',1,'glm']]], ['packrgbm',['packRGBM',['../a00298.html#ga0466daf4c90f76cc64b3f105ce727295',1,'glm']]], ['packsnorm',['packSnorm',['../a00298.html#gaa54b5855a750d6aeb12c1c902f5939b8',1,'glm']]], ['packsnorm1x16',['packSnorm1x16',['../a00298.html#gab22f8bcfdb5fc65af4701b25f143c1af',1,'glm']]], ['packsnorm1x8',['packSnorm1x8',['../a00298.html#gae3592e0795e62aaa1865b3a10496a7a1',1,'glm']]], ['packsnorm2x16',['packSnorm2x16',['../a00372.html#ga977ab172da5494e5ac63e952afacfbe2',1,'glm']]], ['packsnorm2x8',['packSnorm2x8',['../a00298.html#ga6be3cfb2cce3702f03e91bbeb5286d7e',1,'glm']]], ['packsnorm3x10_5f1x2',['packSnorm3x10_1x2',['../a00298.html#gab997545661877d2c7362a5084d3897d3',1,'glm']]], ['packsnorm4x16',['packSnorm4x16',['../a00298.html#ga358943934d21da947d5bcc88c2ab7832',1,'glm']]], ['packsnorm4x8',['packSnorm4x8',['../a00372.html#ga85e8f17627516445026ab7a9c2e3531a',1,'glm']]], ['packu3x10_5f1x2',['packU3x10_1x2',['../a00298.html#gada3d88d59f0f458f9c51a9fd359a4bc0',1,'glm']]], ['packuint2x16',['packUint2x16',['../a00298.html#ga5eecc9e8cbaf51ac6cf57501e670ee19',1,'glm']]], ['packuint2x32',['packUint2x32',['../a00298.html#gaa864081097b86e83d8e4a4d79c382b22',1,'glm']]], ['packuint2x8',['packUint2x8',['../a00298.html#ga3c3c9fb53ae7823b10fa083909357590',1,'glm']]], ['packuint4x16',['packUint4x16',['../a00298.html#ga2ceb62cca347d8ace42ee90317a3f1f9',1,'glm']]], ['packuint4x8',['packUint4x8',['../a00298.html#gaa0fe2f09aeb403cd66c1a062f58861ab',1,'glm']]], ['packunorm',['packUnorm',['../a00298.html#gaccd3f27e6ba5163eb7aa9bc8ff96251a',1,'glm']]], ['packunorm1x16',['packUnorm1x16',['../a00298.html#ga9f82737bf2a44bedff1d286b76837886',1,'glm']]], ['packunorm1x5_5f1x6_5f1x5',['packUnorm1x5_1x6_1x5',['../a00298.html#ga768e0337dd6246773f14aa0a421fe9a8',1,'glm']]], ['packunorm1x8',['packUnorm1x8',['../a00298.html#ga4b2fa60df3460403817d28b082ee0736',1,'glm']]], ['packunorm2x16',['packUnorm2x16',['../a00372.html#ga0e2d107039fe608a209497af867b85fb',1,'glm']]], ['packunorm2x3_5f1x2',['packUnorm2x3_1x2',['../a00298.html#ga7f9abdb50f9be1aa1c14912504a0d98d',1,'glm']]], ['packunorm2x4',['packUnorm2x4',['../a00298.html#gab6bbd5be3b8e6db538ecb33a7844481c',1,'glm']]], ['packunorm2x8',['packUnorm2x8',['../a00298.html#ga9a666b1c688ab54100061ed06526de6e',1,'glm']]], ['packunorm3x10_5f1x2',['packUnorm3x10_1x2',['../a00298.html#ga8a1ee625d2707c60530fb3fca2980b19',1,'glm']]], ['packunorm3x5_5f1x1',['packUnorm3x5_1x1',['../a00298.html#gaec4112086d7fb133bea104a7c237de52',1,'glm']]], ['packunorm4x16',['packUnorm4x16',['../a00298.html#ga1f63c264e7ab63264e2b2a99fd393897',1,'glm']]], ['packunorm4x4',['packUnorm4x4',['../a00298.html#gad3e7e3ce521513584a53aedc5f9765c1',1,'glm']]], ['packunorm4x8',['packUnorm4x8',['../a00372.html#gaf7d2f7341a9eeb4a436929d6f9ad08f2',1,'glm']]], ['perlin',['perlin',['../a00297.html#ga1e043ce3b51510e9bc4469227cefc38a',1,'glm::perlin(vec< L, T, Q > const &p)'],['../a00297.html#gac270edc54c5fc52f5985a45f940bb103',1,'glm::perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)']]], ['perp',['perp',['../a00349.html#ga264cfc4e180cf9b852e943b35089003c',1,'glm']]], ['perspective',['perspective',['../a00243.html#ga747c8cf99458663dd7ad1bb3a2f07787',1,'glm']]], ['perspectivefov',['perspectiveFov',['../a00243.html#gaebd02240fd36e85ad754f02ddd9a560d',1,'glm']]], ['perspectivefovlh',['perspectiveFovLH',['../a00243.html#ga6aebe16c164bd8e52554cbe0304ef4aa',1,'glm']]], ['perspectivefovlh_5fno',['perspectiveFovLH_NO',['../a00243.html#gad18a4495b77530317327e8d466488c1a',1,'glm']]], ['perspectivefovlh_5fzo',['perspectiveFovLH_ZO',['../a00243.html#gabdd37014f529e25b2fa1b3ba06c10d5c',1,'glm']]], ['perspectivefovno',['perspectiveFovNO',['../a00243.html#gaf30e7bd3b1387a6776433dd5383e6633',1,'glm']]], ['perspectivefovrh',['perspectiveFovRH',['../a00243.html#gaf32bf563f28379c68554a44ee60c6a85',1,'glm']]], ['perspectivefovrh_5fno',['perspectiveFovRH_NO',['../a00243.html#ga257b733ff883c9a065801023cf243eb2',1,'glm']]], ['perspectivefovrh_5fzo',['perspectiveFovRH_ZO',['../a00243.html#ga7dcbb25331676f5b0795aced1a905c44',1,'glm']]], ['perspectivefovzo',['perspectiveFovZO',['../a00243.html#ga4bc69fa1d1f95128430aa3d2a712390b',1,'glm']]], ['perspectivelh',['perspectiveLH',['../a00243.html#ga9bd34951dc7022ac256fcb51d7f6fc2f',1,'glm']]], ['perspectivelh_5fno',['perspectiveLH_NO',['../a00243.html#gaead4d049d1feab463b700b5641aa590e',1,'glm']]], ['perspectivelh_5fzo',['perspectiveLH_ZO',['../a00243.html#gaca32af88c2719005c02817ad1142986c',1,'glm']]], ['perspectiveno',['perspectiveNO',['../a00243.html#gaf497e6bca61e7c87088370b126a93758',1,'glm']]], ['perspectiverh',['perspectiveRH',['../a00243.html#ga26b88757fbd90601b80768a7e1ad3aa1',1,'glm']]], ['perspectiverh_5fno',['perspectiveRH_NO',['../a00243.html#gad1526cb2cbe796095284e8f34b01c582',1,'glm']]], ['perspectiverh_5fzo',['perspectiveRH_ZO',['../a00243.html#ga4da358d6e1b8e5b9ae35d1f3f2dc3b9a',1,'glm']]], ['perspectivezo',['perspectiveZO',['../a00243.html#gaa9dfba5c2322da54f72b1eb7c7c11b47',1,'glm']]], ['pi',['pi',['../a00259.html#ga94bafeb2a0f23ab6450fed1f98ee4e45',1,'glm']]], ['pickmatrix',['pickMatrix',['../a00245.html#gaf6b21eadb7ac2ecbbe258a9a233b4c82',1,'glm']]], ['pitch',['pitch',['../a00299.html#ga7603e81477b46ddb448896909bc04928',1,'glm']]], ['polar',['polar',['../a00350.html#gab83ac2c0e55b684b06b6c46c28b1590d',1,'glm']]], ['pow',['pow',['../a00242.html#ga2254981952d4f333b900a6bf5167a6c4',1,'glm::pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)'],['../a00256.html#ga4975ffcacd312a8c0bbd046a76c5607e',1,'glm::pow(qua< T, Q > const &q, T y)'],['../a00330.html#ga465016030a81d513fa2fac881ebdaa83',1,'glm::pow(int x, uint y)'],['../a00330.html#ga998e5ee915d3769255519e2fbaa2bbf0',1,'glm::pow(uint x, uint y)']]], ['pow2',['pow2',['../a00347.html#ga19aaff3213bf23bdec3ef124ace237e9',1,'glm::gtx']]], ['pow3',['pow3',['../a00347.html#ga35689d03cd434d6ea819f1942d3bf82e',1,'glm::gtx']]], ['pow4',['pow4',['../a00347.html#gacef0968763026e180e53e735007dbf5a',1,'glm::gtx']]], ['poweroftwoabove',['powerOfTwoAbove',['../a00309.html#ga8cda2459871f574a0aecbe702ac93291',1,'glm::powerOfTwoAbove(genIUType Value)'],['../a00309.html#ga2bbded187c5febfefc1e524ba31b3fab',1,'glm::powerOfTwoAbove(vec< L, T, Q > const &value)']]], ['poweroftwobelow',['powerOfTwoBelow',['../a00309.html#ga3de7df63c589325101a2817a56f8e29d',1,'glm::powerOfTwoBelow(genIUType Value)'],['../a00309.html#gaf78ddcc4152c051b2a21e68fecb10980',1,'glm::powerOfTwoBelow(vec< L, T, Q > const &value)']]], ['poweroftwonearest',['powerOfTwoNearest',['../a00309.html#ga5f65973a5d2ea38c719e6a663149ead9',1,'glm::powerOfTwoNearest(genIUType Value)'],['../a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b',1,'glm::powerOfTwoNearest(vec< L, T, Q > const &value)']]], ['prevmultiple',['prevMultiple',['../a00261.html#gada3bdd871ffe31f2d484aa668362f636',1,'glm::prevMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga7b3915a7cd3d50ff4976ab7a75a6880a',1,'glm::prevMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#ga51e04379e8aebbf83e2e5ab094578ee9',1,'glm::prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['prevpoweroftwo',['prevPowerOfTwo',['../a00261.html#gab21902a0e7e5a8451a7ad80333618727',1,'glm::prevPowerOfTwo(genIUType v)'],['../a00274.html#ga759db73f14d79f63612bd2398b577e7a',1,'glm::prevPowerOfTwo(vec< L, T, Q > const &v)']]], ['proj',['proj',['../a00351.html#ga58384b7170801dd513de46f87c7fb00e',1,'glm']]], ['proj2d',['proj2D',['../a00363.html#ga5b992a0cdc8298054edb68e228f0d93e',1,'glm']]], ['proj3d',['proj3D',['../a00363.html#gaa2b7f4f15b98f697caede11bef50509e',1,'glm']]], ['project',['project',['../a00245.html#gaf36e96033f456659e6705472a06b6e11',1,'glm']]], ['projectno',['projectNO',['../a00245.html#ga05249751f48d14cb282e4979802b8111',1,'glm']]], ['projectzo',['projectZO',['../a00245.html#ga77d157525063dec83a557186873ee080',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_e.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_e.js ================================================ var searchData= [ ['qr_5fdecompose',['qr_decompose',['../a00336.html#gac62d7bfc8dc661e616620d70552cd566',1,'glm']]], ['quadraticeasein',['quadraticEaseIn',['../a00318.html#gaf42089d35855695132d217cd902304a0',1,'glm']]], ['quadraticeaseinout',['quadraticEaseInOut',['../a00318.html#ga03e8fc2d7945a4e63ee33b2159c14cea',1,'glm']]], ['quadraticeaseout',['quadraticEaseOut',['../a00318.html#ga283717bc2d937547ad34ec0472234ee3',1,'glm']]], ['quarter_5fpi',['quarter_pi',['../a00290.html#ga3c9df42bd73c519a995c43f0f99e77e0',1,'glm']]], ['quarticeasein',['quarticEaseIn',['../a00318.html#ga808b41f14514f47dad5dcc69eb924afd',1,'glm']]], ['quarticeaseinout',['quarticEaseInOut',['../a00318.html#ga6d000f852de12b197e154f234b20c505',1,'glm']]], ['quarticeaseout',['quarticEaseOut',['../a00318.html#ga4dfb33fa7664aa888eb647999d329b98',1,'glm']]], ['quat_5fcast',['quat_cast',['../a00299.html#ga1108a4ab88ca87bac321454eea7702f8',1,'glm::quat_cast(mat< 3, 3, T, Q > const &x)'],['../a00299.html#ga4524810f07f72e8c7bdc7764fa11cb58',1,'glm::quat_cast(mat< 4, 4, T, Q > const &x)']]], ['quat_5fidentity',['quat_identity',['../a00352.html#ga5ee8332600b2aca3a77622a28d857b55',1,'glm']]], ['quatlookat',['quatLookAt',['../a00299.html#gabe7fc5ec5feb41ab234d5d2b6254697f',1,'glm']]], ['quatlookatlh',['quatLookAtLH',['../a00299.html#ga2da350c73411be3bb19441b226b81a74',1,'glm']]], ['quatlookatrh',['quatLookAtRH',['../a00299.html#gaf6529ac8c04a57fcc35865b5c9437cc8',1,'glm']]], ['quinticeasein',['quinticEaseIn',['../a00318.html#ga097579d8e087dcf48037588140a21640',1,'glm']]], ['quinticeaseinout',['quinticEaseInOut',['../a00318.html#ga2a82d5c46df7e2d21cc0108eb7b83934',1,'glm']]], ['quinticeaseout',['quinticEaseOut',['../a00318.html#ga7dbd4d5c8da3f5353121f615e7b591d7',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_f.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/functions_f.js ================================================ var searchData= [ ['radialgradient',['radialGradient',['../a00327.html#gaaecb1e93de4cbe0758b882812d4da294',1,'glm']]], ['radians',['radians',['../a00373.html#ga6e1db4862c5e25afd553930e2fdd6a68',1,'glm']]], ['reflect',['reflect',['../a00279.html#ga5631dd1d5618de5450b1ea3cf3e94905',1,'glm']]], ['refract',['refract',['../a00279.html#ga01da3dff9e2ef6b9d4915c3047e22b74',1,'glm']]], ['repeat',['repeat',['../a00369.html#ga809650c6310ea7c42666e918c117fb6f',1,'glm']]], ['rgb2ycocg',['rgb2YCoCg',['../a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5',1,'glm']]], ['rgb2ycocgr',['rgb2YCoCgR',['../a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898',1,'glm']]], ['rgbcolor',['rgbColor',['../a00312.html#ga5f9193be46f45f0655c05a0cdca006db',1,'glm']]], ['righthanded',['rightHanded',['../a00328.html#ga99386a5ab5491871b947076e21699cc8',1,'glm']]], ['roll',['roll',['../a00299.html#ga0cc5ad970d0b00829b139fe0fe5a1e13',1,'glm']]], ['root_5ffive',['root_five',['../a00290.html#gae9ebbded75b53d4faeb1e4ef8b3347a2',1,'glm']]], ['root_5fhalf_5fpi',['root_half_pi',['../a00290.html#ga4e276cb823cc5e612d4f89ed99c75039',1,'glm']]], ['root_5fln_5ffour',['root_ln_four',['../a00290.html#ga4129412e96b33707a77c1a07652e23e2',1,'glm']]], ['root_5fpi',['root_pi',['../a00290.html#ga261380796b2cd496f68d2cf1d08b8eb9',1,'glm']]], ['root_5fthree',['root_three',['../a00290.html#ga4f286be4abe88be1eed7d2a9f6cb193e',1,'glm']]], ['root_5ftwo',['root_two',['../a00290.html#ga74e607d29020f100c0d0dc46ce2ca950',1,'glm']]], ['root_5ftwo_5fpi',['root_two_pi',['../a00290.html#ga2bcedc575039fe0cd765742f8bbb0bd3',1,'glm']]], ['rotate',['rotate',['../a00247.html#gaee9e865eaa9776370996da2940873fd4',1,'glm::rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)'],['../a00256.html#gabfc57de6d4d2e11970f54119c5ccf0f5',1,'glm::rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)'],['../a00341.html#gad5c84a4932a758f385a87098ce1b1660',1,'glm::rotate(mat< 3, 3, T, Q > const &m, T angle)'],['../a00352.html#ga07da6ef58646442efe93b0c273d73776',1,'glm::rotate(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#gafcb78dfff45fbf19a7fcb2bd03fbf196',1,'glm::rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)'],['../a00356.html#gab64a67b52ff4f86c3ba16595a5a25af6',1,'glm::rotate(vec< 2, T, Q > const &v, T const &angle)'],['../a00356.html#ga1ba501ef83d1a009a17ac774cc560f21',1,'glm::rotate(vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00356.html#ga1005f1267ed9c57faa3f24cf6873b961',1,'glm::rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00362.html#gaf599be4c0e9d99be1f9cddba79b6018b',1,'glm::rotate(T angle, vec< 3, T, Q > const &v)']]], ['rotatenormalizedaxis',['rotateNormalizedAxis',['../a00355.html#ga50efd7ebca0f7a603bb3cc11e34c708d',1,'glm::rotateNormalizedAxis(mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)'],['../a00355.html#ga08f9c5411437d528019a25bfc01473d1',1,'glm::rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)']]], ['rotatex',['rotateX',['../a00356.html#ga059fdbdba4cca35cdff172a9d0d0afc9',1,'glm::rotateX(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga4333b1ea8ebf1bd52bc3801a7617398a',1,'glm::rotateX(vec< 4, T, Q > const &v, T const &angle)']]], ['rotatey',['rotateY',['../a00356.html#gaebdc8b054ace27d9f62e054531c6f44d',1,'glm::rotateY(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga3ce3db0867b7f8efd878ee34f95a623b',1,'glm::rotateY(vec< 4, T, Q > const &v, T const &angle)']]], ['rotatez',['rotateZ',['../a00356.html#ga5a048838a03f6249acbacb4dbacf79c4',1,'glm::rotateZ(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga923b75c6448161053768822d880702e6',1,'glm::rotateZ(vec< 4, T, Q > const &v, T const &angle)']]], ['rotation',['rotation',['../a00352.html#ga03e61282831cc3f52cc76f72f52ad2c5',1,'glm']]], ['round',['round',['../a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e',1,'glm']]], ['roundeven',['roundEven',['../a00241.html#ga76b81785045a057989a84d99aeeb1578',1,'glm']]], ['roundmultiple',['roundMultiple',['../a00302.html#gab892defcc9c0b0618df7251253dc0fbb',1,'glm::roundMultiple(genType v, genType Multiple)'],['../a00302.html#ga2f1a68332d761804c054460a612e3a4b',1,'glm::roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], ['roundpoweroftwo',['roundPowerOfTwo',['../a00302.html#gae4e1bf5d1cd179f59261a7342bdcafca',1,'glm::roundPowerOfTwo(genIUType v)'],['../a00302.html#ga258802a7d55c03c918f28cf4d241c4d0',1,'glm::roundPowerOfTwo(vec< L, T, Q > const &v)']]], ['row',['row',['../a00293.html#ga259e5ebd0f31ec3f83440f8cae7f5dba',1,'glm::row(genType const &m, length_t index)'],['../a00293.html#gaadcc64829aadf4103477679e48c7594f',1,'glm::row(genType const &m, length_t index, typename genType::row_type const &x)']]], ['rowmajor2',['rowMajor2',['../a00338.html#gaf5b1aee9e3eb1acf9d6c3c8be1e73bb8',1,'glm::rowMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gaf66c75ed69ca9e87462550708c2c6726',1,'glm::rowMajor2(mat< 2, 2, T, Q > const &m)']]], ['rowmajor3',['rowMajor3',['../a00338.html#ga2ae46497493339f745754e40f438442e',1,'glm::rowMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#gad8a3a50ab47bbe8d36cdb81d90dfcf77',1,'glm::rowMajor3(mat< 3, 3, T, Q > const &m)']]], ['rowmajor4',['rowMajor4',['../a00338.html#ga9636cd6bbe2c32a8d0c03ffb8b1ef284',1,'glm::rowMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gac92ad1c2acdf18d3eb7be45a32f9566b',1,'glm::rowMajor4(mat< 4, 4, T, Q > const &m)']]], ['rq_5fdecompose',['rq_decompose',['../a00336.html#ga82874e2ebe891ba35ac21d9993873758',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_0.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_0.js ================================================ var searchData= [ ['angle_20and_20trigonometry_20functions',['Angle and Trigonometry Functions',['../a00373.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_1.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_1.js ================================================ var searchData= [ ['core_20features',['Core features',['../a00280.html',1,'']]], ['common_20functions',['Common functions',['../a00241.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_2.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_2.js ================================================ var searchData= [ ['exponential_20functions',['Exponential functions',['../a00242.html',1,'']]], ['experimental_20extensions',['Experimental extensions',['../a00287.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_3.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_3.js ================================================ var searchData= [ ['floating_2dpoint_20pack_20and_20unpack_20functions',['Floating-Point Pack and Unpack Functions',['../a00372.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_4.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_4.js ================================================ var searchData= [ ['geometric_20functions',['Geometric functions',['../a00279.html',1,'']]], ['glm_5fext_5fmatrix_5fclip_5fspace',['GLM_EXT_matrix_clip_space',['../a00243.html',1,'']]], ['glm_5fext_5fmatrix_5fcommon',['GLM_EXT_matrix_common',['../a00244.html',1,'']]], ['glm_5fext_5fmatrix_5fprojection',['GLM_EXT_matrix_projection',['../a00245.html',1,'']]], ['glm_5fext_5fmatrix_5frelational',['GLM_EXT_matrix_relational',['../a00246.html',1,'']]], ['glm_5fext_5fmatrix_5ftransform',['GLM_EXT_matrix_transform',['../a00247.html',1,'']]], ['glm_5fext_5fquaternion_5fcommon',['GLM_EXT_quaternion_common',['../a00248.html',1,'']]], ['glm_5fext_5fquaternion_5fdouble',['GLM_EXT_quaternion_double',['../a00249.html',1,'']]], ['glm_5fext_5fquaternion_5fdouble_5fprecision',['GLM_EXT_quaternion_double_precision',['../a00250.html',1,'']]], ['glm_5fext_5fquaternion_5fexponential',['GLM_EXT_quaternion_exponential',['../a00251.html',1,'']]], ['glm_5fext_5fquaternion_5ffloat',['GLM_EXT_quaternion_float',['../a00252.html',1,'']]], ['glm_5fext_5fquaternion_5ffloat_5fprecision',['GLM_EXT_quaternion_float_precision',['../a00253.html',1,'']]], ['glm_5fext_5fquaternion_5fgeometric',['GLM_EXT_quaternion_geometric',['../a00254.html',1,'']]], ['glm_5fext_5fquaternion_5frelational',['GLM_EXT_quaternion_relational',['../a00255.html',1,'']]], ['glm_5fext_5fquaternion_5ftransform',['GLM_EXT_quaternion_transform',['../a00256.html',1,'']]], ['glm_5fext_5fquaternion_5ftrigonometric',['GLM_EXT_quaternion_trigonometric',['../a00257.html',1,'']]], ['glm_5fext_5fscalar_5fcommon',['GLM_EXT_scalar_common',['../a00258.html',1,'']]], ['glm_5fext_5fscalar_5fconstants',['GLM_EXT_scalar_constants',['../a00259.html',1,'']]], ['glm_5fext_5fscalar_5fint_5fsized',['GLM_EXT_scalar_int_sized',['../a00260.html',1,'']]], ['glm_5fext_5fscalar_5finteger',['GLM_EXT_scalar_integer',['../a00261.html',1,'']]], ['glm_5fext_5fscalar_5frelational',['GLM_EXT_scalar_relational',['../a00262.html',1,'']]], ['glm_5fext_5fscalar_5fuint_5fsized',['GLM_EXT_scalar_uint_sized',['../a00263.html',1,'']]], ['glm_5fext_5fscalar_5fulp',['GLM_EXT_scalar_ulp',['../a00264.html',1,'']]], ['glm_5fext_5fvector_5fbool1',['GLM_EXT_vector_bool1',['../a00265.html',1,'']]], ['glm_5fext_5fvector_5fbool1_5fprecision',['GLM_EXT_vector_bool1_precision',['../a00266.html',1,'']]], ['glm_5fext_5fvector_5fcommon',['GLM_EXT_vector_common',['../a00267.html',1,'']]], ['glm_5fext_5fvector_5fdouble1',['GLM_EXT_vector_double1',['../a00268.html',1,'']]], ['glm_5fext_5fvector_5fdouble1_5fprecision',['GLM_EXT_vector_double1_precision',['../a00269.html',1,'']]], ['glm_5fext_5fvector_5ffloat1',['GLM_EXT_vector_float1',['../a00270.html',1,'']]], ['glm_5fext_5fvector_5ffloat1_5fprecision',['GLM_EXT_vector_float1_precision',['../a00271.html',1,'']]], ['glm_5fext_5fvector_5fint1',['GLM_EXT_vector_int1',['../a00272.html',1,'']]], ['glm_5fext_5fvector_5fint1_5fprecision',['GLM_EXT_vector_int1_precision',['../a00273.html',1,'']]], ['glm_5fext_5fvector_5finteger',['GLM_EXT_vector_integer',['../a00274.html',1,'']]], ['glm_5fext_5fvector_5frelational',['GLM_EXT_vector_relational',['../a00275.html',1,'']]], ['glm_5fext_5fvector_5fuint1',['GLM_EXT_vector_uint1',['../a00276.html',1,'']]], ['glm_5fext_5fvector_5fuint1_5fprecision',['GLM_EXT_vector_uint1_precision',['../a00277.html',1,'']]], ['glm_5fext_5fvector_5fulp',['GLM_EXT_vector_ulp',['../a00278.html',1,'']]], ['glm_5fgtc_5fbitfield',['GLM_GTC_bitfield',['../a00288.html',1,'']]], ['glm_5fgtc_5fcolor_5fspace',['GLM_GTC_color_space',['../a00289.html',1,'']]], ['glm_5fgtc_5fconstants',['GLM_GTC_constants',['../a00290.html',1,'']]], ['glm_5fgtc_5fepsilon',['GLM_GTC_epsilon',['../a00291.html',1,'']]], ['glm_5fgtc_5finteger',['GLM_GTC_integer',['../a00292.html',1,'']]], ['glm_5fgtc_5fmatrix_5faccess',['GLM_GTC_matrix_access',['../a00293.html',1,'']]], ['glm_5fgtc_5fmatrix_5finteger',['GLM_GTC_matrix_integer',['../a00294.html',1,'']]], ['glm_5fgtc_5fmatrix_5finverse',['GLM_GTC_matrix_inverse',['../a00295.html',1,'']]], ['glm_5fgtc_5fmatrix_5ftransform',['GLM_GTC_matrix_transform',['../a00296.html',1,'']]], ['glm_5fgtc_5fnoise',['GLM_GTC_noise',['../a00297.html',1,'']]], ['glm_5fgtc_5fpacking',['GLM_GTC_packing',['../a00298.html',1,'']]], ['glm_5fgtc_5fquaternion',['GLM_GTC_quaternion',['../a00299.html',1,'']]], ['glm_5fgtc_5frandom',['GLM_GTC_random',['../a00300.html',1,'']]], ['glm_5fgtc_5freciprocal',['GLM_GTC_reciprocal',['../a00301.html',1,'']]], ['glm_5fgtc_5fround',['GLM_GTC_round',['../a00302.html',1,'']]], ['glm_5fgtc_5ftype_5faligned',['GLM_GTC_type_aligned',['../a00303.html',1,'']]], ['glm_5fgtc_5ftype_5fprecision',['GLM_GTC_type_precision',['../a00304.html',1,'']]], ['glm_5fgtc_5ftype_5fptr',['GLM_GTC_type_ptr',['../a00305.html',1,'']]], ['glm_5fgtc_5fulp',['GLM_GTC_ulp',['../a00306.html',1,'']]], ['glm_5fgtc_5fvec1',['GLM_GTC_vec1',['../a00307.html',1,'']]], ['glm_5fgtx_5fassociated_5fmin_5fmax',['GLM_GTX_associated_min_max',['../a00308.html',1,'']]], ['glm_5fgtx_5fbit',['GLM_GTX_bit',['../a00309.html',1,'']]], ['glm_5fgtx_5fclosest_5fpoint',['GLM_GTX_closest_point',['../a00310.html',1,'']]], ['glm_5fgtx_5fcolor_5fencoding',['GLM_GTX_color_encoding',['../a00311.html',1,'']]], ['glm_5fgtx_5fcolor_5fspace',['GLM_GTX_color_space',['../a00312.html',1,'']]], ['glm_5fgtx_5fcolor_5fspace_5fycocg',['GLM_GTX_color_space_YCoCg',['../a00313.html',1,'']]], ['glm_5fgtx_5fcommon',['GLM_GTX_common',['../a00314.html',1,'']]], ['glm_5fgtx_5fcompatibility',['GLM_GTX_compatibility',['../a00315.html',1,'']]], ['glm_5fgtx_5fcomponent_5fwise',['GLM_GTX_component_wise',['../a00316.html',1,'']]], ['glm_5fgtx_5fdual_5fquaternion',['GLM_GTX_dual_quaternion',['../a00317.html',1,'']]], ['glm_5fgtx_5feasing',['GLM_GTX_easing',['../a00318.html',1,'']]], ['glm_5fgtx_5feuler_5fangles',['GLM_GTX_euler_angles',['../a00319.html',1,'']]], ['glm_5fgtx_5fextend',['GLM_GTX_extend',['../a00320.html',1,'']]], ['glm_5fgtx_5fextented_5fmin_5fmax',['GLM_GTX_extented_min_max',['../a00321.html',1,'']]], ['glm_5fgtx_5fexterior_5fproduct',['GLM_GTX_exterior_product',['../a00322.html',1,'']]], ['glm_5fgtx_5ffast_5fexponential',['GLM_GTX_fast_exponential',['../a00323.html',1,'']]], ['glm_5fgtx_5ffast_5fsquare_5froot',['GLM_GTX_fast_square_root',['../a00324.html',1,'']]], ['glm_5fgtx_5ffast_5ftrigonometry',['GLM_GTX_fast_trigonometry',['../a00325.html',1,'']]], ['glm_5fgtx_5ffunctions',['GLM_GTX_functions',['../a00326.html',1,'']]], ['glm_5fgtx_5fgradient_5fpaint',['GLM_GTX_gradient_paint',['../a00327.html',1,'']]], ['glm_5fgtx_5fhanded_5fcoordinate_5fspace',['GLM_GTX_handed_coordinate_space',['../a00328.html',1,'']]], ['glm_5fgtx_5fhash',['GLM_GTX_hash',['../a00329.html',1,'']]], ['glm_5fgtx_5finteger',['GLM_GTX_integer',['../a00330.html',1,'']]], ['glm_5fgtx_5fintersect',['GLM_GTX_intersect',['../a00331.html',1,'']]], ['glm_5fgtx_5fio',['GLM_GTX_io',['../a00332.html',1,'']]], ['glm_5fgtx_5flog_5fbase',['GLM_GTX_log_base',['../a00333.html',1,'']]], ['glm_5fgtx_5fmatrix_5fcross_5fproduct',['GLM_GTX_matrix_cross_product',['../a00334.html',1,'']]], ['glm_5fgtx_5fmatrix_5fdecompose',['GLM_GTX_matrix_decompose',['../a00335.html',1,'']]], ['glm_5fgtx_5fmatrix_5ffactorisation',['GLM_GTX_matrix_factorisation',['../a00336.html',1,'']]], ['glm_5fgtx_5fmatrix_5finterpolation',['GLM_GTX_matrix_interpolation',['../a00337.html',1,'']]], ['glm_5fgtx_5fmatrix_5fmajor_5fstorage',['GLM_GTX_matrix_major_storage',['../a00338.html',1,'']]], ['glm_5fgtx_5fmatrix_5foperation',['GLM_GTX_matrix_operation',['../a00339.html',1,'']]], ['glm_5fgtx_5fmatrix_5fquery',['GLM_GTX_matrix_query',['../a00340.html',1,'']]], ['glm_5fgtx_5fmatrix_5ftransform_5f2d',['GLM_GTX_matrix_transform_2d',['../a00341.html',1,'']]], ['glm_5fgtx_5fmixed_5fproducte',['GLM_GTX_mixed_producte',['../a00342.html',1,'']]], ['glm_5fgtx_5fnorm',['GLM_GTX_norm',['../a00343.html',1,'']]], ['glm_5fgtx_5fnormal',['GLM_GTX_normal',['../a00344.html',1,'']]], ['glm_5fgtx_5fnormalize_5fdot',['GLM_GTX_normalize_dot',['../a00345.html',1,'']]], ['glm_5fgtx_5fnumber_5fprecision',['GLM_GTX_number_precision',['../a00346.html',1,'']]], ['glm_5fgtx_5foptimum_5fpow',['GLM_GTX_optimum_pow',['../a00347.html',1,'']]], ['glm_5fgtx_5forthonormalize',['GLM_GTX_orthonormalize',['../a00348.html',1,'']]], ['glm_5fgtx_5fperpendicular',['GLM_GTX_perpendicular',['../a00349.html',1,'']]], ['glm_5fgtx_5fpolar_5fcoordinates',['GLM_GTX_polar_coordinates',['../a00350.html',1,'']]], ['glm_5fgtx_5fprojection',['GLM_GTX_projection',['../a00351.html',1,'']]], ['glm_5fgtx_5fquaternion',['GLM_GTX_quaternion',['../a00352.html',1,'']]], ['glm_5fgtx_5frange',['GLM_GTX_range',['../a00353.html',1,'']]], ['glm_5fgtx_5fraw_5fdata',['GLM_GTX_raw_data',['../a00354.html',1,'']]], ['glm_5fgtx_5frotate_5fnormalized_5faxis',['GLM_GTX_rotate_normalized_axis',['../a00355.html',1,'']]], ['glm_5fgtx_5frotate_5fvector',['GLM_GTX_rotate_vector',['../a00356.html',1,'']]], ['glm_5fgtx_5fscalar_5frelational',['GLM_GTX_scalar_relational',['../a00357.html',1,'']]], ['glm_5fgtx_5fspline',['GLM_GTX_spline',['../a00358.html',1,'']]], ['glm_5fgtx_5fstd_5fbased_5ftype',['GLM_GTX_std_based_type',['../a00359.html',1,'']]], ['glm_5fgtx_5fstring_5fcast',['GLM_GTX_string_cast',['../a00360.html',1,'']]], ['glm_5fgtx_5ftexture',['GLM_GTX_texture',['../a00361.html',1,'']]], ['glm_5fgtx_5ftransform',['GLM_GTX_transform',['../a00362.html',1,'']]], ['glm_5fgtx_5ftransform2',['GLM_GTX_transform2',['../a00363.html',1,'']]], ['glm_5fgtx_5ftype_5faligned',['GLM_GTX_type_aligned',['../a00364.html',1,'']]], ['glm_5fgtx_5ftype_5ftrait',['GLM_GTX_type_trait',['../a00365.html',1,'']]], ['glm_5fgtx_5fvec_5fswizzle',['GLM_GTX_vec_swizzle',['../a00366.html',1,'']]], ['glm_5fgtx_5fvector_5fangle',['GLM_GTX_vector_angle',['../a00367.html',1,'']]], ['glm_5fgtx_5fvector_5fquery',['GLM_GTX_vector_query',['../a00368.html',1,'']]], ['glm_5fgtx_5fwrap',['GLM_GTX_wrap',['../a00369.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_5.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_5.js ================================================ var searchData= [ ['integer_20functions',['Integer functions',['../a00370.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_6.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_6.js ================================================ var searchData= [ ['matrix_20functions',['Matrix functions',['../a00371.html',1,'']]], ['matrix_20types',['Matrix types',['../a00283.html',1,'']]], ['matrix_20types_20with_20precision_20qualifiers',['Matrix types with precision qualifiers',['../a00284.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_7.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_7.js ================================================ var searchData= [ ['recommended_20extensions',['Recommended extensions',['../a00286.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_8.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_8.js ================================================ var searchData= [ ['stable_20extensions',['Stable extensions',['../a00285.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_9.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/groups_9.js ================================================ var searchData= [ ['vector_20relational_20functions',['Vector Relational Functions',['../a00374.html',1,'']]], ['vector_20types',['Vector types',['../a00281.html',1,'']]], ['vector_20types_20with_20precision_20qualifiers',['Vector types with precision qualifiers',['../a00282.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/nomatches.html ================================================
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/pages_0.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/pages_0.js ================================================ var searchData= [ ['opengl_20mathematics_20_28glm_29',['OpenGL Mathematics (GLM)',['../index.html',1,'']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/search.css ================================================ /*---------------- Search Box */ #FSearchBox { float: left; } #MSearchBox { white-space : nowrap; position: absolute; float: none; display: inline; margin-top: 8px; right: 0px; width: 170px; z-index: 102; background-color: white; } #MSearchBox .left { display:block; position:absolute; left:10px; width:20px; height:19px; background:url('search_l.png') no-repeat; background-position:right; } #MSearchSelect { display:block; position:absolute; width:20px; height:19px; } .left #MSearchSelect { left:4px; } .right #MSearchSelect { right:5px; } #MSearchField { display:block; position:absolute; height:19px; background:url('search_m.png') repeat-x; border:none; width:111px; margin-left:20px; padding-left:4px; color: #909090; outline: none; font: 9pt Arial, Verdana, sans-serif; } #FSearchBox #MSearchField { margin-left:15px; } #MSearchBox .right { display:block; position:absolute; right:10px; top:0px; width:20px; height:19px; background:url('search_r.png') no-repeat; background-position:left; } #MSearchClose { display: none; position: absolute; top: 4px; background : none; border: none; margin: 0px 4px 0px 0px; padding: 0px 0px; outline: none; } .left #MSearchClose { left: 6px; } .right #MSearchClose { right: 2px; } .MSearchBoxActive #MSearchField { color: #000000; } /*---------------- Search filter selection */ #MSearchSelectWindow { display: none; position: absolute; left: 0; top: 0; border: 1px solid #90A5CE; background-color: #F9FAFC; z-index: 1; padding-top: 4px; padding-bottom: 4px; -moz-border-radius: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } .SelectItem { font: 8pt Arial, Verdana, sans-serif; padding-left: 2px; padding-right: 12px; border: 0px; } span.SelectionMark { margin-right: 4px; font-family: monospace; outline-style: none; text-decoration: none; } a.SelectItem { display: block; outline-style: none; color: #000000; text-decoration: none; padding-left: 6px; padding-right: 12px; } a.SelectItem:focus, a.SelectItem:active { color: #000000; outline-style: none; text-decoration: none; } a.SelectItem:hover { color: #FFFFFF; background-color: #3D578C; outline-style: none; text-decoration: none; cursor: pointer; display: block; } /*---------------- Search results window */ iframe#MSearchResults { width: 60ex; height: 15em; } #MSearchResultsWindow { display: none; position: absolute; left: 0; top: 0; border: 1px solid #000; background-color: #EEF1F7; } /* ----------------------------------- */ #SRIndex { clear:both; padding-bottom: 15px; } .SREntry { font-size: 10pt; padding-left: 1ex; } .SRPage .SREntry { font-size: 8pt; padding: 1px 5px; } body.SRPage { margin: 5px 2px; } .SRChildren { padding-left: 3ex; padding-bottom: .5em } .SRPage .SRChildren { display: none; } .SRSymbol { font-weight: bold; color: #425E97; font-family: Arial, Verdana, sans-serif; text-decoration: none; outline: none; } a.SRScope { display: block; color: #425E97; font-family: Arial, Verdana, sans-serif; text-decoration: none; outline: none; } a.SRSymbol:focus, a.SRSymbol:active, a.SRScope:focus, a.SRScope:active { text-decoration: underline; } span.SRScope { padding-left: 4px; } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; } .SRResult { display: none; } DIV.searchresults { margin-left: 10px; margin-right: 10px; } /*---------------- External search page results */ .searchresult { background-color: #F0F3F8; } .pages b { color: white; padding: 5px 5px 3px 5px; background-image: url("../tab_a.png"); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } .pages { line-height: 17px; margin-left: 4px; text-decoration: none; } .hl { font-weight: bold; } #searchresults { margin-bottom: 20px; } .searchpages { margin-top: 10px; } ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/search.js ================================================ function convertToId(search) { var result = ''; for (i=0;i do a search { this.Search(); } } this.OnSearchSelectKey = function(evt) { var e = (evt) ? evt : window.event; // for IE if (e.keyCode==40 && this.searchIndex0) // Up { this.searchIndex--; this.OnSelectItem(this.searchIndex); } else if (e.keyCode==13 || e.keyCode==27) { this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); } return false; } // --------- Actions // Closes the results window. this.CloseResultsWindow = function() { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } this.CloseSelectionWindow = function() { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. this.Search = function() { this.keyTimeout = 0; // strip leading whitespace var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); var code = searchValue.toLowerCase().charCodeAt(0); var idxChar = searchValue.substr(0, 1).toLowerCase(); if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair { idxChar = searchValue.substr(0, 2); } var resultsPage; var resultsPageWithSearch; var hasResultsPage; var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); if (idx!=-1) { var hexCode=idx.toString(16); resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; resultsPageWithSearch = resultsPage+'?'+escape(searchValue); hasResultsPage = true; } else // nothing available for this search term { resultsPage = this.resultsPath + '/nomatches.html'; resultsPageWithSearch = resultsPage; hasResultsPage = false; } window.frames.MSearchResults.location = resultsPageWithSearch; var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); if (domPopupSearchResultsWindow.style.display!='block') { var domSearchBox = this.DOMSearchBox(); this.DOMSearchClose().style.display = 'inline'; if (this.insideFrame) { var domPopupSearchResults = this.DOMPopupSearchResults(); domPopupSearchResultsWindow.style.position = 'relative'; domPopupSearchResultsWindow.style.display = 'block'; var width = document.body.clientWidth - 8; // the -8 is for IE :-( domPopupSearchResultsWindow.style.width = width + 'px'; domPopupSearchResults.style.width = width + 'px'; } else { var domPopupSearchResults = this.DOMPopupSearchResults(); var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; domPopupSearchResultsWindow.style.top = top + 'px'; domPopupSearchResultsWindow.style.left = left + 'px'; } } this.lastSearchValue = searchValue; this.lastResultsPage = resultsPage; } // -------- Activation Functions // Activates or deactivates the search panel, resetting things to // their default values if necessary. this.Activate = function(isActive) { if (isActive || // open it this.DOMPopupSearchResultsWindow().style.display == 'block' ) { this.DOMSearchBox().className = 'MSearchBoxActive'; var searchField = this.DOMSearchField(); if (searchField.value == this.searchLabel) // clear "Search" term upon entry { searchField.value = ''; this.searchActive = true; } } else if (!isActive) // directly remove the panel { this.DOMSearchBox().className = 'MSearchBoxInactive'; this.DOMSearchField().value = this.searchLabel; this.searchActive = false; this.lastSearchValue = '' this.lastResultsPage = ''; } } } // ----------------------------------------------------------------------- // The class that handles everything on the search results page. function SearchResults(name) { // The number of matches from the last run of . this.lastMatchCount = 0; this.lastKey = 0; this.repeatOn = false; // Toggles the visibility of the passed element ID. this.FindChildElement = function(id) { var parentElement = document.getElementById(id); var element = parentElement.firstChild; while (element && element!=parentElement) { if (element.nodeName == 'DIV' && element.className == 'SRChildren') { return element; } if (element.nodeName == 'DIV' && element.hasChildNodes()) { element = element.firstChild; } else if (element.nextSibling) { element = element.nextSibling; } else { do { element = element.parentNode; } while (element && element!=parentElement && !element.nextSibling); if (element && element!=parentElement) { element = element.nextSibling; } } } } this.Toggle = function(id) { var element = this.FindChildElement(id); if (element) { if (element.style.display == 'block') { element.style.display = 'none'; } else { element.style.display = 'block'; } } } // Searches for the passed string. If there is no parameter, // it takes it from the URL query. // // Always returns true, since other documents may try to call it // and that may or may not be possible. this.Search = function(search) { if (!search) // get search word from URL { search = window.location.search; search = search.substring(1); // Remove the leading '?' search = unescape(search); } search = search.replace(/^ +/, ""); // strip leading spaces search = search.replace(/ +$/, ""); // strip trailing spaces search = search.toLowerCase(); search = convertToId(search); var resultRows = document.getElementsByTagName("div"); var matches = 0; var i = 0; while (i < resultRows.length) { var row = resultRows.item(i); if (row.className == "SRResult") { var rowMatchName = row.id.toLowerCase(); rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' if (search.length<=rowMatchName.length && rowMatchName.substr(0, search.length)==search) { row.style.display = 'block'; matches++; } else { row.style.display = 'none'; } } i++; } document.getElementById("Searching").style.display='none'; if (matches == 0) // no results { document.getElementById("NoMatches").style.display='block'; } else // at least one result { document.getElementById("NoMatches").style.display='none'; } this.lastMatchCount = matches; return true; } // return the first item with index index or higher that is visible this.NavNext = function(index) { var focusItem; while (1) { var focusName = 'Item'+index; focusItem = document.getElementById(focusName); if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { break; } else if (!focusItem) // last element { break; } focusItem=null; index++; } return focusItem; } this.NavPrev = function(index) { var focusItem; while (1) { var focusName = 'Item'+index; focusItem = document.getElementById(focusName); if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { break; } else if (!focusItem) // last element { break; } focusItem=null; index--; } return focusItem; } this.ProcessKeys = function(e) { if (e.type == "keydown") { this.repeatOn = false; this.lastKey = e.keyCode; } else if (e.type == "keypress") { if (!this.repeatOn) { if (this.lastKey) this.repeatOn = true; return false; // ignore first keypress after keydown } } else if (e.type == "keyup") { this.lastKey = 0; this.repeatOn = false; } return this.lastKey!=0; } this.Nav = function(evt,itemIndex) { var e = (evt) ? evt : window.event; // for IE if (e.keyCode==13) return true; if (!this.ProcessKeys(e)) return false; if (this.lastKey==38) // Up { var newIndex = itemIndex-1; var focusItem = this.NavPrev(newIndex); if (focusItem) { var child = this.FindChildElement(focusItem.parentNode.parentNode.id); if (child && child.style.display == 'block') // children visible { var n=0; var tmpElem; while (1) // search for last child { tmpElem = document.getElementById('Item'+newIndex+'_c'+n); if (tmpElem) { focusItem = tmpElem; } else // found it! { break; } n++; } } } if (focusItem) { focusItem.focus(); } else // return focus to search field { parent.document.getElementById("MSearchField").focus(); } } else if (this.lastKey==40) // Down { var newIndex = itemIndex+1; var focusItem; var item = document.getElementById('Item'+itemIndex); var elem = this.FindChildElement(item.parentNode.parentNode.id); if (elem && elem.style.display == 'block') // children visible { focusItem = document.getElementById('Item'+itemIndex+'_c0'); } if (!focusItem) focusItem = this.NavNext(newIndex); if (focusItem) focusItem.focus(); } else if (this.lastKey==39) // Right { var item = document.getElementById('Item'+itemIndex); var elem = this.FindChildElement(item.parentNode.parentNode.id); if (elem) elem.style.display = 'block'; } else if (this.lastKey==37) // Left { var item = document.getElementById('Item'+itemIndex); var elem = this.FindChildElement(item.parentNode.parentNode.id); if (elem) elem.style.display = 'none'; } else if (this.lastKey==27) // Escape { parent.searchBox.CloseResultsWindow(); parent.document.getElementById("MSearchField").focus(); } else if (this.lastKey==13) // Enter { return true; } return false; } this.NavChild = function(evt,itemIndex,childIndex) { var e = (evt) ? evt : window.event; // for IE if (e.keyCode==13) return true; if (!this.ProcessKeys(e)) return false; if (this.lastKey==38) // Up { if (childIndex>0) { var newIndex = childIndex-1; document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); } else // already at first child, jump to parent { document.getElementById('Item'+itemIndex).focus(); } } else if (this.lastKey==40) // Down { var newIndex = childIndex+1; var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); if (!elem) // last child, jump to parent next parent { elem = this.NavNext(itemIndex+1); } if (elem) { elem.focus(); } } else if (this.lastKey==27) // Escape { parent.searchBox.CloseResultsWindow(); parent.document.getElementById("MSearchField").focus(); } else if (this.lastKey==13) // Enter { return true; } return false; } } function setKeyActions(elem,action) { elem.setAttribute('onkeydown',action); elem.setAttribute('onkeypress',action); elem.setAttribute('onkeyup',action); } function setClassAttr(elem,attr) { elem.setAttribute('class',attr); elem.setAttribute('className',attr); } function createResults() { var results = document.getElementById("SRResults"); for (var e=0; e
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_0.js ================================================ var searchData= [ ['aligned_5fbvec1',['aligned_bvec1',['../a00303.html#ga780a35f764020f553a9601a3fcdcd059',1,'glm']]], ['aligned_5fbvec2',['aligned_bvec2',['../a00303.html#gae766b317c5afec852bfb3d74a3c54bc8',1,'glm']]], ['aligned_5fbvec3',['aligned_bvec3',['../a00303.html#gae1964ba70d15915e5b710926decbb3cb',1,'glm']]], ['aligned_5fbvec4',['aligned_bvec4',['../a00303.html#gae164a1f7879f828bc35e50b79d786b05',1,'glm']]], ['aligned_5fdmat2',['aligned_dmat2',['../a00303.html#ga6783859382677d35fcd5dac7dcbefdbd',1,'glm']]], ['aligned_5fdmat2x2',['aligned_dmat2x2',['../a00303.html#ga449a3ec2dde6b6bb4bb94c49a6aad388',1,'glm']]], ['aligned_5fdmat2x3',['aligned_dmat2x3',['../a00303.html#ga53d519a7b1bfb69076b3ec206a6b3bd1',1,'glm']]], ['aligned_5fdmat2x4',['aligned_dmat2x4',['../a00303.html#ga5ccb2baeb0ab57b818c24e0d486c59d0',1,'glm']]], ['aligned_5fdmat3',['aligned_dmat3',['../a00303.html#ga19aa695ffdb45ce29f7ea0b5029627de',1,'glm']]], ['aligned_5fdmat3x2',['aligned_dmat3x2',['../a00303.html#ga5f5123d834bd1170edf8c386834e112c',1,'glm']]], ['aligned_5fdmat3x3',['aligned_dmat3x3',['../a00303.html#ga635bf3732281a2c2ca54d8f9d33d178f',1,'glm']]], ['aligned_5fdmat3x4',['aligned_dmat3x4',['../a00303.html#gaf488c6ad88c185054595d4d5c7ba5b9d',1,'glm']]], ['aligned_5fdmat4',['aligned_dmat4',['../a00303.html#ga001bb387ae8192fa94dbd8b23b600439',1,'glm']]], ['aligned_5fdmat4x2',['aligned_dmat4x2',['../a00303.html#gaa409cfb737bd59b68dc683e9b03930cc',1,'glm']]], ['aligned_5fdmat4x3',['aligned_dmat4x3',['../a00303.html#ga621e89ca1dbdcb7b5a3e7de237c44121',1,'glm']]], ['aligned_5fdmat4x4',['aligned_dmat4x4',['../a00303.html#gac9bda778d0b7ad82f656dab99b71857a',1,'glm']]], ['aligned_5fdvec1',['aligned_dvec1',['../a00303.html#ga4974f46ae5a19415d91316960a53617a',1,'glm']]], ['aligned_5fdvec2',['aligned_dvec2',['../a00303.html#ga18d859f87122b2b3b2992ffe86dbebc0',1,'glm']]], ['aligned_5fdvec3',['aligned_dvec3',['../a00303.html#gaa37869eea77d28419b2fb0ff70b69bf0',1,'glm']]], ['aligned_5fdvec4',['aligned_dvec4',['../a00303.html#ga8a9f0a4795ccc442fa9901845026f9f5',1,'glm']]], ['aligned_5fhighp_5fbvec1',['aligned_highp_bvec1',['../a00303.html#ga862843a45b01c35ffe4d44c47ea774ad',1,'glm']]], ['aligned_5fhighp_5fbvec2',['aligned_highp_bvec2',['../a00303.html#ga0731b593c5e33559954c80f8687e76c6',1,'glm']]], ['aligned_5fhighp_5fbvec3',['aligned_highp_bvec3',['../a00303.html#ga0913bdf048d0cb74af1d2512aec675bc',1,'glm']]], ['aligned_5fhighp_5fbvec4',['aligned_highp_bvec4',['../a00303.html#ga9df1d0c425852cf63a57e533b7a83f4f',1,'glm']]], ['aligned_5fhighp_5fdmat2',['aligned_highp_dmat2',['../a00303.html#ga3a7eeae43cb7673e14cc89bf02f7dd45',1,'glm']]], ['aligned_5fhighp_5fdmat2x2',['aligned_highp_dmat2x2',['../a00303.html#gaef26dfe3855a91644665b55c9096a8c8',1,'glm']]], ['aligned_5fhighp_5fdmat2x3',['aligned_highp_dmat2x3',['../a00303.html#gaa7c9d4ab7ab651cdf8001fe7843e238b',1,'glm']]], ['aligned_5fhighp_5fdmat2x4',['aligned_highp_dmat2x4',['../a00303.html#gaa0d2b8a75f1908dcf32c27f8524bdced',1,'glm']]], ['aligned_5fhighp_5fdmat3',['aligned_highp_dmat3',['../a00303.html#gad8f6abb2c9994850b5d5c04a5f979ed8',1,'glm']]], ['aligned_5fhighp_5fdmat3x2',['aligned_highp_dmat3x2',['../a00303.html#gab069b2fc2ec785fc4e193cf26c022679',1,'glm']]], ['aligned_5fhighp_5fdmat3x3',['aligned_highp_dmat3x3',['../a00303.html#ga66073b1ddef34b681741f572338ddb8e',1,'glm']]], ['aligned_5fhighp_5fdmat3x4',['aligned_highp_dmat3x4',['../a00303.html#ga683c8ca66de323ea533a760abedd0efc',1,'glm']]], ['aligned_5fhighp_5fdmat4',['aligned_highp_dmat4',['../a00303.html#gacaa7407ea00ffdd322ce86a57adb547e',1,'glm']]], ['aligned_5fhighp_5fdmat4x2',['aligned_highp_dmat4x2',['../a00303.html#ga93a23ca3d42818d56e0702213c66354b',1,'glm']]], ['aligned_5fhighp_5fdmat4x3',['aligned_highp_dmat4x3',['../a00303.html#gacab7374b560745cb1d0a306a90353f58',1,'glm']]], ['aligned_5fhighp_5fdmat4x4',['aligned_highp_dmat4x4',['../a00303.html#ga1fbfba14368b742972d3b58a0a303682',1,'glm']]], ['aligned_5fhighp_5fdvec1',['aligned_highp_dvec1',['../a00303.html#gaf0448b0f7ceb8273f7eda3a92205eefc',1,'glm']]], ['aligned_5fhighp_5fdvec2',['aligned_highp_dvec2',['../a00303.html#gab173a333e6b7ce153ceba66ac4a321cf',1,'glm']]], ['aligned_5fhighp_5fdvec3',['aligned_highp_dvec3',['../a00303.html#gae94ef61edfa047d05bc69b6065fc42ba',1,'glm']]], ['aligned_5fhighp_5fdvec4',['aligned_highp_dvec4',['../a00303.html#ga8fad35c5677f228e261fe541f15363a4',1,'glm']]], ['aligned_5fhighp_5fivec1',['aligned_highp_ivec1',['../a00303.html#gad63b8c5b4dc0500d54d7414ef555178f',1,'glm']]], ['aligned_5fhighp_5fivec2',['aligned_highp_ivec2',['../a00303.html#ga41563650f36cb7f479e080de21e08418',1,'glm']]], ['aligned_5fhighp_5fivec3',['aligned_highp_ivec3',['../a00303.html#ga6eca5170bb35eac90b4972590fd31a06',1,'glm']]], ['aligned_5fhighp_5fivec4',['aligned_highp_ivec4',['../a00303.html#ga31bfa801e1579fdba752ec3f7a45ec91',1,'glm']]], ['aligned_5fhighp_5fmat2',['aligned_highp_mat2',['../a00303.html#gaf9db5e8a929c317da5aa12cc53741b63',1,'glm']]], ['aligned_5fhighp_5fmat2x2',['aligned_highp_mat2x2',['../a00303.html#gab559d943abf92bc588bcd3f4c0e4664b',1,'glm']]], ['aligned_5fhighp_5fmat2x3',['aligned_highp_mat2x3',['../a00303.html#ga50c9af5aa3a848956d625fc64dc8488e',1,'glm']]], ['aligned_5fhighp_5fmat2x4',['aligned_highp_mat2x4',['../a00303.html#ga0edcfdd179f8a158342eead48a4d0c2a',1,'glm']]], ['aligned_5fhighp_5fmat3',['aligned_highp_mat3',['../a00303.html#gabab3afcc04459c7b123604ae5dc663f6',1,'glm']]], ['aligned_5fhighp_5fmat3x2',['aligned_highp_mat3x2',['../a00303.html#ga9fc2167b47c9be9295f2d8eea7f0ca75',1,'glm']]], ['aligned_5fhighp_5fmat3x3',['aligned_highp_mat3x3',['../a00303.html#ga2f7b8c99ba6f2d07c73a195a8143c259',1,'glm']]], ['aligned_5fhighp_5fmat3x4',['aligned_highp_mat3x4',['../a00303.html#ga52e00afd0eb181e6738f40cf41787049',1,'glm']]], ['aligned_5fhighp_5fmat4',['aligned_highp_mat4',['../a00303.html#ga058ae939bfdbcbb80521dd4a3b01afba',1,'glm']]], ['aligned_5fhighp_5fmat4x2',['aligned_highp_mat4x2',['../a00303.html#ga84e1f5e0718952a079b748825c03f956',1,'glm']]], ['aligned_5fhighp_5fmat4x3',['aligned_highp_mat4x3',['../a00303.html#gafff1684c4ff19b4a818138ccacc1e78d',1,'glm']]], ['aligned_5fhighp_5fmat4x4',['aligned_highp_mat4x4',['../a00303.html#ga40d49648083a0498a12a4bb41ae6ece8',1,'glm']]], ['aligned_5fhighp_5fuvec1',['aligned_highp_uvec1',['../a00303.html#ga5b80e28396c6ef7d32c6fd18df498451',1,'glm']]], ['aligned_5fhighp_5fuvec2',['aligned_highp_uvec2',['../a00303.html#ga04db692662a4908beeaf5a5ba6e19483',1,'glm']]], ['aligned_5fhighp_5fuvec3',['aligned_highp_uvec3',['../a00303.html#ga073fd6e8b241afade6d8afbd676b2667',1,'glm']]], ['aligned_5fhighp_5fuvec4',['aligned_highp_uvec4',['../a00303.html#gabdd60462042859f876c17c7346c732a5',1,'glm']]], ['aligned_5fhighp_5fvec1',['aligned_highp_vec1',['../a00303.html#ga4d0bd70d5fac49b800546d608b707513',1,'glm']]], ['aligned_5fhighp_5fvec2',['aligned_highp_vec2',['../a00303.html#gac9f8482dde741fb6bab7248b81a45465',1,'glm']]], ['aligned_5fhighp_5fvec3',['aligned_highp_vec3',['../a00303.html#ga65415d2d68c9cc0ca554524a8f5510b2',1,'glm']]], ['aligned_5fhighp_5fvec4',['aligned_highp_vec4',['../a00303.html#ga7cb26d354dd69d23849c34c4fba88da9',1,'glm']]], ['aligned_5fivec1',['aligned_ivec1',['../a00303.html#ga76298aed82a439063c3d55980c84aa0b',1,'glm']]], ['aligned_5fivec2',['aligned_ivec2',['../a00303.html#gae4f38fd2c86cee6940986197777b3ca4',1,'glm']]], ['aligned_5fivec3',['aligned_ivec3',['../a00303.html#ga32794322d294e5ace7fed4a61896f270',1,'glm']]], ['aligned_5fivec4',['aligned_ivec4',['../a00303.html#ga7f79eae5927c9033d84617e49f6f34e4',1,'glm']]], ['aligned_5flowp_5fbvec1',['aligned_lowp_bvec1',['../a00303.html#gac6036449ab1c4abf8efe1ea00fcdd1c9',1,'glm']]], ['aligned_5flowp_5fbvec2',['aligned_lowp_bvec2',['../a00303.html#ga59fadcd3835646e419372ae8b43c5d37',1,'glm']]], ['aligned_5flowp_5fbvec3',['aligned_lowp_bvec3',['../a00303.html#ga83aab4d191053f169c93a3e364f2e118',1,'glm']]], ['aligned_5flowp_5fbvec4',['aligned_lowp_bvec4',['../a00303.html#gaa7a76555ee4853614e5755181a8dd54e',1,'glm']]], ['aligned_5flowp_5fdmat2',['aligned_lowp_dmat2',['../a00303.html#ga79a90173d8faa9816dc852ce447d66ca',1,'glm']]], ['aligned_5flowp_5fdmat2x2',['aligned_lowp_dmat2x2',['../a00303.html#ga07cb8e846666cbf56045b064fb553d2e',1,'glm']]], ['aligned_5flowp_5fdmat2x3',['aligned_lowp_dmat2x3',['../a00303.html#ga7a4536b6e1f2ebb690f63816b5d7e48b',1,'glm']]], ['aligned_5flowp_5fdmat2x4',['aligned_lowp_dmat2x4',['../a00303.html#gab0cf4f7c9a264941519acad286e055ea',1,'glm']]], ['aligned_5flowp_5fdmat3',['aligned_lowp_dmat3',['../a00303.html#gac00e15efded8a57c9dec3aed0fb547e7',1,'glm']]], ['aligned_5flowp_5fdmat3x2',['aligned_lowp_dmat3x2',['../a00303.html#gaa281a47d5d627313984d0f8df993b648',1,'glm']]], ['aligned_5flowp_5fdmat3x3',['aligned_lowp_dmat3x3',['../a00303.html#ga7f3148a72355e39932d6855baca42ebc',1,'glm']]], ['aligned_5flowp_5fdmat3x4',['aligned_lowp_dmat3x4',['../a00303.html#gaea3ccc5ef5b178e6e49b4fa1427605d3',1,'glm']]], ['aligned_5flowp_5fdmat4',['aligned_lowp_dmat4',['../a00303.html#gab92c6d7d58d43dfb8147e9aedfe8351b',1,'glm']]], ['aligned_5flowp_5fdmat4x2',['aligned_lowp_dmat4x2',['../a00303.html#gaf806dfdaffb2e9f7681b1cd2825898ce',1,'glm']]], ['aligned_5flowp_5fdmat4x3',['aligned_lowp_dmat4x3',['../a00303.html#gab0931ac7807fa1428c7bbf249efcdf0d',1,'glm']]], ['aligned_5flowp_5fdmat4x4',['aligned_lowp_dmat4x4',['../a00303.html#gad8220a93d2fca2dd707821b4ab6f809e',1,'glm']]], ['aligned_5flowp_5fdvec1',['aligned_lowp_dvec1',['../a00303.html#ga7f8a2cc5a686e52b1615761f4978ca62',1,'glm']]], ['aligned_5flowp_5fdvec2',['aligned_lowp_dvec2',['../a00303.html#ga0e37cff4a43cca866101f0a35f01db6d',1,'glm']]], ['aligned_5flowp_5fdvec3',['aligned_lowp_dvec3',['../a00303.html#gab9e669c4efd52d3347fc6d5f6b20fd59',1,'glm']]], ['aligned_5flowp_5fdvec4',['aligned_lowp_dvec4',['../a00303.html#ga226f5ec7a953cea559c16fe3aff9924f',1,'glm']]], ['aligned_5flowp_5fivec1',['aligned_lowp_ivec1',['../a00303.html#ga1101d3a82b2e3f5f8828bd8f3adab3e1',1,'glm']]], ['aligned_5flowp_5fivec2',['aligned_lowp_ivec2',['../a00303.html#ga44c4accad582cfbd7226a19b83b0cadc',1,'glm']]], ['aligned_5flowp_5fivec3',['aligned_lowp_ivec3',['../a00303.html#ga65663f10a02e52cedcddbcfe36ddf38d',1,'glm']]], ['aligned_5flowp_5fivec4',['aligned_lowp_ivec4',['../a00303.html#gaae92fcec8b2e0328ffbeac31cc4fc419',1,'glm']]], ['aligned_5flowp_5fmat2',['aligned_lowp_mat2',['../a00303.html#ga17c424412207b00dba1cf587b099eea3',1,'glm']]], ['aligned_5flowp_5fmat2x2',['aligned_lowp_mat2x2',['../a00303.html#ga0e44aeb930a47f9cbf2db15b56433b0f',1,'glm']]], ['aligned_5flowp_5fmat2x3',['aligned_lowp_mat2x3',['../a00303.html#ga7dec6d96bc61312b1e56d137c9c74030',1,'glm']]], ['aligned_5flowp_5fmat2x4',['aligned_lowp_mat2x4',['../a00303.html#gaa694fab1f8df5f658846573ba8ffc563',1,'glm']]], ['aligned_5flowp_5fmat3',['aligned_lowp_mat3',['../a00303.html#ga1eb9076cc28ead5020fd3029fd0472c5',1,'glm']]], ['aligned_5flowp_5fmat3x2',['aligned_lowp_mat3x2',['../a00303.html#ga2d6639f0bd777bae1ee0eba71cd7bfdc',1,'glm']]], ['aligned_5flowp_5fmat3x3',['aligned_lowp_mat3x3',['../a00303.html#gaeaab04e378a90956eec8d68a99d777ed',1,'glm']]], ['aligned_5flowp_5fmat3x4',['aligned_lowp_mat3x4',['../a00303.html#ga1f03696ab066572c6c044e63edf635a2',1,'glm']]], ['aligned_5flowp_5fmat4',['aligned_lowp_mat4',['../a00303.html#ga25ea2f684e36aa5e978b4f2f86593824',1,'glm']]], ['aligned_5flowp_5fmat4x2',['aligned_lowp_mat4x2',['../a00303.html#ga2cb16c3fdfb15e0719d942ee3b548bc4',1,'glm']]], ['aligned_5flowp_5fmat4x3',['aligned_lowp_mat4x3',['../a00303.html#ga7e96981e872f17a780d9f1c22dc1f512',1,'glm']]], ['aligned_5flowp_5fmat4x4',['aligned_lowp_mat4x4',['../a00303.html#gadae3dcfc22d28c64d0548cbfd9d08719',1,'glm']]], ['aligned_5flowp_5fuvec1',['aligned_lowp_uvec1',['../a00303.html#gad09b93acc43c43423408d17a64f6d7ca',1,'glm']]], ['aligned_5flowp_5fuvec2',['aligned_lowp_uvec2',['../a00303.html#ga6f94fcd28dde906fc6cad5f742b55c1a',1,'glm']]], ['aligned_5flowp_5fuvec3',['aligned_lowp_uvec3',['../a00303.html#ga9e9f006970b1a00862e3e6e599eedd4c',1,'glm']]], ['aligned_5flowp_5fuvec4',['aligned_lowp_uvec4',['../a00303.html#ga46b1b0b9eb8625a5d69137bd66cd13dc',1,'glm']]], ['aligned_5flowp_5fvec1',['aligned_lowp_vec1',['../a00303.html#gab34aee3d5e121c543fea11d2c50ecc43',1,'glm']]], ['aligned_5flowp_5fvec2',['aligned_lowp_vec2',['../a00303.html#ga53ac5d252317f1fa43c2ef921857bf13',1,'glm']]], ['aligned_5flowp_5fvec3',['aligned_lowp_vec3',['../a00303.html#ga98f0b5cd65fce164ff1367c2a3b3aa1e',1,'glm']]], ['aligned_5flowp_5fvec4',['aligned_lowp_vec4',['../a00303.html#ga82f7275d6102593a69ce38cdad680409',1,'glm']]], ['aligned_5fmat2',['aligned_mat2',['../a00303.html#ga5a8a5f8c47cd7d5502dd9932f83472b9',1,'glm']]], ['aligned_5fmat2x2',['aligned_mat2x2',['../a00303.html#gabb04f459d81d753d278b2072e2375e8e',1,'glm']]], ['aligned_5fmat2x3',['aligned_mat2x3',['../a00303.html#ga832476bb1c59ef673db37433ff34e399',1,'glm']]], ['aligned_5fmat2x4',['aligned_mat2x4',['../a00303.html#gadab11a7504430825b648ff7c7e36b725',1,'glm']]], ['aligned_5fmat3',['aligned_mat3',['../a00303.html#ga43a92a24ca863e0e0f3b65834b3cf714',1,'glm']]], ['aligned_5fmat3x2',['aligned_mat3x2',['../a00303.html#ga5c0df24ba85eafafc0eb0c90690510ed',1,'glm']]], ['aligned_5fmat3x3',['aligned_mat3x3',['../a00303.html#gadb065dbe5c11271fef8cf2ea8608f187',1,'glm']]], ['aligned_5fmat3x4',['aligned_mat3x4',['../a00303.html#ga88061c72c997b94c420f2b0a60d9df26',1,'glm']]], ['aligned_5fmat4',['aligned_mat4',['../a00303.html#gab0fddcf95dd51cbcbf624ea7c40dfeb8',1,'glm']]], ['aligned_5fmat4x2',['aligned_mat4x2',['../a00303.html#gac9a2d0fb815fd5c2bd58b869c55e32d3',1,'glm']]], ['aligned_5fmat4x3',['aligned_mat4x3',['../a00303.html#ga452bbbfd26e244de216e4d004d50bb74',1,'glm']]], ['aligned_5fmat4x4',['aligned_mat4x4',['../a00303.html#ga8b8fb86973a0b768c5bd802c92fac1a1',1,'glm']]], ['aligned_5fmediump_5fbvec1',['aligned_mediump_bvec1',['../a00303.html#gadd3b8bd71a758f7fb0da8e525156f34e',1,'glm']]], ['aligned_5fmediump_5fbvec2',['aligned_mediump_bvec2',['../a00303.html#gacb183eb5e67ec0d0ea5a016cba962810',1,'glm']]], ['aligned_5fmediump_5fbvec3',['aligned_mediump_bvec3',['../a00303.html#gacfa4a542f1b20a5b63ad702dfb6fd587',1,'glm']]], ['aligned_5fmediump_5fbvec4',['aligned_mediump_bvec4',['../a00303.html#ga91bc1f513bb9b0fd60281d57ded9a48c',1,'glm']]], ['aligned_5fmediump_5fdmat2',['aligned_mediump_dmat2',['../a00303.html#ga62a2dfd668c91072b72c3109fc6cda28',1,'glm']]], ['aligned_5fmediump_5fdmat2x2',['aligned_mediump_dmat2x2',['../a00303.html#ga9b7feec247d378dd407ba81f56ea96c8',1,'glm']]], ['aligned_5fmediump_5fdmat2x3',['aligned_mediump_dmat2x3',['../a00303.html#gafcb189f4f93648fe7ca802ca4aca2eb8',1,'glm']]], ['aligned_5fmediump_5fdmat2x4',['aligned_mediump_dmat2x4',['../a00303.html#ga92f8873e3bbd5ca1323c8bbe5725cc5e',1,'glm']]], ['aligned_5fmediump_5fdmat3',['aligned_mediump_dmat3',['../a00303.html#ga6dc2832b747c00e0a0df621aba196960',1,'glm']]], ['aligned_5fmediump_5fdmat3x2',['aligned_mediump_dmat3x2',['../a00303.html#ga5a97f0355d801de3444d42c1d5b40438',1,'glm']]], ['aligned_5fmediump_5fdmat3x3',['aligned_mediump_dmat3x3',['../a00303.html#ga649d0acf01054b17e679cf00e150e025',1,'glm']]], ['aligned_5fmediump_5fdmat3x4',['aligned_mediump_dmat3x4',['../a00303.html#ga45e155a4840f69b2fa4ed8047a676860',1,'glm']]], ['aligned_5fmediump_5fdmat4',['aligned_mediump_dmat4',['../a00303.html#ga8a9376d82f0e946e25137eb55543e6ce',1,'glm']]], ['aligned_5fmediump_5fdmat4x2',['aligned_mediump_dmat4x2',['../a00303.html#gabc25e547f4de4af62403492532cd1b6d',1,'glm']]], ['aligned_5fmediump_5fdmat4x3',['aligned_mediump_dmat4x3',['../a00303.html#gae84f4763ecdc7457ecb7930bad12057c',1,'glm']]], ['aligned_5fmediump_5fdmat4x4',['aligned_mediump_dmat4x4',['../a00303.html#gaa292ebaa907afdecb2d5967fb4fb1247',1,'glm']]], ['aligned_5fmediump_5fdvec1',['aligned_mediump_dvec1',['../a00303.html#ga7180b685c581adb224406a7f831608e3',1,'glm']]], ['aligned_5fmediump_5fdvec2',['aligned_mediump_dvec2',['../a00303.html#ga9af1eabe22f569e70d9893be72eda0f5',1,'glm']]], ['aligned_5fmediump_5fdvec3',['aligned_mediump_dvec3',['../a00303.html#ga058e7ddab1428e47f2197bdd3a5a6953',1,'glm']]], ['aligned_5fmediump_5fdvec4',['aligned_mediump_dvec4',['../a00303.html#gaffd747ea2aea1e69c2ecb04e68521b21',1,'glm']]], ['aligned_5fmediump_5fivec1',['aligned_mediump_ivec1',['../a00303.html#ga20e63dd980b81af10cadbbe219316650',1,'glm']]], ['aligned_5fmediump_5fivec2',['aligned_mediump_ivec2',['../a00303.html#gaea13d89d49daca2c796aeaa82fc2c2f2',1,'glm']]], ['aligned_5fmediump_5fivec3',['aligned_mediump_ivec3',['../a00303.html#gabbf0f15e9c3d9868e43241ad018f82bd',1,'glm']]], ['aligned_5fmediump_5fivec4',['aligned_mediump_ivec4',['../a00303.html#ga6099dd7878d0a78101a4250d8cd2d736',1,'glm']]], ['aligned_5fmediump_5fmat2',['aligned_mediump_mat2',['../a00303.html#gaf6f041b212c57664d88bc6aefb7e36f3',1,'glm']]], ['aligned_5fmediump_5fmat2x2',['aligned_mediump_mat2x2',['../a00303.html#ga04bf49316ee777d42fcfe681ee37d7be',1,'glm']]], ['aligned_5fmediump_5fmat2x3',['aligned_mediump_mat2x3',['../a00303.html#ga26a0b61e444a51a37b9737cf4d84291b',1,'glm']]], ['aligned_5fmediump_5fmat2x4',['aligned_mediump_mat2x4',['../a00303.html#ga163facc9ed2692ea1300ed57c5d12b17',1,'glm']]], ['aligned_5fmediump_5fmat3',['aligned_mediump_mat3',['../a00303.html#ga3b76ba17ae5d53debeb6f7e55919a57c',1,'glm']]], ['aligned_5fmediump_5fmat3x2',['aligned_mediump_mat3x2',['../a00303.html#ga80dee705d714300378e0847f45059097',1,'glm']]], ['aligned_5fmediump_5fmat3x3',['aligned_mediump_mat3x3',['../a00303.html#ga721f5404caf40d68962dcc0529de71d9',1,'glm']]], ['aligned_5fmediump_5fmat3x4',['aligned_mediump_mat3x4',['../a00303.html#ga98f4dc6722a2541a990918c074075359',1,'glm']]], ['aligned_5fmediump_5fmat4',['aligned_mediump_mat4',['../a00303.html#gaeefee8317192174596852ce19b602720',1,'glm']]], ['aligned_5fmediump_5fmat4x2',['aligned_mediump_mat4x2',['../a00303.html#ga46f372a006345c252a41267657cc22c0',1,'glm']]], ['aligned_5fmediump_5fmat4x3',['aligned_mediump_mat4x3',['../a00303.html#ga0effece4545acdebdc2a5512a303110e',1,'glm']]], ['aligned_5fmediump_5fmat4x4',['aligned_mediump_mat4x4',['../a00303.html#ga312864244cae4e8f10f478cffd0f76de',1,'glm']]], ['aligned_5fmediump_5fuvec1',['aligned_mediump_uvec1',['../a00303.html#gacb78126ea2eb779b41c7511128ff1283',1,'glm']]], ['aligned_5fmediump_5fuvec2',['aligned_mediump_uvec2',['../a00303.html#ga081d53e0a71443d0b68ea61c870f9adc',1,'glm']]], ['aligned_5fmediump_5fuvec3',['aligned_mediump_uvec3',['../a00303.html#gad6fc921bdde2bdbc7e09b028e1e9b379',1,'glm']]], ['aligned_5fmediump_5fuvec4',['aligned_mediump_uvec4',['../a00303.html#ga73ea0c1ba31580e107d21270883f51fc',1,'glm']]], ['aligned_5fmediump_5fvec1',['aligned_mediump_vec1',['../a00303.html#ga6b797eec76fa471e300158f3453b3b2e',1,'glm']]], ['aligned_5fmediump_5fvec2',['aligned_mediump_vec2',['../a00303.html#ga026a55ddbf2bafb1432f1157a2708616',1,'glm']]], ['aligned_5fmediump_5fvec3',['aligned_mediump_vec3',['../a00303.html#ga3a25e494173f6a64637b08a1b50a2132',1,'glm']]], ['aligned_5fmediump_5fvec4',['aligned_mediump_vec4',['../a00303.html#ga320d1c661cff2ef214eb50241f2928b2',1,'glm']]], ['aligned_5fuvec1',['aligned_uvec1',['../a00303.html#ga1ff8ed402c93d280ff0597c1c5e7c548',1,'glm']]], ['aligned_5fuvec2',['aligned_uvec2',['../a00303.html#ga074137e3be58528d67041c223d49f398',1,'glm']]], ['aligned_5fuvec3',['aligned_uvec3',['../a00303.html#ga2a8d9c3046f89d854eb758adfa0811c0',1,'glm']]], ['aligned_5fuvec4',['aligned_uvec4',['../a00303.html#gabf842c45eea186170c267a328e3f3b7d',1,'glm']]], ['aligned_5fvec1',['aligned_vec1',['../a00303.html#ga05e6d4c908965d04191c2070a8d0a65e',1,'glm']]], ['aligned_5fvec2',['aligned_vec2',['../a00303.html#ga0682462f8096a226773e20fac993cde5',1,'glm']]], ['aligned_5fvec3',['aligned_vec3',['../a00303.html#ga7cf643b66664e0cd3c48759ae66c2bd0',1,'glm']]], ['aligned_5fvec4',['aligned_vec4',['../a00303.html#ga85d89e83cb8137e1be1446de8c3b643a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_1.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_1.js ================================================ var searchData= [ ['bool1',['bool1',['../a00315.html#gaddcd7aa2e30e61af5b38660613d3979e',1,'glm']]], ['bool1x1',['bool1x1',['../a00315.html#ga7f895c936f0c29c8729afbbf22806090',1,'glm']]], ['bool2',['bool2',['../a00315.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9',1,'glm']]], ['bool2x2',['bool2x2',['../a00315.html#gadb3703955e513632f98ba12fe051ba3e',1,'glm']]], ['bool2x3',['bool2x3',['../a00315.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0',1,'glm']]], ['bool2x4',['bool2x4',['../a00315.html#ga4d7fa65be8e8e4ad6d920b45c44e471f',1,'glm']]], ['bool3',['bool3',['../a00315.html#ga99629f818737f342204071ef8296b2ed',1,'glm']]], ['bool3x2',['bool3x2',['../a00315.html#gac7d7311f7e0fa8b6163d96dab033a755',1,'glm']]], ['bool3x3',['bool3x3',['../a00315.html#ga6c97b99aac3e302053ffb58aace9033c',1,'glm']]], ['bool3x4',['bool3x4',['../a00315.html#gae7d6b679463d37d6c527d478fb470fdf',1,'glm']]], ['bool4',['bool4',['../a00315.html#ga13c3200b82708f73faac6d7f09ec91a3',1,'glm']]], ['bool4x2',['bool4x2',['../a00315.html#ga9ed830f52408b2f83c085063a3eaf1d0',1,'glm']]], ['bool4x3',['bool4x3',['../a00315.html#gad0f5dc7f22c2065b1b06d57f1c0658fe',1,'glm']]], ['bool4x4',['bool4x4',['../a00315.html#ga7d2a7d13986602ae2896bfaa394235d4',1,'glm']]], ['bvec1',['bvec1',['../a00265.html#ga067af382616d93f8e850baae5154cdcc',1,'glm']]], ['bvec2',['bvec2',['../a00281.html#ga0b6123e03653cc1bbe366fc55238a934',1,'glm']]], ['bvec3',['bvec3',['../a00281.html#ga197151b72dfaf289daf98b361760ffe7',1,'glm']]], ['bvec4',['bvec4',['../a00281.html#ga9f7b9712373ff4342d9114619b55f5e3',1,'glm']]], ['byte',['byte',['../a00354.html#ga3005cb0d839d546c616becfa6602c607',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_2.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_2.js ================================================ var searchData= [ ['ddualquat',['ddualquat',['../a00317.html#ga3d71f98d84ba59dfe4e369fde4714cd6',1,'glm']]], ['dmat2',['dmat2',['../a00283.html#ga21dbd1f987775d7cc7607c139531c7e6',1,'glm']]], ['dmat2x2',['dmat2x2',['../a00283.html#ga66b6a9af787e468a46dfe24189e87f9b',1,'glm']]], ['dmat2x3',['dmat2x3',['../a00283.html#ga92cd388753d48e20de69ea2dbedf826a',1,'glm']]], ['dmat2x4',['dmat2x4',['../a00283.html#gaef2198807e937072803ae0ae45e1965e',1,'glm']]], ['dmat3',['dmat3',['../a00283.html#ga6f40aa56265b4b0ccad41b86802efe33',1,'glm']]], ['dmat3x2',['dmat3x2',['../a00283.html#ga001e3e0638fbf8719788fc64c5b8cf39',1,'glm']]], ['dmat3x3',['dmat3x3',['../a00283.html#ga970cb3306be25a5ca5db5a9456831228',1,'glm']]], ['dmat3x4',['dmat3x4',['../a00283.html#ga0412a634d183587e6188e9b11869f8f4',1,'glm']]], ['dmat4',['dmat4',['../a00283.html#ga0f34486bb7fec8e5a5b3830b6a6cbeca',1,'glm']]], ['dmat4x2',['dmat4x2',['../a00283.html#ga9bc0b3ab8b6ba2cb6782e179ad7ad156',1,'glm']]], ['dmat4x3',['dmat4x3',['../a00283.html#gacd18864049f8c83799babe7e596ca05b',1,'glm']]], ['dmat4x4',['dmat4x4',['../a00283.html#gad5a6484b983b74f9d801cab8bc4e6a10',1,'glm']]], ['double1',['double1',['../a00315.html#ga20b861a9b6e2a300323671c57a02525b',1,'glm']]], ['double1x1',['double1x1',['../a00315.html#ga45f16a4dd0db1f199afaed9fd12fe9a8',1,'glm']]], ['double2',['double2',['../a00315.html#ga31b729b04facccda73f07ed26958b3c2',1,'glm']]], ['double2x2',['double2x2',['../a00315.html#gae57d0201096834d25f2b91b319e7cdbd',1,'glm']]], ['double2x3',['double2x3',['../a00315.html#ga3655bc324008553ca61f39952d0b2d08',1,'glm']]], ['double2x4',['double2x4',['../a00315.html#gacd33061fc64a7b2dcfd7322c49d9557a',1,'glm']]], ['double3',['double3',['../a00315.html#ga3d8b9028a1053a44a98902cd1c389472',1,'glm']]], ['double3x2',['double3x2',['../a00315.html#ga5ec08fc39c9d783dfcc488be240fe975',1,'glm']]], ['double3x3',['double3x3',['../a00315.html#ga4bad5bb20c6ddaecfe4006c93841d180',1,'glm']]], ['double3x4',['double3x4',['../a00315.html#ga2ef022e453d663d70aec414b2a80f756',1,'glm']]], ['double4',['double4',['../a00315.html#gaf92f58af24f35617518aeb3d4f63fda6',1,'glm']]], ['double4x2',['double4x2',['../a00315.html#gabca29ccceea53669618b751aae0ba83d',1,'glm']]], ['double4x3',['double4x3',['../a00315.html#gafad66a02ccd360c86d6ab9ff9cfbc19c',1,'glm']]], ['double4x4',['double4x4',['../a00315.html#gaab541bed2e788e4537852a2492860806',1,'glm']]], ['dquat',['dquat',['../a00249.html#ga1181459aa5d640a3ea43861b118f3f0b',1,'glm']]], ['dualquat',['dualquat',['../a00317.html#gae93abee0c979902fbec6a7bee0f6fae1',1,'glm']]], ['dvec1',['dvec1',['../a00268.html#ga6221af17edc2d4477a4583d2cd53e569',1,'glm']]], ['dvec2',['dvec2',['../a00281.html#ga8b09c71aaac7da7867ae58377fe219a8',1,'glm']]], ['dvec3',['dvec3',['../a00281.html#ga5b83ae3d0fdec519c038e4d2cf967cf0',1,'glm']]], ['dvec4',['dvec4',['../a00281.html#ga57debab5d98ce618f7b2a97fe26eb3ac',1,'glm']]], ['dword',['dword',['../a00354.html#ga86e46fff9f80ae33893d8d697f2ca98a',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_3.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_3.js ================================================ var searchData= [ ['f32',['f32',['../a00304.html#gabe6a542dd6c1d5ffd847f1b9b4c9c9b7',1,'glm']]], ['f32mat1',['f32mat1',['../a00346.html#ga145ad477a2a3e152855511c3b52469a6',1,'glm::gtx']]], ['f32mat1x1',['f32mat1x1',['../a00346.html#gac88c6a4dbfc380aa26e3adbbade36348',1,'glm::gtx']]], ['f32mat2',['f32mat2',['../a00304.html#gab12383ed6ac7595ed6fde4d266c58425',1,'glm']]], ['f32mat2x2',['f32mat2x2',['../a00304.html#ga04100c76f7d55a0dd0983ccf05142bff',1,'glm']]], ['f32mat2x3',['f32mat2x3',['../a00304.html#gab256cdab5eb582e426d749ae77b5b566',1,'glm']]], ['f32mat2x4',['f32mat2x4',['../a00304.html#gaf512b74c4400b68f9fdf9388b3d6aac8',1,'glm']]], ['f32mat3',['f32mat3',['../a00304.html#ga856f3905ee7cc2e4890a8a1d56c150be',1,'glm']]], ['f32mat3x2',['f32mat3x2',['../a00304.html#ga1320a08e14fdff3821241eefab6947e9',1,'glm']]], ['f32mat3x3',['f32mat3x3',['../a00304.html#ga65261fa8a21045c8646ddff114a56174',1,'glm']]], ['f32mat3x4',['f32mat3x4',['../a00304.html#gab90ade28222f8b861d5ceaf81a3a7f5d',1,'glm']]], ['f32mat4',['f32mat4',['../a00304.html#ga99d1b85ff99956b33da7e9992aad129a',1,'glm']]], ['f32mat4x2',['f32mat4x2',['../a00304.html#ga3b32ca1e57a4ef91babbc3d35a34ea20',1,'glm']]], ['f32mat4x3',['f32mat4x3',['../a00304.html#ga239b96198771b7add8eea7e6b59840c0',1,'glm']]], ['f32mat4x4',['f32mat4x4',['../a00304.html#gaee4da0e9fbd8cfa2f89cb80889719dc3',1,'glm']]], ['f32quat',['f32quat',['../a00304.html#ga38e674196ba411d642be40c47bf33939',1,'glm']]], ['f32vec1',['f32vec1',['../a00304.html#ga701f32ab5b3fb06996b41f5c0d643805',1,'glm::f32vec1()'],['../a00346.html#ga07f8d7348eb7ae059a84c118fdfeb943',1,'glm::gtx::f32vec1()']]], ['f32vec2',['f32vec2',['../a00304.html#ga5d6c70e080409a76a257dc55bd8ea2c8',1,'glm']]], ['f32vec3',['f32vec3',['../a00304.html#gaea5c4518e175162e306d2c2b5ef5ac79',1,'glm']]], ['f32vec4',['f32vec4',['../a00304.html#ga31c6ca0e074a44007f49a9a3720b18c8',1,'glm']]], ['f64',['f64',['../a00304.html#ga1d794d240091678f602e8de225b8d8c9',1,'glm']]], ['f64mat1',['f64mat1',['../a00346.html#ga59bfa589419b5265d01314fcecd33435',1,'glm::gtx']]], ['f64mat1x1',['f64mat1x1',['../a00346.html#ga448eeb08d0b7d8c43a8b292c981955fd',1,'glm::gtx']]], ['f64mat2',['f64mat2',['../a00304.html#gad9771450a54785d13080cdde0fe20c1d',1,'glm']]], ['f64mat2x2',['f64mat2x2',['../a00304.html#ga9ec7c4c79e303c053e30729a95fb2c37',1,'glm']]], ['f64mat2x3',['f64mat2x3',['../a00304.html#gae3ab5719fc4c1e966631dbbcba8d412a',1,'glm']]], ['f64mat2x4',['f64mat2x4',['../a00304.html#gac87278e0c702ba8afff76316d4eeb769',1,'glm']]], ['f64mat3',['f64mat3',['../a00304.html#ga9b69181efbf8f37ae934f135137b29c0',1,'glm']]], ['f64mat3x2',['f64mat3x2',['../a00304.html#ga2473d8bf3f4abf967c4d0e18175be6f7',1,'glm']]], ['f64mat3x3',['f64mat3x3',['../a00304.html#ga916c1aed91cf91f7b41399ebe7c6e185',1,'glm']]], ['f64mat3x4',['f64mat3x4',['../a00304.html#gaab239fa9e35b65a67cbaa6ac082f3675',1,'glm']]], ['f64mat4',['f64mat4',['../a00304.html#ga0ecd3f4952536e5ef12702b44d2626fc',1,'glm']]], ['f64mat4x2',['f64mat4x2',['../a00304.html#gab7daf79d6bc06a68bea1c6f5e11b5512',1,'glm']]], ['f64mat4x3',['f64mat4x3',['../a00304.html#ga3e2e66ffbe341a80bc005ba2b9552110',1,'glm']]], ['f64mat4x4',['f64mat4x4',['../a00304.html#gae52e2b7077a9ff928a06ab5ce600b81e',1,'glm']]], ['f64quat',['f64quat',['../a00304.html#ga2b114a2f2af0fe1dfeb569c767822940',1,'glm']]], ['f64vec1',['f64vec1',['../a00304.html#gade502df1ce14f837fae7f60a03ddb9b0',1,'glm::f64vec1()'],['../a00346.html#gae5987a61b8c03d5c432a9e62f0b3efe1',1,'glm::gtx::f64vec1()']]], ['f64vec2',['f64vec2',['../a00304.html#gadc4e1594f9555d919131ee02b17822a2',1,'glm']]], ['f64vec3',['f64vec3',['../a00304.html#gaa7a1ddca75c5f629173bf4772db7a635',1,'glm']]], ['f64vec4',['f64vec4',['../a00304.html#ga66e92e57260bdb910609b9a56bf83e97',1,'glm']]], ['fdualquat',['fdualquat',['../a00317.html#ga237c2b9b42c9a930e49de5840ae0f930',1,'glm']]], ['float1',['float1',['../a00315.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead',1,'glm']]], ['float1x1',['float1x1',['../a00315.html#ga73720b8dc4620835b17f74d428f98c0c',1,'glm']]], ['float2',['float2',['../a00315.html#ga02d3c013982c183906c61d74aa3166ce',1,'glm']]], ['float2x2',['float2x2',['../a00315.html#ga33d43ecbb60a85a1366ff83f8a0ec85f',1,'glm']]], ['float2x3',['float2x3',['../a00315.html#ga939b0cff15cee3030f75c1b2e36f89fe',1,'glm']]], ['float2x4',['float2x4',['../a00315.html#gafec3cfd901ab334a92e0242b8f2269b4',1,'glm']]], ['float3',['float3',['../a00315.html#ga821ff110fc8533a053cbfcc93e078cc0',1,'glm']]], ['float32',['float32',['../a00304.html#gaacdc525d6f7bddb3ae95d5c311bd06a1',1,'glm']]], ['float32_5ft',['float32_t',['../a00304.html#gaa4947bc8b47c72fceea9bda730ecf603',1,'glm']]], ['float3x2',['float3x2',['../a00315.html#gaa6c69f04ba95f3faedf95dae874de576',1,'glm']]], ['float3x3',['float3x3',['../a00315.html#ga6ceb5d38a58becdf420026e12a6562f3',1,'glm']]], ['float3x4',['float3x4',['../a00315.html#ga4d2679c321b793ca3784fe0315bb5332',1,'glm']]], ['float4',['float4',['../a00315.html#gae2da7345087db3815a25d8837a727ef1',1,'glm']]], ['float4x2',['float4x2',['../a00315.html#ga308b9af0c221145bcfe9bfc129d9098e',1,'glm']]], ['float4x3',['float4x3',['../a00315.html#gac0a51b4812038aa81d73ffcc37f741ac',1,'glm']]], ['float4x4',['float4x4',['../a00315.html#gad3051649b3715d828a4ab92cdae7c3bf',1,'glm']]], ['float64',['float64',['../a00304.html#ga232fad1b0d6dcc7c16aabde98b2e2a80',1,'glm']]], ['float64_5ft',['float64_t',['../a00304.html#ga728366fef72cd96f0a5fa6429f05469e',1,'glm']]], ['fmat2',['fmat2',['../a00304.html#ga4541dc2feb2a31d6ecb5a303f3dd3280',1,'glm']]], ['fmat2x2',['fmat2x2',['../a00304.html#ga3350c93c3275298f940a42875388e4b4',1,'glm']]], ['fmat2x3',['fmat2x3',['../a00304.html#ga55a2d2a8eb09b5633668257eb3cad453',1,'glm']]], ['fmat2x4',['fmat2x4',['../a00304.html#ga681381f19f11c9e5ee45cda2c56937ff',1,'glm']]], ['fmat3',['fmat3',['../a00304.html#ga253d453c20e037730023fea0215cb6f6',1,'glm']]], ['fmat3x2',['fmat3x2',['../a00304.html#ga6af54d70d9beb0a7ef992a879e86b04f',1,'glm']]], ['fmat3x3',['fmat3x3',['../a00304.html#gaa07c86650253672a19dbfb898f3265b8',1,'glm']]], ['fmat3x4',['fmat3x4',['../a00304.html#ga44e158af77a670ee1b58c03cda9e1619',1,'glm']]], ['fmat4',['fmat4',['../a00304.html#ga8cb400c0f4438f2640035d7b9824a0ca',1,'glm']]], ['fmat4x2',['fmat4x2',['../a00304.html#ga8c8aa45aafcc23238edb1d5aeb801774',1,'glm']]], ['fmat4x3',['fmat4x3',['../a00304.html#ga4295048a78bdf46b8a7de77ec665b497',1,'glm']]], ['fmat4x4',['fmat4x4',['../a00304.html#gad01cc6479bde1fd1870f13d3ed9530b3',1,'glm']]], ['fvec1',['fvec1',['../a00304.html#ga98b9ed43cf8c5cf1d354b23c7df9119f',1,'glm']]], ['fvec2',['fvec2',['../a00304.html#ga24273aa02abaecaab7f160bac437a339',1,'glm']]], ['fvec3',['fvec3',['../a00304.html#ga89930533646b30d021759298aa6bf04a',1,'glm']]], ['fvec4',['fvec4',['../a00304.html#ga713c796c54875cf4092d42ff9d9096b0',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_4.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_4.js ================================================ var searchData= [ ['highp_5fbvec1',['highp_bvec1',['../a00266.html#gae8a1e14abae1387274f57741750c06a2',1,'glm']]], ['highp_5fbvec2',['highp_bvec2',['../a00282.html#gac6c781a85f012d77a75310a3058702c2',1,'glm']]], ['highp_5fbvec3',['highp_bvec3',['../a00282.html#gaedb70027d89a0a405046aefda4eabaa6',1,'glm']]], ['highp_5fbvec4',['highp_bvec4',['../a00282.html#gaee663ff64429443ab07a5327074192f6',1,'glm']]], ['highp_5fddualquat',['highp_ddualquat',['../a00317.html#ga8f67eafa7197d7a668dad5105a463d2a',1,'glm']]], ['highp_5fdmat2',['highp_dmat2',['../a00284.html#ga369b447bb1b312449b679ea1f90f3cea',1,'glm']]], ['highp_5fdmat2x2',['highp_dmat2x2',['../a00284.html#gae27ac20302c2e39b6c78e7fe18e62ef7',1,'glm']]], ['highp_5fdmat2x3',['highp_dmat2x3',['../a00284.html#gad4689ec33bc2c26e10132b174b49001a',1,'glm']]], ['highp_5fdmat2x4',['highp_dmat2x4',['../a00284.html#ga5ceeb46670fdc000a0701910cc5061c9',1,'glm']]], ['highp_5fdmat3',['highp_dmat3',['../a00284.html#ga86d6d4dbad92ffdcc759773340e15a97',1,'glm']]], ['highp_5fdmat3x2',['highp_dmat3x2',['../a00284.html#ga3647309010a2160e9ec89bc6f7c95c35',1,'glm']]], ['highp_5fdmat3x3',['highp_dmat3x3',['../a00284.html#gae367ea93c4ad8a7c101dd27b8b2b04ce',1,'glm']]], ['highp_5fdmat3x4',['highp_dmat3x4',['../a00284.html#ga6543eeeb64f48d79a0b96484308c50f0',1,'glm']]], ['highp_5fdmat4',['highp_dmat4',['../a00284.html#ga945254f459860741138bceb74da496b9',1,'glm']]], ['highp_5fdmat4x2',['highp_dmat4x2',['../a00284.html#gaeda1f474c668eaecc443bea85a4a4eca',1,'glm']]], ['highp_5fdmat4x3',['highp_dmat4x3',['../a00284.html#gacf237c2d8832fe8db2d7e187585d34bd',1,'glm']]], ['highp_5fdmat4x4',['highp_dmat4x4',['../a00284.html#ga118d24a3d12c034e7cccef7bf2f01b8a',1,'glm']]], ['highp_5fdquat',['highp_dquat',['../a00250.html#gaf13a25f41afc03480b40fc71bd249cec',1,'glm']]], ['highp_5fdualquat',['highp_dualquat',['../a00317.html#ga9ef5bf1da52a9d4932335a517086ceaf',1,'glm']]], ['highp_5fdvec1',['highp_dvec1',['../a00269.html#ga77c22c4426da3a6865c88d3fc907e3fe',1,'glm']]], ['highp_5fdvec2',['highp_dvec2',['../a00282.html#gab98d77cca255914f5e29697fcbc2d975',1,'glm']]], ['highp_5fdvec3',['highp_dvec3',['../a00282.html#gab24dc20dcdc5b71282634bdbf6b70105',1,'glm']]], ['highp_5fdvec4',['highp_dvec4',['../a00282.html#gab654f4ed4a99d64a6cfc65320c2a7590',1,'glm']]], ['highp_5ff32',['highp_f32',['../a00304.html#ga6906e1ef0b34064b4b675489c5c38725',1,'glm']]], ['highp_5ff32mat2',['highp_f32mat2',['../a00304.html#ga298f7d4d273678d0282812368da27fda',1,'glm']]], ['highp_5ff32mat2x2',['highp_f32mat2x2',['../a00304.html#gae5eb02d92b7d4605a4b7f37ae5cb2968',1,'glm']]], ['highp_5ff32mat2x3',['highp_f32mat2x3',['../a00304.html#ga0aeb5cb001473b08c88175012708a379',1,'glm']]], ['highp_5ff32mat2x4',['highp_f32mat2x4',['../a00304.html#ga88938ee1e7981fa3402e88da6ad74531',1,'glm']]], ['highp_5ff32mat3',['highp_f32mat3',['../a00304.html#ga24f9ef3263b1638564713892cc37981f',1,'glm']]], ['highp_5ff32mat3x2',['highp_f32mat3x2',['../a00304.html#ga36537e701456f12c20e73f469cac4967',1,'glm']]], ['highp_5ff32mat3x3',['highp_f32mat3x3',['../a00304.html#gaab691ae40c37976d268d8cac0096e0e1',1,'glm']]], ['highp_5ff32mat3x4',['highp_f32mat3x4',['../a00304.html#gaa5086dbd6efb272d13fc88829330861d',1,'glm']]], ['highp_5ff32mat4',['highp_f32mat4',['../a00304.html#ga14c90ca49885723f51d06e295587236f',1,'glm']]], ['highp_5ff32mat4x2',['highp_f32mat4x2',['../a00304.html#ga602e119c6b246b4f6edcf66845f2aa0f',1,'glm']]], ['highp_5ff32mat4x3',['highp_f32mat4x3',['../a00304.html#ga66bffdd8e5c0d3ef9958bbab9ca1ba59',1,'glm']]], ['highp_5ff32mat4x4',['highp_f32mat4x4',['../a00304.html#gaf1b712b97b2322685fbbed28febe5f84',1,'glm']]], ['highp_5ff32quat',['highp_f32quat',['../a00304.html#ga4252cf7f5b0e3cd47c3d3badf0ef43b3',1,'glm']]], ['highp_5ff32vec1',['highp_f32vec1',['../a00304.html#gab1b1c9e8667902b78b2c330e4d383a61',1,'glm']]], ['highp_5ff32vec2',['highp_f32vec2',['../a00304.html#ga0b8ebd4262331e139ff257d7cf2a4b77',1,'glm']]], ['highp_5ff32vec3',['highp_f32vec3',['../a00304.html#ga522775dbcc6d96246a1c5cf02344fd8c',1,'glm']]], ['highp_5ff32vec4',['highp_f32vec4',['../a00304.html#ga0f038d4e09862a74f03d102c59eda73e',1,'glm']]], ['highp_5ff64',['highp_f64',['../a00304.html#ga51d5266017d88f62737c1973923a7cf4',1,'glm']]], ['highp_5ff64mat2',['highp_f64mat2',['../a00304.html#gaf7adb92ce8de0afaff01436b039fd924',1,'glm']]], ['highp_5ff64mat2x2',['highp_f64mat2x2',['../a00304.html#ga773ea237a051827cfc20de960bc73ff0',1,'glm']]], ['highp_5ff64mat2x3',['highp_f64mat2x3',['../a00304.html#ga8342c7469384c6d769cacc9e309278d9',1,'glm']]], ['highp_5ff64mat2x4',['highp_f64mat2x4',['../a00304.html#ga5a67a7440b9c0d1538533540f99036a5',1,'glm']]], ['highp_5ff64mat3',['highp_f64mat3',['../a00304.html#ga609bf0ace941d6ab1bb2f9522a04e546',1,'glm']]], ['highp_5ff64mat3x2',['highp_f64mat3x2',['../a00304.html#ga5bdbfb4ce7d05ce1e1b663f50be17e8a',1,'glm']]], ['highp_5ff64mat3x3',['highp_f64mat3x3',['../a00304.html#ga7c2cadb9b85cc7e0d125db21ca19dea4',1,'glm']]], ['highp_5ff64mat3x4',['highp_f64mat3x4',['../a00304.html#gad310b1dddeec9ec837a104e7db8de580',1,'glm']]], ['highp_5ff64mat4',['highp_f64mat4',['../a00304.html#gad308e0ed27d64daa4213fb257fcbd5a5',1,'glm']]], ['highp_5ff64mat4x2',['highp_f64mat4x2',['../a00304.html#ga58c4631421e323e252fc716b6103e38c',1,'glm']]], ['highp_5ff64mat4x3',['highp_f64mat4x3',['../a00304.html#gae94823d65648e44d972863c6caa13103',1,'glm']]], ['highp_5ff64mat4x4',['highp_f64mat4x4',['../a00304.html#ga09a2374b725c4246d263ee36fb66434c',1,'glm']]], ['highp_5ff64quat',['highp_f64quat',['../a00304.html#gafcfdd74a115163af2ce1093551747352',1,'glm']]], ['highp_5ff64vec1',['highp_f64vec1',['../a00304.html#ga62c31b133ceee9984fbee05ac4c434a9',1,'glm']]], ['highp_5ff64vec2',['highp_f64vec2',['../a00304.html#ga670ea1b0a1172bc73b1d7c1e0c26cce2',1,'glm']]], ['highp_5ff64vec3',['highp_f64vec3',['../a00304.html#gacd1196090ece7a69fb5c3e43a7d4d851',1,'glm']]], ['highp_5ff64vec4',['highp_f64vec4',['../a00304.html#ga61185c44c8cc0b25d9a0f67d8a267444',1,'glm']]], ['highp_5ffdualquat',['highp_fdualquat',['../a00317.html#ga4c4e55e9c99dc57b299ed590968da564',1,'glm']]], ['highp_5ffloat32',['highp_float32',['../a00304.html#gac5a7f21136e0a78d0a1b9f60ef2f8aea',1,'glm']]], ['highp_5ffloat32_5ft',['highp_float32_t',['../a00304.html#ga5376ef18dca9d248897c3363ef5a06b2',1,'glm']]], ['highp_5ffloat64',['highp_float64',['../a00304.html#gadbb198a4d7aad82a0f4dc466ef6f6215',1,'glm']]], ['highp_5ffloat64_5ft',['highp_float64_t',['../a00304.html#gaaeeb0077198cff40e3f48b1108ece139',1,'glm']]], ['highp_5ffmat2',['highp_fmat2',['../a00304.html#gae98c88d9a7befa9b5877f49176225535',1,'glm']]], ['highp_5ffmat2x2',['highp_fmat2x2',['../a00304.html#ga28635abcddb2f3e92c33c3f0fcc682ad',1,'glm']]], ['highp_5ffmat2x3',['highp_fmat2x3',['../a00304.html#gacf111095594996fef29067b2454fccad',1,'glm']]], ['highp_5ffmat2x4',['highp_fmat2x4',['../a00304.html#ga4920a1536f161f7ded1d6909b7fef0d2',1,'glm']]], ['highp_5ffmat3',['highp_fmat3',['../a00304.html#gaed2dc69e0d507d4191092dbd44b3eb75',1,'glm']]], ['highp_5ffmat3x2',['highp_fmat3x2',['../a00304.html#gae54e4d1aeb5a0f0c64822e6f1b299e19',1,'glm']]], ['highp_5ffmat3x3',['highp_fmat3x3',['../a00304.html#gaa5b44d3ef6efcf33f44876673a7a936e',1,'glm']]], ['highp_5ffmat3x4',['highp_fmat3x4',['../a00304.html#ga961fac2a885907ffcf4d40daac6615c5',1,'glm']]], ['highp_5ffmat4',['highp_fmat4',['../a00304.html#gabf28443ce0cc0959077ec39b21f32c39',1,'glm']]], ['highp_5ffmat4x2',['highp_fmat4x2',['../a00304.html#ga076961cf2d120c7168b957cb2ed107b3',1,'glm']]], ['highp_5ffmat4x3',['highp_fmat4x3',['../a00304.html#gae406ec670f64170a7437b5e302eeb2cb',1,'glm']]], ['highp_5ffmat4x4',['highp_fmat4x4',['../a00304.html#gaee80c7cd3caa0f2635058656755f6f69',1,'glm']]], ['highp_5ffvec1',['highp_fvec1',['../a00304.html#gaa1040342c4efdedc8f90e6267db8d41c',1,'glm']]], ['highp_5ffvec2',['highp_fvec2',['../a00304.html#ga7c0d196f5fa79f7e892a2f323a0be1ae',1,'glm']]], ['highp_5ffvec3',['highp_fvec3',['../a00304.html#ga6ef77413883f48d6b53b4169b25edbd0',1,'glm']]], ['highp_5ffvec4',['highp_fvec4',['../a00304.html#ga8b839abbb44f5102609eed89f6ed61f7',1,'glm']]], ['highp_5fi16',['highp_i16',['../a00304.html#ga0336abc2604dd2c20c30e036454b64f8',1,'glm']]], ['highp_5fi16vec1',['highp_i16vec1',['../a00304.html#ga70fdfcc1fd38084bde83c3f06a8b9f19',1,'glm']]], ['highp_5fi16vec2',['highp_i16vec2',['../a00304.html#gaa7db3ad10947cf70cae6474d05ebd227',1,'glm']]], ['highp_5fi16vec3',['highp_i16vec3',['../a00304.html#ga5609c8fa2b7eac3dec337d321cb0ca96',1,'glm']]], ['highp_5fi16vec4',['highp_i16vec4',['../a00304.html#ga7a18659438828f91ccca28f1a1e067b4',1,'glm']]], ['highp_5fi32',['highp_i32',['../a00304.html#ga727675ac6b5d2fc699520e0059735e25',1,'glm']]], ['highp_5fi32vec1',['highp_i32vec1',['../a00304.html#ga6a9d71cc62745302f70422b7dc98755c',1,'glm']]], ['highp_5fi32vec2',['highp_i32vec2',['../a00304.html#gaa9b4579f8e6f3d9b649a965bcb785530',1,'glm']]], ['highp_5fi32vec3',['highp_i32vec3',['../a00304.html#ga31e070ea3bdee623e6e18a61ba5718b1',1,'glm']]], ['highp_5fi32vec4',['highp_i32vec4',['../a00304.html#gadf70eaaa230aeed5a4c9f4c9c5c55902',1,'glm']]], ['highp_5fi64',['highp_i64',['../a00304.html#gac25db6d2b1e2a0f351b77ba3409ac4cd',1,'glm']]], ['highp_5fi64vec1',['highp_i64vec1',['../a00304.html#gabd2fda3cd208acf5a370ec9b5b3c58d4',1,'glm']]], ['highp_5fi64vec2',['highp_i64vec2',['../a00304.html#gad9d1903cb20899966e8ebe0670889a5f',1,'glm']]], ['highp_5fi64vec3',['highp_i64vec3',['../a00304.html#ga62324224b9c6cce9c6b4db96bb704a8a',1,'glm']]], ['highp_5fi64vec4',['highp_i64vec4',['../a00304.html#gad23b1be9b3bf20352089a6b738f0ebba',1,'glm']]], ['highp_5fi8',['highp_i8',['../a00304.html#gacb88796f2d08ef253d0345aff20c3aee',1,'glm']]], ['highp_5fi8vec1',['highp_i8vec1',['../a00304.html#ga1d8c10949691b0fd990253476f47beb3',1,'glm']]], ['highp_5fi8vec2',['highp_i8vec2',['../a00304.html#ga50542e4cb9b2f9bec213b66e06145d07',1,'glm']]], ['highp_5fi8vec3',['highp_i8vec3',['../a00304.html#ga8396bfdc081d9113190d0c39c9f67084',1,'glm']]], ['highp_5fi8vec4',['highp_i8vec4',['../a00304.html#ga4824e3ddf6e608117dfe4809430737b4',1,'glm']]], ['highp_5fimat2',['highp_imat2',['../a00294.html#ga8499cc3b016003f835314c1c756e9db9',1,'glm']]], ['highp_5fimat2x2',['highp_imat2x2',['../a00294.html#gaa389e2d1c3b10941cae870bc0aeba5b3',1,'glm']]], ['highp_5fimat2x3',['highp_imat2x3',['../a00294.html#gaba49d890e06c9444795f5a133fbf1336',1,'glm']]], ['highp_5fimat2x4',['highp_imat2x4',['../a00294.html#ga05a970fd4366dad6c8a0be676b1eae5b',1,'glm']]], ['highp_5fimat3',['highp_imat3',['../a00294.html#gaca4506a3efa679eff7c006d9826291fd',1,'glm']]], ['highp_5fimat3x2',['highp_imat3x2',['../a00294.html#ga91c671c3ff9706c2393e78b22fd84bcb',1,'glm']]], ['highp_5fimat3x3',['highp_imat3x3',['../a00294.html#ga07d7b7173e2a6f843ff5f1c615a95b41',1,'glm']]], ['highp_5fimat3x4',['highp_imat3x4',['../a00294.html#ga53008f580be99018a17b357b5a4ffc0d',1,'glm']]], ['highp_5fimat4',['highp_imat4',['../a00294.html#ga7cfb09b34e0fcf73eaf6512d6483ef56',1,'glm']]], ['highp_5fimat4x2',['highp_imat4x2',['../a00294.html#ga1858820fb292cae396408b2034407f72',1,'glm']]], ['highp_5fimat4x3',['highp_imat4x3',['../a00294.html#ga6be0b80ae74bb309bc5b964d93d68fc5',1,'glm']]], ['highp_5fimat4x4',['highp_imat4x4',['../a00294.html#ga2c783ee6f8f040ab37df2f70392c8b44',1,'glm']]], ['highp_5fint16',['highp_int16',['../a00304.html#ga5fde0fa4a3852a9dd5d637a92ee74718',1,'glm']]], ['highp_5fint16_5ft',['highp_int16_t',['../a00304.html#gacaea06d0a79ef3172e887a7a6ba434ff',1,'glm']]], ['highp_5fint32',['highp_int32',['../a00304.html#ga84ed04b4e0de18c977e932d617e7c223',1,'glm']]], ['highp_5fint32_5ft',['highp_int32_t',['../a00304.html#ga2c71c8bd9e2fe7d2e93ca250d8b6157f',1,'glm']]], ['highp_5fint64',['highp_int64',['../a00304.html#ga226a8d52b4e3f77aaa6231135e886aac',1,'glm']]], ['highp_5fint64_5ft',['highp_int64_t',['../a00304.html#ga73c6abb280a45feeff60f9accaee91f3',1,'glm']]], ['highp_5fint8',['highp_int8',['../a00304.html#gad0549c902a96a7164e4ac858d5f39dbf',1,'glm']]], ['highp_5fint8_5ft',['highp_int8_t',['../a00304.html#ga1085c50dd8fbeb5e7e609b1c127492a5',1,'glm']]], ['highp_5fivec1',['highp_ivec1',['../a00273.html#ga7e02566f2bd2caa68e61be45a477c77e',1,'glm']]], ['highp_5fivec2',['highp_ivec2',['../a00282.html#gaa18f6b80b41c214f10666948539c1f93',1,'glm']]], ['highp_5fivec3',['highp_ivec3',['../a00282.html#ga7dd782c3ef5719bc6d5c3ca826b8ad18',1,'glm']]], ['highp_5fivec4',['highp_ivec4',['../a00282.html#gafb84dccdf5d82443df3ffc8428dcaf3e',1,'glm']]], ['highp_5fmat2',['highp_mat2',['../a00284.html#ga4d5a0055544a516237dcdace049b143d',1,'glm']]], ['highp_5fmat2x2',['highp_mat2x2',['../a00284.html#ga2352ae43b284c9f71446674c0208c05d',1,'glm']]], ['highp_5fmat2x3',['highp_mat2x3',['../a00284.html#ga7a0e3fe41512b0494e598f5c58722f19',1,'glm']]], ['highp_5fmat2x4',['highp_mat2x4',['../a00284.html#ga61f36a81f2ed1b5f9fc8bc3b26faec8f',1,'glm']]], ['highp_5fmat3',['highp_mat3',['../a00284.html#ga3fd9849f3da5ed6e3decc3fb10a20b3e',1,'glm']]], ['highp_5fmat3x2',['highp_mat3x2',['../a00284.html#ga1eda47a00027ec440eac05d63739c71b',1,'glm']]], ['highp_5fmat3x3',['highp_mat3x3',['../a00284.html#ga2ea82e12f4d7afcfce8f59894d400230',1,'glm']]], ['highp_5fmat3x4',['highp_mat3x4',['../a00284.html#ga6454b3a26ea30f69de8e44c08a63d1b7',1,'glm']]], ['highp_5fmat4',['highp_mat4',['../a00284.html#gad72e13d669d039f12ae5afa23148adc1',1,'glm']]], ['highp_5fmat4x2',['highp_mat4x2',['../a00284.html#gab68b66e6d2c37b804d0baf970fa4f0e5',1,'glm']]], ['highp_5fmat4x3',['highp_mat4x3',['../a00284.html#ga8d5a4e65fb976e4553b84995b95ecb38',1,'glm']]], ['highp_5fmat4x4',['highp_mat4x4',['../a00284.html#ga58cc504be0e3b61c48bc91554a767b9f',1,'glm']]], ['highp_5fquat',['highp_quat',['../a00253.html#gaa2fd8085774376310aeb80588e0eab6e',1,'glm']]], ['highp_5fu16',['highp_u16',['../a00304.html#ga8e62c883d13f47015f3b70ed88751369',1,'glm']]], ['highp_5fu16vec1',['highp_u16vec1',['../a00304.html#gad064202b4cf9a2972475c03de657cb39',1,'glm']]], ['highp_5fu16vec2',['highp_u16vec2',['../a00304.html#ga791b15ceb3f1e09d1a0ec6f3057ca159',1,'glm']]], ['highp_5fu16vec3',['highp_u16vec3',['../a00304.html#gacfd806749008f0ade6ac4bb9dd91082f',1,'glm']]], ['highp_5fu16vec4',['highp_u16vec4',['../a00304.html#ga8a85a3d54a8a9e14fe7a1f96196c4f61',1,'glm']]], ['highp_5fu32',['highp_u32',['../a00304.html#ga7a6f1929464dcc680b16381a4ee5f2cf',1,'glm']]], ['highp_5fu32vec1',['highp_u32vec1',['../a00304.html#ga0e35a565b9036bfc3989f5e23a0792e3',1,'glm']]], ['highp_5fu32vec2',['highp_u32vec2',['../a00304.html#ga2f256334f83fba4c2d219e414b51df6c',1,'glm']]], ['highp_5fu32vec3',['highp_u32vec3',['../a00304.html#gaf14d7a50502464e7cbfa074f24684cb1',1,'glm']]], ['highp_5fu32vec4',['highp_u32vec4',['../a00304.html#ga22166f0da65038b447f3c5e534fff1c2',1,'glm']]], ['highp_5fu64',['highp_u64',['../a00304.html#ga0c181fdf06a309691999926b6690c969',1,'glm']]], ['highp_5fu64vec1',['highp_u64vec1',['../a00304.html#gae4fe774744852c4d7d069be2e05257ab',1,'glm']]], ['highp_5fu64vec2',['highp_u64vec2',['../a00304.html#ga78f77b8b2d17b431ac5a68c0b5d7050d',1,'glm']]], ['highp_5fu64vec3',['highp_u64vec3',['../a00304.html#ga41bdabea6e589029659331ba47eb78c1',1,'glm']]], ['highp_5fu64vec4',['highp_u64vec4',['../a00304.html#ga4f15b41aa24b11cc42ad5798c04a2325',1,'glm']]], ['highp_5fu8',['highp_u8',['../a00304.html#gacd1259f3a9e8d2a9df5be2d74322ef9c',1,'glm']]], ['highp_5fu8vec1',['highp_u8vec1',['../a00304.html#ga8408cb76b6550ff01fa0a3024e7b68d2',1,'glm']]], ['highp_5fu8vec2',['highp_u8vec2',['../a00304.html#ga27585b7c3ab300059f11fcba465f6fd2',1,'glm']]], ['highp_5fu8vec3',['highp_u8vec3',['../a00304.html#ga45721c13b956eb691cbd6c6c1429167a',1,'glm']]], ['highp_5fu8vec4',['highp_u8vec4',['../a00304.html#gae0b75ad0fed8c00ddc0b5ce335d31060',1,'glm']]], ['highp_5fuint16',['highp_uint16',['../a00304.html#ga746dc6da204f5622e395f492997dbf57',1,'glm']]], ['highp_5fuint16_5ft',['highp_uint16_t',['../a00304.html#gacf54c3330ef60aa3d16cb676c7bcb8c7',1,'glm']]], ['highp_5fuint32',['highp_uint32',['../a00304.html#ga256b12b650c3f2fb86878fd1c5db8bc3',1,'glm']]], ['highp_5fuint32_5ft',['highp_uint32_t',['../a00304.html#gae978599c9711ac263ba732d4ac225b0e',1,'glm']]], ['highp_5fuint64',['highp_uint64',['../a00304.html#gaa38d732f5d4a7bc42a1b43b9d3c141ce',1,'glm']]], ['highp_5fuint64_5ft',['highp_uint64_t',['../a00304.html#gaa46172d7dc1c7ffe3e78107ff88adf08',1,'glm']]], ['highp_5fuint8',['highp_uint8',['../a00304.html#ga97432f9979e73e66567361fd01e4cffb',1,'glm']]], ['highp_5fuint8_5ft',['highp_uint8_t',['../a00304.html#gac4e00a26a2adb5f2c0a7096810df29e5',1,'glm']]], ['highp_5fumat2',['highp_umat2',['../a00294.html#ga42cbce64c4c1cd121b8437daa6e110de',1,'glm']]], ['highp_5fumat2x2',['highp_umat2x2',['../a00294.html#ga5337b7bc95f9cbac08a0c00b3f936b28',1,'glm']]], ['highp_5fumat2x3',['highp_umat2x3',['../a00294.html#ga90718c7128320b24b52f9ea70e643ad4',1,'glm']]], ['highp_5fumat2x4',['highp_umat2x4',['../a00294.html#gadca0a4724b4a6f56a2355b6f6e19248b',1,'glm']]], ['highp_5fumat3',['highp_umat3',['../a00294.html#gaa1143120339b7d2d469d327662e8a172',1,'glm']]], ['highp_5fumat3x2',['highp_umat3x2',['../a00294.html#ga844a5da2e7fc03fc7cccc7f1b70809c4',1,'glm']]], ['highp_5fumat3x3',['highp_umat3x3',['../a00294.html#ga1f7d41c36b980774a4d2e7c1647fb4b2',1,'glm']]], ['highp_5fumat3x4',['highp_umat3x4',['../a00294.html#ga25ee15c323924f2d0fe9896d329e5086',1,'glm']]], ['highp_5fumat4',['highp_umat4',['../a00294.html#gaf665e4e78c2cc32a54ab40325738f9c9',1,'glm']]], ['highp_5fumat4x2',['highp_umat4x2',['../a00294.html#gae69eb82ec08b0dc9bf2ead2a339ff801',1,'glm']]], ['highp_5fumat4x3',['highp_umat4x3',['../a00294.html#ga45a8163d02c43216252056b0c120f3a5',1,'glm']]], ['highp_5fumat4x4',['highp_umat4x4',['../a00294.html#ga6a56cbb769aed334c95241664415f9ba',1,'glm']]], ['highp_5fuvec1',['highp_uvec1',['../a00277.html#gacda57dd8c2bff4934c7f09ddd87c0f39',1,'glm']]], ['highp_5fuvec2',['highp_uvec2',['../a00282.html#gad5dd50da9e37387ca6b4e6f9c80fe6f8',1,'glm']]], ['highp_5fuvec3',['highp_uvec3',['../a00282.html#gaef61508dd40ec523416697982f9ceaae',1,'glm']]], ['highp_5fuvec4',['highp_uvec4',['../a00282.html#gaeebd7dd9f3e678691f8620241e5f9221',1,'glm']]], ['highp_5fvec1',['highp_vec1',['../a00271.html#ga9e8ed21862a897c156c0b2abca70b1e9',1,'glm']]], ['highp_5fvec2',['highp_vec2',['../a00282.html#gaa92c1954d71b1e7914874bd787b43d1c',1,'glm']]], ['highp_5fvec3',['highp_vec3',['../a00282.html#gaca61dfaccbf2f58f2d8063a4e76b44a9',1,'glm']]], ['highp_5fvec4',['highp_vec4',['../a00282.html#gad281decae52948b82feb3a9db8f63a7b',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_5.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_5.js ================================================ var searchData= [ ['i16',['i16',['../a00304.html#ga3ab5fe184343d394fb6c2723c3ee3699',1,'glm']]], ['i16vec1',['i16vec1',['../a00304.html#gafe730798732aa7b0647096a004db1b1c',1,'glm']]], ['i16vec2',['i16vec2',['../a00304.html#ga2996630ba7b10535af8e065cf326f761',1,'glm']]], ['i16vec3',['i16vec3',['../a00304.html#gae9c90a867a6026b1f6eab00456f3fb8b',1,'glm']]], ['i16vec4',['i16vec4',['../a00304.html#ga550831bfc26d1e0101c1cb3d79938c06',1,'glm']]], ['i32',['i32',['../a00304.html#ga96faea43ac5f875d2d3ffbf8d213e3eb',1,'glm']]], ['i32vec1',['i32vec1',['../a00304.html#ga54b8a4e0f5a7203a821bf8e9c1265bcf',1,'glm']]], ['i32vec2',['i32vec2',['../a00304.html#ga8b44026374982dcd1e52d22bac99247e',1,'glm']]], ['i32vec3',['i32vec3',['../a00304.html#ga7f526b5cccef126a2ebcf9bdd890394e',1,'glm']]], ['i32vec4',['i32vec4',['../a00304.html#ga866a05905c49912309ed1fa5f5980e61',1,'glm']]], ['i64',['i64',['../a00304.html#gadb997e409103d4da18abd837e636a496',1,'glm']]], ['i64vec1',['i64vec1',['../a00304.html#ga2b65767f8b5aed1bd1cf86c541662b50',1,'glm']]], ['i64vec2',['i64vec2',['../a00304.html#ga48310188e1d0c616bf8d78c92447523b',1,'glm']]], ['i64vec3',['i64vec3',['../a00304.html#ga667948cfe6fb3d6606c750729ec49f77',1,'glm']]], ['i64vec4',['i64vec4',['../a00304.html#gaa4e31c3d9de067029efeb161a44b0232',1,'glm']]], ['i8',['i8',['../a00304.html#ga302ec977b0c0c3ea245b6c9275495355',1,'glm']]], ['i8vec1',['i8vec1',['../a00304.html#ga7e80d927ff0a3861ced68dfff8a4020b',1,'glm']]], ['i8vec2',['i8vec2',['../a00304.html#gad06935764d78f43f9d542c784c2212ec',1,'glm']]], ['i8vec3',['i8vec3',['../a00304.html#ga5a08d36cf7917cd19d081a603d0eae3e',1,'glm']]], ['i8vec4',['i8vec4',['../a00304.html#ga4177a44206121dabc8c4ff1c0f544574',1,'glm']]], ['imat2',['imat2',['../a00294.html#gaabe04f9948d4a213bb1c20137de03e01',1,'glm']]], ['imat2x2',['imat2x2',['../a00294.html#gaa4732a240522ad9bc28144fda2fc14ec',1,'glm']]], ['imat2x3',['imat2x3',['../a00294.html#ga3f42dd3d5d94a0fd5706f7ec8dd0c605',1,'glm']]], ['imat2x4',['imat2x4',['../a00294.html#ga9d8faafdca42583d67e792dd038fc668',1,'glm']]], ['imat3',['imat3',['../a00294.html#ga038f68437155ffa3c2583a15264a8195',1,'glm']]], ['imat3x2',['imat3x2',['../a00294.html#ga7b33bbe4f12c060892bd3cc8d4cd737f',1,'glm']]], ['imat3x3',['imat3x3',['../a00294.html#ga6aacc960f62e8f7d2fe9d32d5050e7a4',1,'glm']]], ['imat3x4',['imat3x4',['../a00294.html#ga6e9ce23496d8b08dfc302d4039694b58',1,'glm']]], ['imat4',['imat4',['../a00294.html#ga96b0d26a33b81bb6a60ca0f39682f7eb',1,'glm']]], ['imat4x2',['imat4x2',['../a00294.html#ga8ce7ef51d8b2c1901fa5414deccbc3fa',1,'glm']]], ['imat4x3',['imat4x3',['../a00294.html#ga705ee0bf49d6c3de4404ce2481bf0df5',1,'glm']]], ['imat4x4',['imat4x4',['../a00294.html#ga43ed5e4f475b6f4cad7cba78f29c405b',1,'glm']]], ['int1',['int1',['../a00315.html#ga0670a2111b5e4a6410bd027fa0232fc3',1,'glm']]], ['int16',['int16',['../a00260.html#ga259fa4834387bd68627ddf37bb3ebdb9',1,'glm']]], ['int16_5ft',['int16_t',['../a00304.html#gae8f5e3e964ca2ae240adc2c0d74adede',1,'glm']]], ['int1x1',['int1x1',['../a00315.html#ga056ffe02d3a45af626f8e62221881c7a',1,'glm']]], ['int2',['int2',['../a00315.html#gafe3a8fd56354caafe24bfe1b1e3ad22a',1,'glm']]], ['int2x2',['int2x2',['../a00315.html#ga4e5ce477c15836b21e3c42daac68554d',1,'glm']]], ['int2x3',['int2x3',['../a00315.html#ga197ded5ad8354f6b6fb91189d7a269b3',1,'glm']]], ['int2x4',['int2x4',['../a00315.html#ga2749d59a7fddbac44f34ba78e57ef807',1,'glm']]], ['int3',['int3',['../a00315.html#ga909c38a425f215a50c847145d7da09f0',1,'glm']]], ['int32',['int32',['../a00260.html#ga43d43196463bde49cb067f5c20ab8481',1,'glm']]], ['int32_5ft',['int32_t',['../a00304.html#ga042ef09ff2f0cb24a36f541bcb3a3710',1,'glm']]], ['int3x2',['int3x2',['../a00315.html#gaa4cbe16a92cf3664376c7a2fc5126aa8',1,'glm']]], ['int3x3',['int3x3',['../a00315.html#ga15c9649286f0bf431bdf9b3509580048',1,'glm']]], ['int3x4',['int3x4',['../a00315.html#gaacac46ddc7d15d0f9529d05c92946a0f',1,'glm']]], ['int4',['int4',['../a00315.html#gaecdef18c819c205aeee9f94dc93de56a',1,'glm']]], ['int4x2',['int4x2',['../a00315.html#ga97a39dd9bc7d572810d80b8467cbffa1',1,'glm']]], ['int4x3',['int4x3',['../a00315.html#gae4a2c53f14aeec9a17c2b81142b7e82d',1,'glm']]], ['int4x4',['int4x4',['../a00315.html#ga04dee1552424198b8f58b377c2ee00d8',1,'glm']]], ['int64',['int64',['../a00260.html#gaff5189f97f9e842d9636a0f240001b2e',1,'glm']]], ['int64_5ft',['int64_t',['../a00304.html#ga322a7d7d2c2c68994dc872a33de63c61',1,'glm']]], ['int8',['int8',['../a00260.html#ga1b956fe1df85f3c132b21edb4e116458',1,'glm']]], ['int8_5ft',['int8_t',['../a00304.html#ga4bf09d8838a86866b39ee6e109341645',1,'glm']]], ['ivec1',['ivec1',['../a00272.html#gaedd0562c2e77714929d7723a7e2e0dba',1,'glm']]], ['ivec2',['ivec2',['../a00281.html#ga6f9269106d91b2d2b91bcf27cd5f5560',1,'glm']]], ['ivec3',['ivec3',['../a00281.html#gad0d784d8eee201aca362484d2daee46c',1,'glm']]], ['ivec4',['ivec4',['../a00281.html#ga5abb4603dae0ce58c595e66d9123d812',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_6.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_6.js ================================================ var searchData= [ ['lowp_5fbvec1',['lowp_bvec1',['../a00266.html#ga24a3d364e2ddd444f5b9e7975bbef8f9',1,'glm']]], ['lowp_5fbvec2',['lowp_bvec2',['../a00282.html#ga5a5452140650988b94d5716e4d872465',1,'glm']]], ['lowp_5fbvec3',['lowp_bvec3',['../a00282.html#ga79e0922a977662a8fd39d7829be3908b',1,'glm']]], ['lowp_5fbvec4',['lowp_bvec4',['../a00282.html#ga15ac87724048ab7169bb5d3572939dd3',1,'glm']]], ['lowp_5fddualquat',['lowp_ddualquat',['../a00317.html#gab4c5103338af3dac7e0fbc86895a3f1a',1,'glm']]], ['lowp_5fdmat2',['lowp_dmat2',['../a00284.html#gad8e2727a6e7aa68280245bb0022118e1',1,'glm']]], ['lowp_5fdmat2x2',['lowp_dmat2x2',['../a00284.html#gac61b94f5d9775f83f321bac899322fe2',1,'glm']]], ['lowp_5fdmat2x3',['lowp_dmat2x3',['../a00284.html#gaf6bf2f5bde7ad5b9c289f777b93094af',1,'glm']]], ['lowp_5fdmat2x4',['lowp_dmat2x4',['../a00284.html#ga97507a31ecee8609887d0f23bbde92c7',1,'glm']]], ['lowp_5fdmat3',['lowp_dmat3',['../a00284.html#ga0cab80beee64a5f8d2ae4e823983063a',1,'glm']]], ['lowp_5fdmat3x2',['lowp_dmat3x2',['../a00284.html#ga1e0ea3fba496bc7c6f620d2590acb66b',1,'glm']]], ['lowp_5fdmat3x3',['lowp_dmat3x3',['../a00284.html#gac017848a9df570f60916a21a297b1e8e',1,'glm']]], ['lowp_5fdmat3x4',['lowp_dmat3x4',['../a00284.html#ga93add35d2a44c5830978b827e8c295e8',1,'glm']]], ['lowp_5fdmat4',['lowp_dmat4',['../a00284.html#ga708bc5b91bbfedd21debac8dcf2a64cd',1,'glm']]], ['lowp_5fdmat4x2',['lowp_dmat4x2',['../a00284.html#ga382dc5295cead78766239a8457abfa98',1,'glm']]], ['lowp_5fdmat4x3',['lowp_dmat4x3',['../a00284.html#ga3d7ea07da7c6e5c81a3f4c8b3d44056e',1,'glm']]], ['lowp_5fdmat4x4',['lowp_dmat4x4',['../a00284.html#ga5b0413198b7e9f061f7534a221c9dac9',1,'glm']]], ['lowp_5fdquat',['lowp_dquat',['../a00250.html#ga9e6e5f42e67dd5877350ba485c191f1c',1,'glm']]], ['lowp_5fdualquat',['lowp_dualquat',['../a00317.html#gade05d29ebd4deea0f883d0e1bb4169aa',1,'glm']]], ['lowp_5fdvec1',['lowp_dvec1',['../a00269.html#gaf906eb86b6e96c35138d0e4928e1435a',1,'glm']]], ['lowp_5fdvec2',['lowp_dvec2',['../a00282.html#ga108086730d086b7f6f7a033955dfb9c3',1,'glm']]], ['lowp_5fdvec3',['lowp_dvec3',['../a00282.html#ga42c518b2917e19ce6946a84c64a3a4b2',1,'glm']]], ['lowp_5fdvec4',['lowp_dvec4',['../a00282.html#ga0b4432cb8d910e406576d10d802e190d',1,'glm']]], ['lowp_5ff32',['lowp_f32',['../a00304.html#gaeea53879fc327293cf3352a409b7867b',1,'glm']]], ['lowp_5ff32mat2',['lowp_f32mat2',['../a00304.html#ga52409bc6d4a2ce3421526c069220d685',1,'glm']]], ['lowp_5ff32mat2x2',['lowp_f32mat2x2',['../a00304.html#ga1d091b6abfba1772450e1745a06525bc',1,'glm']]], ['lowp_5ff32mat2x3',['lowp_f32mat2x3',['../a00304.html#ga961ccb34cd1a5654c772c8709e001dc5',1,'glm']]], ['lowp_5ff32mat2x4',['lowp_f32mat2x4',['../a00304.html#gacc6bf0209dda0c7c14851a646071c974',1,'glm']]], ['lowp_5ff32mat3',['lowp_f32mat3',['../a00304.html#ga4187f89f196505b40e63f516139511e5',1,'glm']]], ['lowp_5ff32mat3x2',['lowp_f32mat3x2',['../a00304.html#gac53f9d7ab04eace67adad026092fb1e8',1,'glm']]], ['lowp_5ff32mat3x3',['lowp_f32mat3x3',['../a00304.html#ga841211b641cff1fcf861bdb14e5e4abc',1,'glm']]], ['lowp_5ff32mat3x4',['lowp_f32mat3x4',['../a00304.html#ga21b1b22dec013a72656e3644baf8a1e1',1,'glm']]], ['lowp_5ff32mat4',['lowp_f32mat4',['../a00304.html#ga766aed2871e6173a81011a877f398f04',1,'glm']]], ['lowp_5ff32mat4x2',['lowp_f32mat4x2',['../a00304.html#gae6f3fcb702a666de07650c149cfa845a',1,'glm']]], ['lowp_5ff32mat4x3',['lowp_f32mat4x3',['../a00304.html#gac21eda58a1475449a5709b412ebd776c',1,'glm']]], ['lowp_5ff32mat4x4',['lowp_f32mat4x4',['../a00304.html#ga4143d129898f91545948c46859adce44',1,'glm']]], ['lowp_5ff32quat',['lowp_f32quat',['../a00304.html#gaa3ba60ef8f69c6aeb1629594eaa95347',1,'glm']]], ['lowp_5ff32vec1',['lowp_f32vec1',['../a00304.html#ga43e5b41c834fcaf4db5a831c0e28128e',1,'glm']]], ['lowp_5ff32vec2',['lowp_f32vec2',['../a00304.html#gaf3b694b2b8ded7e0b9f07b061917e1a0',1,'glm']]], ['lowp_5ff32vec3',['lowp_f32vec3',['../a00304.html#gaf739a2cd7b81783a43148b53e40d983b',1,'glm']]], ['lowp_5ff32vec4',['lowp_f32vec4',['../a00304.html#ga4e2e1debe022074ab224c9faf856d374',1,'glm']]], ['lowp_5ff64',['lowp_f64',['../a00304.html#gabc7a97c07cbfac8e35eb5e63beb4b679',1,'glm']]], ['lowp_5ff64mat2',['lowp_f64mat2',['../a00304.html#gafc730f6b4242763b0eda0ffa25150292',1,'glm']]], ['lowp_5ff64mat2x2',['lowp_f64mat2x2',['../a00304.html#ga771fda9109933db34f808d92b9b84d7e',1,'glm']]], ['lowp_5ff64mat2x3',['lowp_f64mat2x3',['../a00304.html#ga39e90adcffe33264bd608fa9c6bd184b',1,'glm']]], ['lowp_5ff64mat2x4',['lowp_f64mat2x4',['../a00304.html#ga50265a202fbfe0a25fc70066c31d9336',1,'glm']]], ['lowp_5ff64mat3',['lowp_f64mat3',['../a00304.html#ga58119a41d143ebaea0df70fe882e8a40',1,'glm']]], ['lowp_5ff64mat3x2',['lowp_f64mat3x2',['../a00304.html#gab0eb2d65514ee3e49905aa2caad8c0ad',1,'glm']]], ['lowp_5ff64mat3x3',['lowp_f64mat3x3',['../a00304.html#gac8f8a12ee03105ef8861dc652434e3b7',1,'glm']]], ['lowp_5ff64mat3x4',['lowp_f64mat3x4',['../a00304.html#gade8d1edfb23996ab6c622e65e3893271',1,'glm']]], ['lowp_5ff64mat4',['lowp_f64mat4',['../a00304.html#ga7451266e67794bd1125163502bc4a570',1,'glm']]], ['lowp_5ff64mat4x2',['lowp_f64mat4x2',['../a00304.html#gab0cecb80fd106bc369b9e46a165815ce',1,'glm']]], ['lowp_5ff64mat4x3',['lowp_f64mat4x3',['../a00304.html#gae731613b25db3a5ef5a05d21e57a57d3',1,'glm']]], ['lowp_5ff64mat4x4',['lowp_f64mat4x4',['../a00304.html#ga8c9cd734e03cd49674f3e287aa4a6f95',1,'glm']]], ['lowp_5ff64quat',['lowp_f64quat',['../a00304.html#gaa3ee2bc4af03cc06578b66b3e3f878ae',1,'glm']]], ['lowp_5ff64vec1',['lowp_f64vec1',['../a00304.html#gaf2d02c5f4d59135b9bc524fe317fd26b',1,'glm']]], ['lowp_5ff64vec2',['lowp_f64vec2',['../a00304.html#ga4e641a54d70c81eabf56c25c966d04bd',1,'glm']]], ['lowp_5ff64vec3',['lowp_f64vec3',['../a00304.html#gae7a4711107b7d078fc5f03ce2227b90b',1,'glm']]], ['lowp_5ff64vec4',['lowp_f64vec4',['../a00304.html#gaa666bb9e6d204d3bea0b3a39a3a335f4',1,'glm']]], ['lowp_5ffdualquat',['lowp_fdualquat',['../a00317.html#gaa38f671be25a7f3b136a452a8bb42860',1,'glm']]], ['lowp_5ffloat32',['lowp_float32',['../a00304.html#ga41b0d390bd8cc827323b1b3816ff4bf8',1,'glm']]], ['lowp_5ffloat32_5ft',['lowp_float32_t',['../a00304.html#gaea881cae4ddc6c0fbf7cc5b08177ca5b',1,'glm']]], ['lowp_5ffloat64',['lowp_float64',['../a00304.html#ga3714dab2c16a6545a405cb0c3b3aaa6f',1,'glm']]], ['lowp_5ffloat64_5ft',['lowp_float64_t',['../a00304.html#ga7286a37076a09da140df18bfa75d4e38',1,'glm']]], ['lowp_5ffmat2',['lowp_fmat2',['../a00304.html#ga5bba0ce31210e274f73efacd3364c03f',1,'glm']]], ['lowp_5ffmat2x2',['lowp_fmat2x2',['../a00304.html#gab0feb11edd0d3ab3e8ed996d349a5066',1,'glm']]], ['lowp_5ffmat2x3',['lowp_fmat2x3',['../a00304.html#ga71cdb53801ed4c3aadb3603c04723210',1,'glm']]], ['lowp_5ffmat2x4',['lowp_fmat2x4',['../a00304.html#gaab217601c74974a84acbca428123ecf7',1,'glm']]], ['lowp_5ffmat3',['lowp_fmat3',['../a00304.html#ga83079315e230e8f39728f4bf0d2f9a9b',1,'glm']]], ['lowp_5ffmat3x2',['lowp_fmat3x2',['../a00304.html#ga49b98e7d71804af45d86886a489e633c',1,'glm']]], ['lowp_5ffmat3x3',['lowp_fmat3x3',['../a00304.html#gaba56275dd04a7a61560b0e8fa5d365b4',1,'glm']]], ['lowp_5ffmat3x4',['lowp_fmat3x4',['../a00304.html#ga28733aec7288191b314d42154fd0b690',1,'glm']]], ['lowp_5ffmat4',['lowp_fmat4',['../a00304.html#ga5803cb9ae26399762d8bba9e0b2fc09f',1,'glm']]], ['lowp_5ffmat4x2',['lowp_fmat4x2',['../a00304.html#ga5868c2dcce41cc3ea5edcaeae239f62c',1,'glm']]], ['lowp_5ffmat4x3',['lowp_fmat4x3',['../a00304.html#ga5e649bbdb135fbcb4bfe950f4c73a444',1,'glm']]], ['lowp_5ffmat4x4',['lowp_fmat4x4',['../a00304.html#gac2f5263708ac847b361a9841e74ddf9f',1,'glm']]], ['lowp_5ffvec1',['lowp_fvec1',['../a00304.html#ga346b2336fff168a7e0df1583aae3e5a5',1,'glm']]], ['lowp_5ffvec2',['lowp_fvec2',['../a00304.html#ga62a32c31f4e2e8ca859663b6e3289a2d',1,'glm']]], ['lowp_5ffvec3',['lowp_fvec3',['../a00304.html#ga40b5c557efebb5bb99d6b9aa81095afa',1,'glm']]], ['lowp_5ffvec4',['lowp_fvec4',['../a00304.html#ga755484ffbe39ae3db2875953ed04e7b7',1,'glm']]], ['lowp_5fi16',['lowp_i16',['../a00304.html#ga392b673fd10847bfb78fb808c6cf8ff7',1,'glm']]], ['lowp_5fi16vec1',['lowp_i16vec1',['../a00304.html#ga501a2f313f1c220eef4ab02bdabdc3c6',1,'glm']]], ['lowp_5fi16vec2',['lowp_i16vec2',['../a00304.html#ga7cac84b520a6b57f2fbd880d3d63c51b',1,'glm']]], ['lowp_5fi16vec3',['lowp_i16vec3',['../a00304.html#gab69ef9cbc2a9214bf5596c528c801b72',1,'glm']]], ['lowp_5fi16vec4',['lowp_i16vec4',['../a00304.html#ga1d47d94d17c2406abdd1f087a816e387',1,'glm']]], ['lowp_5fi32',['lowp_i32',['../a00304.html#ga7ff73a45cea9613ebf1a9fad0b9f82ac',1,'glm']]], ['lowp_5fi32vec1',['lowp_i32vec1',['../a00304.html#gae31ac3608cf643ceffd6554874bec4a0',1,'glm']]], ['lowp_5fi32vec2',['lowp_i32vec2',['../a00304.html#ga867a3c2d99ab369a454167d2c0a24dbd',1,'glm']]], ['lowp_5fi32vec3',['lowp_i32vec3',['../a00304.html#ga5fe17c87ede1b1b4d92454cff4da076d',1,'glm']]], ['lowp_5fi32vec4',['lowp_i32vec4',['../a00304.html#gac9b2eb4296ffe50a32eacca9ed932c08',1,'glm']]], ['lowp_5fi64',['lowp_i64',['../a00304.html#ga354736e0c645099cd44c42fb2f87c2b8',1,'glm']]], ['lowp_5fi64vec1',['lowp_i64vec1',['../a00304.html#gab0f7d875db5f3cc9f3168c5a0ed56437',1,'glm']]], ['lowp_5fi64vec2',['lowp_i64vec2',['../a00304.html#gab485c48f06a4fdd6b8d58d343bb49f3c',1,'glm']]], ['lowp_5fi64vec3',['lowp_i64vec3',['../a00304.html#ga5cb1dc9e8d300c2cdb0d7ff2308fa36c',1,'glm']]], ['lowp_5fi64vec4',['lowp_i64vec4',['../a00304.html#gabb4229a4c1488bf063eed0c45355bb9c',1,'glm']]], ['lowp_5fi8',['lowp_i8',['../a00304.html#ga552a6bde5e75984efb0f863278da2e54',1,'glm']]], ['lowp_5fi8vec1',['lowp_i8vec1',['../a00304.html#ga036d6c7ca9fbbdc5f3871bfcb937c85c',1,'glm']]], ['lowp_5fi8vec2',['lowp_i8vec2',['../a00304.html#gac03e5099d27eeaa74b6016ea435a1df2',1,'glm']]], ['lowp_5fi8vec3',['lowp_i8vec3',['../a00304.html#gae2f43ace6b5b33ab49516d9e40af1845',1,'glm']]], ['lowp_5fi8vec4',['lowp_i8vec4',['../a00304.html#ga6d388e9b9aa1b389f0672d9c7dfc61c5',1,'glm']]], ['lowp_5fimat2',['lowp_imat2',['../a00294.html#gaa0bff0be804142bb16d441aec0a7962e',1,'glm']]], ['lowp_5fimat2x2',['lowp_imat2x2',['../a00294.html#ga92b95b679975d408645547ab45a8dcd8',1,'glm']]], ['lowp_5fimat2x3',['lowp_imat2x3',['../a00294.html#ga8c9e7a388f8e7c52f1e6857dee8afb65',1,'glm']]], ['lowp_5fimat2x4',['lowp_imat2x4',['../a00294.html#ga9cc13bd1f8dd2933e9fa31fe3f70e16e',1,'glm']]], ['lowp_5fimat3',['lowp_imat3',['../a00294.html#ga69bfe668f4170379fc1f35d82b060c43',1,'glm']]], ['lowp_5fimat3x2',['lowp_imat3x2',['../a00294.html#ga33db8f27491d30906cd37c0d86b3f432',1,'glm']]], ['lowp_5fimat3x3',['lowp_imat3x3',['../a00294.html#ga664f061df00020048c3f8530329ace45',1,'glm']]], ['lowp_5fimat3x4',['lowp_imat3x4',['../a00294.html#ga9273faab33623d944af4080befbb2c80',1,'glm']]], ['lowp_5fimat4',['lowp_imat4',['../a00294.html#gad1e77f7270cad461ca4fcb4c3ec2e98c',1,'glm']]], ['lowp_5fimat4x2',['lowp_imat4x2',['../a00294.html#ga26ec1a2ba08a1488f5f05336858a0f09',1,'glm']]], ['lowp_5fimat4x3',['lowp_imat4x3',['../a00294.html#ga8f40483a3ae634ead8ad22272c543a33',1,'glm']]], ['lowp_5fimat4x4',['lowp_imat4x4',['../a00294.html#gaf65677e53ac8e31a107399340d5e2451',1,'glm']]], ['lowp_5fint16',['lowp_int16',['../a00304.html#ga698e36b01167fc0f037889334dce8def',1,'glm']]], ['lowp_5fint16_5ft',['lowp_int16_t',['../a00304.html#ga8b2cd8d31eb345b2d641d9261c38db1a',1,'glm']]], ['lowp_5fint32',['lowp_int32',['../a00304.html#ga864aabca5f3296e176e0c3ed9cc16b02',1,'glm']]], ['lowp_5fint32_5ft',['lowp_int32_t',['../a00304.html#ga0350631d35ff800e6133ac6243b13cbc',1,'glm']]], ['lowp_5fint64',['lowp_int64',['../a00304.html#gaf645b1a60203b39c0207baff5e3d8c3c',1,'glm']]], ['lowp_5fint64_5ft',['lowp_int64_t',['../a00304.html#gaebf341fc4a5be233f7dde962c2e33847',1,'glm']]], ['lowp_5fint8',['lowp_int8',['../a00304.html#ga760bcf26fdb23a2c3ecad3c928a19ae6',1,'glm']]], ['lowp_5fint8_5ft',['lowp_int8_t',['../a00304.html#ga119c41d73fe9977358174eb3ac1035a3',1,'glm']]], ['lowp_5fivec1',['lowp_ivec1',['../a00273.html#ga836dbb1dc516c233b7f5fe9763bc15dc',1,'glm']]], ['lowp_5fivec2',['lowp_ivec2',['../a00282.html#ga8433c6c1fdd80c0a83941d94aff73fa0',1,'glm']]], ['lowp_5fivec3',['lowp_ivec3',['../a00282.html#gac1a86a75b3c68ebb704d7094043669d6',1,'glm']]], ['lowp_5fivec4',['lowp_ivec4',['../a00282.html#ga27fc23da61859cd6356326c5f1c796de',1,'glm']]], ['lowp_5fmat2',['lowp_mat2',['../a00284.html#gae400c4ce1f5f3e1fa12861b2baed331a',1,'glm']]], ['lowp_5fmat2x2',['lowp_mat2x2',['../a00284.html#ga2df7cdaf9a571ce7a1b09435f502c694',1,'glm']]], ['lowp_5fmat2x3',['lowp_mat2x3',['../a00284.html#ga3eee3a74d0f1de8635d846dfb29ec4bb',1,'glm']]], ['lowp_5fmat2x4',['lowp_mat2x4',['../a00284.html#gade27f8324a16626cbce5d3e7da66b070',1,'glm']]], ['lowp_5fmat3',['lowp_mat3',['../a00284.html#ga6271ebc85ed778ccc15458c3d86fc854',1,'glm']]], ['lowp_5fmat3x2',['lowp_mat3x2',['../a00284.html#gaabf6cf90fd31efe25c94965507e98390',1,'glm']]], ['lowp_5fmat3x3',['lowp_mat3x3',['../a00284.html#ga63362cb4a63fc1be7d2e49cd5d574c84',1,'glm']]], ['lowp_5fmat3x4',['lowp_mat3x4',['../a00284.html#gac5fc6786688eff02904ca5e7d6960092',1,'glm']]], ['lowp_5fmat4',['lowp_mat4',['../a00284.html#ga2dedee030500865267cd5851c00c139d',1,'glm']]], ['lowp_5fmat4x2',['lowp_mat4x2',['../a00284.html#gafa3cdb8f24d09d761ec9ae2a4c7e5e21',1,'glm']]], ['lowp_5fmat4x3',['lowp_mat4x3',['../a00284.html#ga534c3ef5c3b8fdd8656b6afc205b4b77',1,'glm']]], ['lowp_5fmat4x4',['lowp_mat4x4',['../a00284.html#ga686468a9a815bd4db8cddae42a6d6b87',1,'glm']]], ['lowp_5fquat',['lowp_quat',['../a00253.html#gade62c5316c1c11a79c34c00c189558eb',1,'glm']]], ['lowp_5fu16',['lowp_u16',['../a00304.html#ga504ce1631cb2ac02fcf1d44d8c2aa126',1,'glm']]], ['lowp_5fu16vec1',['lowp_u16vec1',['../a00304.html#gaa6aab4ee7189b86716f5d7015d43021d',1,'glm']]], ['lowp_5fu16vec2',['lowp_u16vec2',['../a00304.html#ga2a7d997da9ac29cb931e35bd399f58df',1,'glm']]], ['lowp_5fu16vec3',['lowp_u16vec3',['../a00304.html#gac0253db6c3d3bae1f591676307a9dd8c',1,'glm']]], ['lowp_5fu16vec4',['lowp_u16vec4',['../a00304.html#gaa7f00459b9a2e5b2757e70afc0c189e1',1,'glm']]], ['lowp_5fu32',['lowp_u32',['../a00304.html#ga4f072ada9552e1e480bbb3b1acde5250',1,'glm']]], ['lowp_5fu32vec1',['lowp_u32vec1',['../a00304.html#gabed3be8dfdc4a0df4bf3271dbd7344c4',1,'glm']]], ['lowp_5fu32vec2',['lowp_u32vec2',['../a00304.html#gaf7e286e81347011e257ee779524e73b9',1,'glm']]], ['lowp_5fu32vec3',['lowp_u32vec3',['../a00304.html#gad3ad390560a671b1f676fbf03cd3aa15',1,'glm']]], ['lowp_5fu32vec4',['lowp_u32vec4',['../a00304.html#ga4502885718742aa238c36a312c3f3f20',1,'glm']]], ['lowp_5fu64',['lowp_u64',['../a00304.html#ga30069d1f02b19599cbfadf98c23ac6ed',1,'glm']]], ['lowp_5fu64vec1',['lowp_u64vec1',['../a00304.html#ga859be7b9d3a3765c1cafc14dbcf249a6',1,'glm']]], ['lowp_5fu64vec2',['lowp_u64vec2',['../a00304.html#ga581485db4ba6ddb501505ee711fd8e42',1,'glm']]], ['lowp_5fu64vec3',['lowp_u64vec3',['../a00304.html#gaa4a8682bec7ec8af666ef87fae38d5d1',1,'glm']]], ['lowp_5fu64vec4',['lowp_u64vec4',['../a00304.html#ga6fccc89c34045c86339f6fa781ce96de',1,'glm']]], ['lowp_5fu8',['lowp_u8',['../a00304.html#ga1b09f03da7ac43055c68a349d5445083',1,'glm']]], ['lowp_5fu8vec1',['lowp_u8vec1',['../a00304.html#ga4b2e0e10d8d154fec9cab50e216588ec',1,'glm']]], ['lowp_5fu8vec2',['lowp_u8vec2',['../a00304.html#gae6f63fa38635431e51a8f2602f15c566',1,'glm']]], ['lowp_5fu8vec3',['lowp_u8vec3',['../a00304.html#ga150dc47e31c6b8cf8461803c8d56f7bd',1,'glm']]], ['lowp_5fu8vec4',['lowp_u8vec4',['../a00304.html#ga9910927f3a4d1addb3da6a82542a8287',1,'glm']]], ['lowp_5fuint16',['lowp_uint16',['../a00304.html#gad68bfd9f881856fc863a6ebca0b67f78',1,'glm']]], ['lowp_5fuint16_5ft',['lowp_uint16_t',['../a00304.html#ga91c4815f93177eb423362fd296a87e9f',1,'glm']]], ['lowp_5fuint32',['lowp_uint32',['../a00304.html#gaa6a5b461bbf5fe20982472aa51896d4b',1,'glm']]], ['lowp_5fuint32_5ft',['lowp_uint32_t',['../a00304.html#gaf1b735b4b1145174f4e4167d13778f9b',1,'glm']]], ['lowp_5fuint64',['lowp_uint64',['../a00304.html#gaa212b805736a759998e312cbdd550fae',1,'glm']]], ['lowp_5fuint64_5ft',['lowp_uint64_t',['../a00304.html#ga8dd3a3281ae5c970ffe0c41d538aa153',1,'glm']]], ['lowp_5fuint8',['lowp_uint8',['../a00304.html#gaf49470869e9be2c059629b250619804e',1,'glm']]], ['lowp_5fuint8_5ft',['lowp_uint8_t',['../a00304.html#ga667b2ece2b258be898812dc2177995d1',1,'glm']]], ['lowp_5fumat2',['lowp_umat2',['../a00294.html#gaf2fba702d990437fc88ff3f3a76846ee',1,'glm']]], ['lowp_5fumat2x2',['lowp_umat2x2',['../a00294.html#ga7b2e9d89745f7175051284e54c81d81c',1,'glm']]], ['lowp_5fumat2x3',['lowp_umat2x3',['../a00294.html#ga3072f90fd86f17a862e21589fbb14c0f',1,'glm']]], ['lowp_5fumat2x4',['lowp_umat2x4',['../a00294.html#ga8bb45fec4bd77bd81b4ae7eb961a270d',1,'glm']]], ['lowp_5fumat3',['lowp_umat3',['../a00294.html#gaf1145f72bcdd590f5808c4bc170c2924',1,'glm']]], ['lowp_5fumat3x2',['lowp_umat3x2',['../a00294.html#ga56ea68c6a6cba8d8c21d17bb14e69c6b',1,'glm']]], ['lowp_5fumat3x3',['lowp_umat3x3',['../a00294.html#ga4f660a39a395cc14f018f985e7dfbeb5',1,'glm']]], ['lowp_5fumat3x4',['lowp_umat3x4',['../a00294.html#gaec3d624306bd59649f021864709d56b5',1,'glm']]], ['lowp_5fumat4',['lowp_umat4',['../a00294.html#gac092c6105827bf9ea080db38074b78eb',1,'glm']]], ['lowp_5fumat4x2',['lowp_umat4x2',['../a00294.html#ga7716c2b210d141846f1ac4e774adef5e',1,'glm']]], ['lowp_5fumat4x3',['lowp_umat4x3',['../a00294.html#ga09ab33a2636f5f43f7fae29cfbc20fff',1,'glm']]], ['lowp_5fumat4x4',['lowp_umat4x4',['../a00294.html#ga10aafc66cf1a0ece336b1c5ae13d0cc0',1,'glm']]], ['lowp_5fuvec1',['lowp_uvec1',['../a00277.html#ga8bf3fc8a7863d140f48b29341c750402',1,'glm']]], ['lowp_5fuvec2',['lowp_uvec2',['../a00282.html#ga752ee45136011301b64afd8c310c47a4',1,'glm']]], ['lowp_5fuvec3',['lowp_uvec3',['../a00282.html#ga7b2efbdd6bdc2f8250c57f3e5dc9a292',1,'glm']]], ['lowp_5fuvec4',['lowp_uvec4',['../a00282.html#ga5e6a632ec1165cf9f54ceeaa5e9b2b1e',1,'glm']]], ['lowp_5fvec1',['lowp_vec1',['../a00271.html#ga0a57630f03031706b1d26a7d70d9184c',1,'glm']]], ['lowp_5fvec2',['lowp_vec2',['../a00282.html#ga30e8baef5d56d5c166872a2bc00f36e9',1,'glm']]], ['lowp_5fvec3',['lowp_vec3',['../a00282.html#ga868e8e4470a3ef97c7ee3032bf90dc79',1,'glm']]], ['lowp_5fvec4',['lowp_vec4',['../a00282.html#gace3acb313c800552a9411953eb8b2ed7',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_7.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_7.js ================================================ var searchData= [ ['mat2',['mat2',['../a00283.html#ga8dd59e7fc6913ac5d61b86553e9148ba',1,'glm']]], ['mat2x2',['mat2x2',['../a00283.html#gaaa17ef6bfa4e4f2692348b1460c8efcb',1,'glm']]], ['mat2x3',['mat2x3',['../a00283.html#ga493ab21243abe564b3f7d381e677d29a',1,'glm']]], ['mat2x4',['mat2x4',['../a00283.html#ga8e879b57ddd81e5bf5a88929844e8b40',1,'glm']]], ['mat3',['mat3',['../a00283.html#gaefb0fc7a4960b782c18708bb6b655262',1,'glm']]], ['mat3x2',['mat3x2',['../a00280.html#ga2c27aea32de57d58aec8e92d5d2181e2',1,'glm']]], ['mat3x3',['mat3x3',['../a00283.html#gab91887d7565059dac640e3a1921c914a',1,'glm']]], ['mat3x4',['mat3x4',['../a00283.html#gaf991cad0b34f64e33af186326dbc4d66',1,'glm']]], ['mat4',['mat4',['../a00283.html#ga0db98d836c5549d31cf64ecd043b7af7',1,'glm']]], ['mat4x2',['mat4x2',['../a00283.html#gad941c947ad6cdd117a0e8554a4754983',1,'glm']]], ['mat4x3',['mat4x3',['../a00283.html#gac7574544bb94777bdbd2eb224eb72fd0',1,'glm']]], ['mat4x4',['mat4x4',['../a00283.html#gab2d35cc2655f44d60958d60a1de34e81',1,'glm']]], ['mediump_5fbvec1',['mediump_bvec1',['../a00266.html#ga7b4ccb989ba179fa44f7b0879c782621',1,'glm']]], ['mediump_5fbvec2',['mediump_bvec2',['../a00282.html#ga1e743764869efa9223c2bcefccedaddc',1,'glm']]], ['mediump_5fbvec3',['mediump_bvec3',['../a00282.html#ga50c783c25082882ef00fe2e5cddba4aa',1,'glm']]], ['mediump_5fbvec4',['mediump_bvec4',['../a00282.html#ga0be2c682258604a35004f088782a9645',1,'glm']]], ['mediump_5fddualquat',['mediump_ddualquat',['../a00317.html#ga0fb11e48e2d16348ccb06a25213641b4',1,'glm']]], ['mediump_5fdmat2',['mediump_dmat2',['../a00284.html#ga6205fd19be355600334edef6af0b27cb',1,'glm']]], ['mediump_5fdmat2x2',['mediump_dmat2x2',['../a00284.html#ga51dc36a7719cb458fa5114831c20d64f',1,'glm']]], ['mediump_5fdmat2x3',['mediump_dmat2x3',['../a00284.html#ga741e05adf1f12d5d913f67088db1009a',1,'glm']]], ['mediump_5fdmat2x4',['mediump_dmat2x4',['../a00284.html#ga685bda24922d112786af385deb4deb43',1,'glm']]], ['mediump_5fdmat3',['mediump_dmat3',['../a00284.html#ga939fbf9c53008a8e84c7dd7cf8de29e2',1,'glm']]], ['mediump_5fdmat3x2',['mediump_dmat3x2',['../a00284.html#ga2076157df85e49b8c021e03e46a376c1',1,'glm']]], ['mediump_5fdmat3x3',['mediump_dmat3x3',['../a00284.html#ga47bd2aae4701ee2fc865674a9df3d7a6',1,'glm']]], ['mediump_5fdmat3x4',['mediump_dmat3x4',['../a00284.html#ga3a132bd05675c2e46556f67cf738600b',1,'glm']]], ['mediump_5fdmat4',['mediump_dmat4',['../a00284.html#gaf650bc667bf2a0e496b5a9182bc8d378',1,'glm']]], ['mediump_5fdmat4x2',['mediump_dmat4x2',['../a00284.html#gae220fa4c5a7b13ef2ab0420340de645c',1,'glm']]], ['mediump_5fdmat4x3',['mediump_dmat4x3',['../a00284.html#ga43ef60e4d996db15c9c8f069a96ff763',1,'glm']]], ['mediump_5fdmat4x4',['mediump_dmat4x4',['../a00284.html#ga5389b3ab32dc0d72bea00057ab6d1dd3',1,'glm']]], ['mediump_5fdquat',['mediump_dquat',['../a00250.html#gacdf73b1f7fd8f5a0c79a3934e99c1a14',1,'glm']]], ['mediump_5fdualquat',['mediump_dualquat',['../a00317.html#gaa7aeb54c167712b38f2178a1be2360ad',1,'glm']]], ['mediump_5fdvec1',['mediump_dvec1',['../a00269.html#ga79a789ebb176b37a45848f7ccdd3b3dd',1,'glm']]], ['mediump_5fdvec2',['mediump_dvec2',['../a00282.html#ga2f4f6e9a69a0281d06940fd0990cafc3',1,'glm']]], ['mediump_5fdvec3',['mediump_dvec3',['../a00282.html#ga61c3b1dff4ec7c878af80503141b9f37',1,'glm']]], ['mediump_5fdvec4',['mediump_dvec4',['../a00282.html#ga23a8bca00914a51542bfea13a4778186',1,'glm']]], ['mediump_5ff32',['mediump_f32',['../a00304.html#ga3b27fcd9eaa2757f0aaf6b0ce0d85c80',1,'glm']]], ['mediump_5ff32mat2',['mediump_f32mat2',['../a00304.html#gaf9020c6176a75bc84828ab01ea7dac25',1,'glm']]], ['mediump_5ff32mat2x2',['mediump_f32mat2x2',['../a00304.html#gaa3ca74a44102035b3ffb5c9c52dfdd3f',1,'glm']]], ['mediump_5ff32mat2x3',['mediump_f32mat2x3',['../a00304.html#gad4cc829ab1ad3e05ac0a24828a3c95cf',1,'glm']]], ['mediump_5ff32mat2x4',['mediump_f32mat2x4',['../a00304.html#gae71445ac6cd0b9fba3e5c905cd030fb1',1,'glm']]], ['mediump_5ff32mat3',['mediump_f32mat3',['../a00304.html#gaaaf878d0d7bfc0aac054fe269a886ca8',1,'glm']]], ['mediump_5ff32mat3x2',['mediump_f32mat3x2',['../a00304.html#gaaab39454f56cf9fc6d940358ce5e6a0f',1,'glm']]], ['mediump_5ff32mat3x3',['mediump_f32mat3x3',['../a00304.html#gacd80ad7640e9e32f2edcb8330b1ffe4f',1,'glm']]], ['mediump_5ff32mat3x4',['mediump_f32mat3x4',['../a00304.html#ga8df705d775b776f5ae6b39e2ab892899',1,'glm']]], ['mediump_5ff32mat4',['mediump_f32mat4',['../a00304.html#ga4491baaebbc46a20f1cb5da985576bf4',1,'glm']]], ['mediump_5ff32mat4x2',['mediump_f32mat4x2',['../a00304.html#gab005efe0fa4de1a928e8ddec4bc2c43f',1,'glm']]], ['mediump_5ff32mat4x3',['mediump_f32mat4x3',['../a00304.html#gade108f16633cf95fa500b5b8c36c8b00',1,'glm']]], ['mediump_5ff32mat4x4',['mediump_f32mat4x4',['../a00304.html#ga936e95b881ecd2d109459ca41913fa99',1,'glm']]], ['mediump_5ff32quat',['mediump_f32quat',['../a00304.html#gaa40c03d52dbfbfaf03e75773b9606ff3',1,'glm']]], ['mediump_5ff32vec1',['mediump_f32vec1',['../a00304.html#gabb33cab7d7c74cc14aa95455d0690865',1,'glm']]], ['mediump_5ff32vec2',['mediump_f32vec2',['../a00304.html#gad6eb11412a3161ca8dc1d63b2a307c4b',1,'glm']]], ['mediump_5ff32vec3',['mediump_f32vec3',['../a00304.html#ga062ffef2973bd8241df993c3b30b327c',1,'glm']]], ['mediump_5ff32vec4',['mediump_f32vec4',['../a00304.html#gad80c84bcd5f585840faa6179f6fd446c',1,'glm']]], ['mediump_5ff64',['mediump_f64',['../a00304.html#ga6d40381d78472553f878f66e443feeef',1,'glm']]], ['mediump_5ff64mat2',['mediump_f64mat2',['../a00304.html#gac1281da5ded55047e8892b0e1f1ae965',1,'glm']]], ['mediump_5ff64mat2x2',['mediump_f64mat2x2',['../a00304.html#ga4fd527644cccbca4cb205320eab026f3',1,'glm']]], ['mediump_5ff64mat2x3',['mediump_f64mat2x3',['../a00304.html#gafd9a6ebc0c7b95f5c581d00d16a17c54',1,'glm']]], ['mediump_5ff64mat2x4',['mediump_f64mat2x4',['../a00304.html#gaf306dd69e53633636aee38cea79d4cb7',1,'glm']]], ['mediump_5ff64mat3',['mediump_f64mat3',['../a00304.html#gad35fb67eb1d03c5a514f0bd7aed1c776',1,'glm']]], ['mediump_5ff64mat3x2',['mediump_f64mat3x2',['../a00304.html#gacd926d36a72433f6cac51dd60fa13107',1,'glm']]], ['mediump_5ff64mat3x3',['mediump_f64mat3x3',['../a00304.html#ga84d88a6e3a54ccd2b67e195af4a4c23e',1,'glm']]], ['mediump_5ff64mat3x4',['mediump_f64mat3x4',['../a00304.html#gad38c544d332b8c4bd0b70b1bd9feccc2',1,'glm']]], ['mediump_5ff64mat4',['mediump_f64mat4',['../a00304.html#gaa805ef691c711dc41e2776cfb67f5cf5',1,'glm']]], ['mediump_5ff64mat4x2',['mediump_f64mat4x2',['../a00304.html#ga17d36f0ea22314117e1cec9594b33945',1,'glm']]], ['mediump_5ff64mat4x3',['mediump_f64mat4x3',['../a00304.html#ga54697a78f9a4643af6a57fc2e626ec0d',1,'glm']]], ['mediump_5ff64mat4x4',['mediump_f64mat4x4',['../a00304.html#ga66edb8de17b9235029472f043ae107e9',1,'glm']]], ['mediump_5ff64quat',['mediump_f64quat',['../a00304.html#ga5e52f485059ce6e3010c590b882602c9',1,'glm']]], ['mediump_5ff64vec1',['mediump_f64vec1',['../a00304.html#gac30fdf8afa489400053275b6a3350127',1,'glm']]], ['mediump_5ff64vec2',['mediump_f64vec2',['../a00304.html#ga8ebc04ecf6440c4ee24718a16600ce6b',1,'glm']]], ['mediump_5ff64vec3',['mediump_f64vec3',['../a00304.html#ga461c4c7d0757404dd0dba931760b25cf',1,'glm']]], ['mediump_5ff64vec4',['mediump_f64vec4',['../a00304.html#gacfea053bd6bb3eddb996a4f94de22a3e',1,'glm']]], ['mediump_5ffdualquat',['mediump_fdualquat',['../a00317.html#ga4a6b594ff7e81150d8143001367a9431',1,'glm']]], ['mediump_5ffloat32',['mediump_float32',['../a00304.html#ga7812bf00676fb1a86dcd62cca354d2c7',1,'glm']]], ['mediump_5ffloat32_5ft',['mediump_float32_t',['../a00304.html#gae4dee61f8fe1caccec309fbed02faf12',1,'glm']]], ['mediump_5ffloat64',['mediump_float64',['../a00304.html#gab83d8aae6e4f115e97a785e8574a115f',1,'glm']]], ['mediump_5ffloat64_5ft',['mediump_float64_t',['../a00304.html#gac61843e4fa96c1f4e9d8316454f32a8e',1,'glm']]], ['mediump_5ffmat2',['mediump_fmat2',['../a00304.html#ga74e9133378fd0b4da8ac0bc0876702ff',1,'glm']]], ['mediump_5ffmat2x2',['mediump_fmat2x2',['../a00304.html#ga98a687c17b174ea316b5f397b64f44bc',1,'glm']]], ['mediump_5ffmat2x3',['mediump_fmat2x3',['../a00304.html#gaa03f939d90d5ef157df957d93f0b9a64',1,'glm']]], ['mediump_5ffmat2x4',['mediump_fmat2x4',['../a00304.html#ga35223623e9ccebd8a281873b71b7d213',1,'glm']]], ['mediump_5ffmat3',['mediump_fmat3',['../a00304.html#ga80823dfad5dba98512c76af498343847',1,'glm']]], ['mediump_5ffmat3x2',['mediump_fmat3x2',['../a00304.html#ga42569e5b92f8635cedeadb1457ee1467',1,'glm']]], ['mediump_5ffmat3x3',['mediump_fmat3x3',['../a00304.html#gaa6f526388c74a66b3d52315a14d434ae',1,'glm']]], ['mediump_5ffmat3x4',['mediump_fmat3x4',['../a00304.html#gaefe8ef520c6cb78590ebbefe648da4d4',1,'glm']]], ['mediump_5ffmat4',['mediump_fmat4',['../a00304.html#gac1c38778c0b5a1263f07753c05a4f7b9',1,'glm']]], ['mediump_5ffmat4x2',['mediump_fmat4x2',['../a00304.html#gacea38a85893e17e6834b6cb09a9ad0cf',1,'glm']]], ['mediump_5ffmat4x3',['mediump_fmat4x3',['../a00304.html#ga41ad497f7eae211556aefd783cb02b90',1,'glm']]], ['mediump_5ffmat4x4',['mediump_fmat4x4',['../a00304.html#ga22e27beead07bff4d5ce9d6065a57279',1,'glm']]], ['mediump_5ffvec1',['mediump_fvec1',['../a00304.html#ga367964fc2133d3f1b5b3755ff9cf6c9b',1,'glm']]], ['mediump_5ffvec2',['mediump_fvec2',['../a00304.html#ga44bfa55cda5dbf53f24a1fb7610393d6',1,'glm']]], ['mediump_5ffvec3',['mediump_fvec3',['../a00304.html#ga999dc6703ad16e3d3c26b74ea8083f07',1,'glm']]], ['mediump_5ffvec4',['mediump_fvec4',['../a00304.html#ga1bed890513c0f50b7e7ba4f7f359dbfb',1,'glm']]], ['mediump_5fi16',['mediump_i16',['../a00304.html#ga62a17cddeb4dffb4e18fe3aea23f051a',1,'glm']]], ['mediump_5fi16vec1',['mediump_i16vec1',['../a00304.html#gacc44265ed440bf5e6e566782570de842',1,'glm']]], ['mediump_5fi16vec2',['mediump_i16vec2',['../a00304.html#ga4b5e2c9aaa5d7717bf71179aefa12e88',1,'glm']]], ['mediump_5fi16vec3',['mediump_i16vec3',['../a00304.html#ga3be6c7fc5fe08fa2274bdb001d5f2633',1,'glm']]], ['mediump_5fi16vec4',['mediump_i16vec4',['../a00304.html#gaf52982bb23e3a3772649b2c5bb84b107',1,'glm']]], ['mediump_5fi32',['mediump_i32',['../a00304.html#gaf5e94bf2a20af7601787c154751dc2e1',1,'glm']]], ['mediump_5fi32vec1',['mediump_i32vec1',['../a00304.html#ga46a57f71e430637559097a732b550a7e',1,'glm']]], ['mediump_5fi32vec2',['mediump_i32vec2',['../a00304.html#ga20bf224bd4f8a24ecc4ed2004a40c219',1,'glm']]], ['mediump_5fi32vec3',['mediump_i32vec3',['../a00304.html#ga13a221b910aa9eb1b04ca1c86e81015a',1,'glm']]], ['mediump_5fi32vec4',['mediump_i32vec4',['../a00304.html#ga6addd4dfee87fc09ab9525e3d07db4c8',1,'glm']]], ['mediump_5fi64',['mediump_i64',['../a00304.html#ga3ebcb1f6d8d8387253de8bccb058d77f',1,'glm']]], ['mediump_5fi64vec1',['mediump_i64vec1',['../a00304.html#ga8343e9d244fb17a5bbf0d94d36b3695e',1,'glm']]], ['mediump_5fi64vec2',['mediump_i64vec2',['../a00304.html#ga2c94aeae3457325944ca1059b0b68330',1,'glm']]], ['mediump_5fi64vec3',['mediump_i64vec3',['../a00304.html#ga8089722ffdf868cdfe721dea1fb6a90e',1,'glm']]], ['mediump_5fi64vec4',['mediump_i64vec4',['../a00304.html#gabf1f16c5ab8cb0484bd1e846ae4368f1',1,'glm']]], ['mediump_5fi8',['mediump_i8',['../a00304.html#gacf1ded173e1e2d049c511d095b259e21',1,'glm']]], ['mediump_5fi8vec1',['mediump_i8vec1',['../a00304.html#ga85e8893f4ae3630065690a9000c0c483',1,'glm']]], ['mediump_5fi8vec2',['mediump_i8vec2',['../a00304.html#ga2a8bdc32184ea0a522ef7bd90640cf67',1,'glm']]], ['mediump_5fi8vec3',['mediump_i8vec3',['../a00304.html#ga6dd1c1618378c6f94d522a61c28773c9',1,'glm']]], ['mediump_5fi8vec4',['mediump_i8vec4',['../a00304.html#gac7bb04fb857ef7b520e49f6c381432be',1,'glm']]], ['mediump_5fimat2',['mediump_imat2',['../a00294.html#ga20f4cc7ab23e2aa1f4db9fdb5496d378',1,'glm']]], ['mediump_5fimat2x2',['mediump_imat2x2',['../a00294.html#ga4b2aeb11a329940721dda9583e71f856',1,'glm']]], ['mediump_5fimat2x3',['mediump_imat2x3',['../a00294.html#ga74362470ba99843ac70aee5ac38cc674',1,'glm']]], ['mediump_5fimat2x4',['mediump_imat2x4',['../a00294.html#ga8da25cd380ba30fc5b68a4687deb3e09',1,'glm']]], ['mediump_5fimat3',['mediump_imat3',['../a00294.html#ga6c63bdc736efd3466e0730de0251cb71',1,'glm']]], ['mediump_5fimat3x2',['mediump_imat3x2',['../a00294.html#gac0b4e42d648fb3eaf4bb88da82ecc809',1,'glm']]], ['mediump_5fimat3x3',['mediump_imat3x3',['../a00294.html#gad99cc2aad8fc57f068cfa7719dbbea12',1,'glm']]], ['mediump_5fimat3x4',['mediump_imat3x4',['../a00294.html#ga67689a518b181a26540bc44a163525cd',1,'glm']]], ['mediump_5fimat4',['mediump_imat4',['../a00294.html#gaf348552978553630d2a00b78eb887ced',1,'glm']]], ['mediump_5fimat4x2',['mediump_imat4x2',['../a00294.html#ga8b2d35816f7103f0f4c82dd2f27571fc',1,'glm']]], ['mediump_5fimat4x3',['mediump_imat4x3',['../a00294.html#ga5b10acc696759e03f6ab918f4467e94c',1,'glm']]], ['mediump_5fimat4x4',['mediump_imat4x4',['../a00294.html#ga2596869d154dec1180beadbb9df80501',1,'glm']]], ['mediump_5fint16',['mediump_int16',['../a00304.html#gadff3608baa4b5bd3ed28f95c1c2c345d',1,'glm']]], ['mediump_5fint16_5ft',['mediump_int16_t',['../a00304.html#ga80e72fe94c88498537e8158ba7591c54',1,'glm']]], ['mediump_5fint32',['mediump_int32',['../a00304.html#ga5244cef85d6e870e240c76428a262ae8',1,'glm']]], ['mediump_5fint32_5ft',['mediump_int32_t',['../a00304.html#ga26fc7ced1ad7ca5024f1c973c8dc9180',1,'glm']]], ['mediump_5fint64',['mediump_int64',['../a00304.html#ga7b968f2b86a0442a89c7359171e1d866',1,'glm']]], ['mediump_5fint64_5ft',['mediump_int64_t',['../a00304.html#gac3bc41bcac61d1ba8f02a6f68ce23f64',1,'glm']]], ['mediump_5fint8',['mediump_int8',['../a00304.html#ga6fbd69cbdaa44345bff923a2cf63de7e',1,'glm']]], ['mediump_5fint8_5ft',['mediump_int8_t',['../a00304.html#ga6d7b3789ecb932c26430009478cac7ae',1,'glm']]], ['mediump_5fivec1',['mediump_ivec1',['../a00273.html#gad628c608970b3d0aa6cfb63ce6e53e56',1,'glm']]], ['mediump_5fivec2',['mediump_ivec2',['../a00282.html#gac57496299d276ed97044074097bd5e2c',1,'glm']]], ['mediump_5fivec3',['mediump_ivec3',['../a00282.html#ga27cfb51e0dbe15bba27a14a8590e8466',1,'glm']]], ['mediump_5fivec4',['mediump_ivec4',['../a00282.html#ga92a204c37e66ac6c1dc7ae91142f2ea5',1,'glm']]], ['mediump_5fmat2',['mediump_mat2',['../a00284.html#ga745452bd9c89f5ad948203e4fb4b4ea3',1,'glm']]], ['mediump_5fmat2x2',['mediump_mat2x2',['../a00284.html#ga0cdf57d29f9448864237b2fb3e39aa1d',1,'glm']]], ['mediump_5fmat2x3',['mediump_mat2x3',['../a00284.html#ga497d513d552d927537d61fa11e3701ab',1,'glm']]], ['mediump_5fmat2x4',['mediump_mat2x4',['../a00284.html#gae7b75ea2e09fa686a79bbe9b6ca68ee5',1,'glm']]], ['mediump_5fmat3',['mediump_mat3',['../a00284.html#ga5aae49834d02732942f44e61d7bce136',1,'glm']]], ['mediump_5fmat3x2',['mediump_mat3x2',['../a00284.html#ga9e1c9ee65fef547bde793e69723e24eb',1,'glm']]], ['mediump_5fmat3x3',['mediump_mat3x3',['../a00284.html#gabc0f2f4ad21c90b341881cf056f8650e',1,'glm']]], ['mediump_5fmat3x4',['mediump_mat3x4',['../a00284.html#gaa669c6675c3405f76c0b14020d1c0d61',1,'glm']]], ['mediump_5fmat4',['mediump_mat4',['../a00284.html#gab8531bc3f269aa45835cd6e1972b7fc7',1,'glm']]], ['mediump_5fmat4x2',['mediump_mat4x2',['../a00284.html#gad75706b70545412ba9ac27d5ee210f66',1,'glm']]], ['mediump_5fmat4x3',['mediump_mat4x3',['../a00284.html#ga4a1440b5ea3cf84d5b06c79b534bd770',1,'glm']]], ['mediump_5fmat4x4',['mediump_mat4x4',['../a00284.html#ga15bca2b70917d9752231160d9da74b01',1,'glm']]], ['mediump_5fquat',['mediump_quat',['../a00253.html#gad2a59409de1bb12ccb6eb692ee7e9d8d',1,'glm']]], ['mediump_5fu16',['mediump_u16',['../a00304.html#ga9df98857be695d5a30cb30f5bfa38a80',1,'glm']]], ['mediump_5fu16vec1',['mediump_u16vec1',['../a00304.html#ga400ce8cc566de093a9b28e59e220d6e4',1,'glm']]], ['mediump_5fu16vec2',['mediump_u16vec2',['../a00304.html#ga429c201b3e92c90b4ef4356f2be52ee1',1,'glm']]], ['mediump_5fu16vec3',['mediump_u16vec3',['../a00304.html#gac9ba20234b0c3751d45ce575fc71e551',1,'glm']]], ['mediump_5fu16vec4',['mediump_u16vec4',['../a00304.html#ga5793393686ce5bd2d5968ff9144762b8',1,'glm']]], ['mediump_5fu32',['mediump_u32',['../a00304.html#ga1bd0e914158bf03135f8a317de6debe9',1,'glm']]], ['mediump_5fu32vec1',['mediump_u32vec1',['../a00304.html#ga8a11ccd2e38f674bbf3c2d1afc232aee',1,'glm']]], ['mediump_5fu32vec2',['mediump_u32vec2',['../a00304.html#ga94f74851fce338549c705b5f0d601c4f',1,'glm']]], ['mediump_5fu32vec3',['mediump_u32vec3',['../a00304.html#ga012c24c8fc69707b90260474c70275a2',1,'glm']]], ['mediump_5fu32vec4',['mediump_u32vec4',['../a00304.html#ga5d43ee8b5dbaa06c327b03b83682598a',1,'glm']]], ['mediump_5fu64',['mediump_u64',['../a00304.html#ga2af9490085ae3bdf36a544e9dd073610',1,'glm']]], ['mediump_5fu64vec1',['mediump_u64vec1',['../a00304.html#ga659f372ccb8307d5db5beca942cde5e8',1,'glm']]], ['mediump_5fu64vec2',['mediump_u64vec2',['../a00304.html#ga73a08ef5a74798f3a1a99250b5f86a7d',1,'glm']]], ['mediump_5fu64vec3',['mediump_u64vec3',['../a00304.html#ga1900c6ab74acd392809425953359ef52',1,'glm']]], ['mediump_5fu64vec4',['mediump_u64vec4',['../a00304.html#gaec7ee455cb379ec2993e81482123e1cc',1,'glm']]], ['mediump_5fu8',['mediump_u8',['../a00304.html#gad1213a22bbb9e4107f07eaa4956f8281',1,'glm']]], ['mediump_5fu8vec1',['mediump_u8vec1',['../a00304.html#ga4a43050843b141bdc7e85437faef6f55',1,'glm']]], ['mediump_5fu8vec2',['mediump_u8vec2',['../a00304.html#ga907f85d4a0eac3d8aaf571e5c2647194',1,'glm']]], ['mediump_5fu8vec3',['mediump_u8vec3',['../a00304.html#gaddc6f7748b699254942c5216b68f8f7f',1,'glm']]], ['mediump_5fu8vec4',['mediump_u8vec4',['../a00304.html#gaaf4ee3b76d43d98da02ec399b99bda4b',1,'glm']]], ['mediump_5fuint16',['mediump_uint16',['../a00304.html#ga2885a6c89916911e418c06bb76b9bdbb',1,'glm']]], ['mediump_5fuint16_5ft',['mediump_uint16_t',['../a00304.html#ga3963b1050fc65a383ee28e3f827b6e3e',1,'glm']]], ['mediump_5fuint32',['mediump_uint32',['../a00304.html#ga34dd5ec1988c443bae80f1b20a8ade5f',1,'glm']]], ['mediump_5fuint32_5ft',['mediump_uint32_t',['../a00304.html#gaf4dae276fd29623950de14a6ca2586b5',1,'glm']]], ['mediump_5fuint64',['mediump_uint64',['../a00304.html#ga30652709815ad9404272a31957daa59e',1,'glm']]], ['mediump_5fuint64_5ft',['mediump_uint64_t',['../a00304.html#ga9b170dd4a8f38448a2dc93987c7875e9',1,'glm']]], ['mediump_5fuint8',['mediump_uint8',['../a00304.html#ga1fa92a233b9110861cdbc8c2ccf0b5a3',1,'glm']]], ['mediump_5fuint8_5ft',['mediump_uint8_t',['../a00304.html#gadfe65c78231039e90507770db50c98c7',1,'glm']]], ['mediump_5fumat2',['mediump_umat2',['../a00294.html#ga43041378b3410ea951b7de0dfd2bc7ee',1,'glm']]], ['mediump_5fumat2x2',['mediump_umat2x2',['../a00294.html#ga3b209b1b751f041422137e3c065dfa98',1,'glm']]], ['mediump_5fumat2x3',['mediump_umat2x3',['../a00294.html#gaee2c1f13b41f4c92ea5b3efe367a1306',1,'glm']]], ['mediump_5fumat2x4',['mediump_umat2x4',['../a00294.html#gae1317ddca16d01e119a40b7f0ee85f95',1,'glm']]], ['mediump_5fumat3',['mediump_umat3',['../a00294.html#ga1730dbe3c67801f53520b06d1aa0a34a',1,'glm']]], ['mediump_5fumat3x2',['mediump_umat3x2',['../a00294.html#gaadc28bfdc8ebca81ae85121b11994970',1,'glm']]], ['mediump_5fumat3x3',['mediump_umat3x3',['../a00294.html#ga48f2fc38d3f7fab3cfbc961278ced53d',1,'glm']]], ['mediump_5fumat3x4',['mediump_umat3x4',['../a00294.html#ga78009a1e4ca64217e46b418535e52546',1,'glm']]], ['mediump_5fumat4',['mediump_umat4',['../a00294.html#ga5087c2beb26a11d9af87432e554cf9d1',1,'glm']]], ['mediump_5fumat4x2',['mediump_umat4x2',['../a00294.html#gaf35aefd81cc13718f6b059623f7425fa',1,'glm']]], ['mediump_5fumat4x3',['mediump_umat4x3',['../a00294.html#ga4e1bed14fbc7f4b376aaed064f89f0fb',1,'glm']]], ['mediump_5fumat4x4',['mediump_umat4x4',['../a00294.html#gaa9428fc8430dc552aad920653f822ef3',1,'glm']]], ['mediump_5fuvec1',['mediump_uvec1',['../a00277.html#ga38fde73aaf1420175ece8d4882558a3f',1,'glm']]], ['mediump_5fuvec2',['mediump_uvec2',['../a00282.html#gaa3b4f7806dad03d83bb3da0baa1e3b9b',1,'glm']]], ['mediump_5fuvec3',['mediump_uvec3',['../a00282.html#ga83b7df38feefbb357f3673d950fafef7',1,'glm']]], ['mediump_5fuvec4',['mediump_uvec4',['../a00282.html#ga64ed0deb6573375b7016daf82ffd53a7',1,'glm']]], ['mediump_5fvec1',['mediump_vec1',['../a00271.html#ga645f53e6b8056609023a894b4e2beef4',1,'glm']]], ['mediump_5fvec2',['mediump_vec2',['../a00282.html#gabc61976261c406520c7a8e4d946dc3f0',1,'glm']]], ['mediump_5fvec3',['mediump_vec3',['../a00282.html#ga2384e263df19f1404b733016eff78fca',1,'glm']]], ['mediump_5fvec4',['mediump_vec4',['../a00282.html#ga5c6978d3ffba06738416a33083853fc0',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_8.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_8.js ================================================ var searchData= [ ['packed_5fbvec1',['packed_bvec1',['../a00303.html#ga88632cea9008ac0ac1388e94e804a53c',1,'glm']]], ['packed_5fbvec2',['packed_bvec2',['../a00303.html#gab85245913eaa40ab82adabcae37086cb',1,'glm']]], ['packed_5fbvec3',['packed_bvec3',['../a00303.html#ga0c48f9417f649e27f3fb0c9f733a18bd',1,'glm']]], ['packed_5fbvec4',['packed_bvec4',['../a00303.html#ga3180d7db84a74c402157df3bbc0ae3ed',1,'glm']]], ['packed_5fdmat2',['packed_dmat2',['../a00303.html#gad87408a8350918711f845f071bbe43fb',1,'glm']]], ['packed_5fdmat2x2',['packed_dmat2x2',['../a00303.html#gaaa33d8e06657a777efb0c72c44ce87a9',1,'glm']]], ['packed_5fdmat2x3',['packed_dmat2x3',['../a00303.html#gac3a5315f588ba04ad255188071ec4e22',1,'glm']]], ['packed_5fdmat2x4',['packed_dmat2x4',['../a00303.html#gae398fc3156f51d3684b08f62c1a5a6d4',1,'glm']]], ['packed_5fdmat3',['packed_dmat3',['../a00303.html#ga03dfc90d539cc87ea3a15a9caa5d2245',1,'glm']]], ['packed_5fdmat3x2',['packed_dmat3x2',['../a00303.html#gae36de20a4c0e0b1444b7903ae811d94e',1,'glm']]], ['packed_5fdmat3x3',['packed_dmat3x3',['../a00303.html#gab9b909f1392d86854334350efcae85f5',1,'glm']]], ['packed_5fdmat3x4',['packed_dmat3x4',['../a00303.html#ga199131fd279c92c2ac12df6d978f1dd6',1,'glm']]], ['packed_5fdmat4',['packed_dmat4',['../a00303.html#gada980a3485640aa8151f368f17ad3086',1,'glm']]], ['packed_5fdmat4x2',['packed_dmat4x2',['../a00303.html#ga6dc65249730698d3cc9ac5d7e1bc4d72',1,'glm']]], ['packed_5fdmat4x3',['packed_dmat4x3',['../a00303.html#gadf202aaa9ed71c09f9bbe347e43f8764',1,'glm']]], ['packed_5fdmat4x4',['packed_dmat4x4',['../a00303.html#gae20617435a6d042d7c38da2badd64a09',1,'glm']]], ['packed_5fdvec1',['packed_dvec1',['../a00303.html#ga532f0c940649b1ee303acd572fc35531',1,'glm']]], ['packed_5fdvec2',['packed_dvec2',['../a00303.html#ga5c194b11fbda636f2ab20c3bd0079196',1,'glm']]], ['packed_5fdvec3',['packed_dvec3',['../a00303.html#ga0581ea552d86b2b5de7a2804bed80e72',1,'glm']]], ['packed_5fdvec4',['packed_dvec4',['../a00303.html#gae8a9b181f9dc813ad6e125a52b14b935',1,'glm']]], ['packed_5fhighp_5fbvec1',['packed_highp_bvec1',['../a00303.html#ga439e97795314b81cd15abd4e5c2e6e7a',1,'glm']]], ['packed_5fhighp_5fbvec2',['packed_highp_bvec2',['../a00303.html#gad791d671f4fcf1ed1ea41f752916b70a',1,'glm']]], ['packed_5fhighp_5fbvec3',['packed_highp_bvec3',['../a00303.html#ga6a5a3250b57dfadc66735bc72911437f',1,'glm']]], ['packed_5fhighp_5fbvec4',['packed_highp_bvec4',['../a00303.html#ga09f517d88b996ef1b2f42fd54222b82d',1,'glm']]], ['packed_5fhighp_5fdmat2',['packed_highp_dmat2',['../a00303.html#gae29686632fd05efac0675d9a6370d77b',1,'glm']]], ['packed_5fhighp_5fdmat2x2',['packed_highp_dmat2x2',['../a00303.html#ga22bd6382b16052e301edbfc031b9f37a',1,'glm']]], ['packed_5fhighp_5fdmat2x3',['packed_highp_dmat2x3',['../a00303.html#ga999d82719696d4c59f4d236dd08f273d',1,'glm']]], ['packed_5fhighp_5fdmat2x4',['packed_highp_dmat2x4',['../a00303.html#ga6998ac2a8d7fe456b651a6336ed26bb0',1,'glm']]], ['packed_5fhighp_5fdmat3',['packed_highp_dmat3',['../a00303.html#gadac7c040c4810dd52b36fcd09d097400',1,'glm']]], ['packed_5fhighp_5fdmat3x2',['packed_highp_dmat3x2',['../a00303.html#gab462744977beb85fb5c782bc2eea7b15',1,'glm']]], ['packed_5fhighp_5fdmat3x3',['packed_highp_dmat3x3',['../a00303.html#ga49e5a709d098523823b2f824e48672a6',1,'glm']]], ['packed_5fhighp_5fdmat3x4',['packed_highp_dmat3x4',['../a00303.html#ga2c67b3b0adab71c8680c3d819f1fa9b7',1,'glm']]], ['packed_5fhighp_5fdmat4',['packed_highp_dmat4',['../a00303.html#ga6718822cd7af005a9b5bd6ee282f6ba6',1,'glm']]], ['packed_5fhighp_5fdmat4x2',['packed_highp_dmat4x2',['../a00303.html#ga12e39e797fb724a5b51fcbea2513a7da',1,'glm']]], ['packed_5fhighp_5fdmat4x3',['packed_highp_dmat4x3',['../a00303.html#ga79c2e9f82e67963c1ecad0ad6d0ec72e',1,'glm']]], ['packed_5fhighp_5fdmat4x4',['packed_highp_dmat4x4',['../a00303.html#ga2df58e03e5afded28707b4f7d077afb4',1,'glm']]], ['packed_5fhighp_5fdvec1',['packed_highp_dvec1',['../a00303.html#gab472b2d917b5e6efd76e8c7dbfbbf9f1',1,'glm']]], ['packed_5fhighp_5fdvec2',['packed_highp_dvec2',['../a00303.html#ga5b2dc48fa19b684d207d69c6b145eb63',1,'glm']]], ['packed_5fhighp_5fdvec3',['packed_highp_dvec3',['../a00303.html#gaaac6b356ef00154da41aaae7d1549193',1,'glm']]], ['packed_5fhighp_5fdvec4',['packed_highp_dvec4',['../a00303.html#ga81b5368fe485e2630aa9b44832d592e7',1,'glm']]], ['packed_5fhighp_5fivec1',['packed_highp_ivec1',['../a00303.html#ga7245acc887a5438f46fd85fdf076bb3b',1,'glm']]], ['packed_5fhighp_5fivec2',['packed_highp_ivec2',['../a00303.html#ga54f368ec6b514a5aa4f28d40e6f93ef7',1,'glm']]], ['packed_5fhighp_5fivec3',['packed_highp_ivec3',['../a00303.html#ga865a9c7bb22434b1b8c5ac31e164b628',1,'glm']]], ['packed_5fhighp_5fivec4',['packed_highp_ivec4',['../a00303.html#gad6f1b4e3a51c2c051814b60d5d1b8895',1,'glm']]], ['packed_5fhighp_5fmat2',['packed_highp_mat2',['../a00303.html#ga2f2d913d8cca2f935b2522964408c0b2',1,'glm']]], ['packed_5fhighp_5fmat2x2',['packed_highp_mat2x2',['../a00303.html#ga245c12d2daf67feecaa2d3277c8f6661',1,'glm']]], ['packed_5fhighp_5fmat2x3',['packed_highp_mat2x3',['../a00303.html#ga069cc8892aadae144c00f35297617d44',1,'glm']]], ['packed_5fhighp_5fmat2x4',['packed_highp_mat2x4',['../a00303.html#ga6904d09b62141d09712b76983892f95b',1,'glm']]], ['packed_5fhighp_5fmat3',['packed_highp_mat3',['../a00303.html#gabdd5fbffe8b8b8a7b33523f25b120dbe',1,'glm']]], ['packed_5fhighp_5fmat3x2',['packed_highp_mat3x2',['../a00303.html#ga2624719cb251d8de8cad1beaefc3a3f9',1,'glm']]], ['packed_5fhighp_5fmat3x3',['packed_highp_mat3x3',['../a00303.html#gaf2e07527d678440bf0c20adbeb9177c5',1,'glm']]], ['packed_5fhighp_5fmat3x4',['packed_highp_mat3x4',['../a00303.html#ga72102fa6ac2445aa3bb203128ad52449',1,'glm']]], ['packed_5fhighp_5fmat4',['packed_highp_mat4',['../a00303.html#ga253e8379b08d2dc6fe2800b2fb913203',1,'glm']]], ['packed_5fhighp_5fmat4x2',['packed_highp_mat4x2',['../a00303.html#gae389c2071cf3cdb33e7812c6fd156710',1,'glm']]], ['packed_5fhighp_5fmat4x3',['packed_highp_mat4x3',['../a00303.html#ga4584f64394bd7123b7a8534741e4916c',1,'glm']]], ['packed_5fhighp_5fmat4x4',['packed_highp_mat4x4',['../a00303.html#ga0149fe15668925147e07c94fd2c2d6ae',1,'glm']]], ['packed_5fhighp_5fuvec1',['packed_highp_uvec1',['../a00303.html#ga8c32b53f628a3616aa5061e58d66fe74',1,'glm']]], ['packed_5fhighp_5fuvec2',['packed_highp_uvec2',['../a00303.html#gab704d4fb15f6f96d70e363d5db7060cd',1,'glm']]], ['packed_5fhighp_5fuvec3',['packed_highp_uvec3',['../a00303.html#ga0b570da473fec4619db5aa0dce5133b0',1,'glm']]], ['packed_5fhighp_5fuvec4',['packed_highp_uvec4',['../a00303.html#gaa582f38c82aef61dea7aaedf15bb06a6',1,'glm']]], ['packed_5fhighp_5fvec1',['packed_highp_vec1',['../a00303.html#ga56473759d2702ee19ab7f91d0017fa70',1,'glm']]], ['packed_5fhighp_5fvec2',['packed_highp_vec2',['../a00303.html#ga6b8b9475e7c3b16aed13edbc460bbc4d',1,'glm']]], ['packed_5fhighp_5fvec3',['packed_highp_vec3',['../a00303.html#ga3815661df0e2de79beff8168c09adf1e',1,'glm']]], ['packed_5fhighp_5fvec4',['packed_highp_vec4',['../a00303.html#ga4015f36bf5a5adb6ac5d45beed959867',1,'glm']]], ['packed_5fivec1',['packed_ivec1',['../a00303.html#ga11581a06fc7bf941fa4d4b6aca29812c',1,'glm']]], ['packed_5fivec2',['packed_ivec2',['../a00303.html#ga1fe4c5f56b8087d773aa90dc88a257a7',1,'glm']]], ['packed_5fivec3',['packed_ivec3',['../a00303.html#gae157682a7847161787951ba1db4cf325',1,'glm']]], ['packed_5fivec4',['packed_ivec4',['../a00303.html#gac228b70372abd561340d5f926a7c1778',1,'glm']]], ['packed_5flowp_5fbvec1',['packed_lowp_bvec1',['../a00303.html#gae3c8750f53259ece334d3aa3b3649a40',1,'glm']]], ['packed_5flowp_5fbvec2',['packed_lowp_bvec2',['../a00303.html#gac969befedbda69eb78d4e23f751fdbee',1,'glm']]], ['packed_5flowp_5fbvec3',['packed_lowp_bvec3',['../a00303.html#ga7c20adbe1409e3fe4544677a7f6fe954',1,'glm']]], ['packed_5flowp_5fbvec4',['packed_lowp_bvec4',['../a00303.html#gae473587cff3092edc0877fc691c26a0b',1,'glm']]], ['packed_5flowp_5fdmat2',['packed_lowp_dmat2',['../a00303.html#gac93f9b1a35b9de4f456b9f2dfeaf1097',1,'glm']]], ['packed_5flowp_5fdmat2x2',['packed_lowp_dmat2x2',['../a00303.html#gaeeaff6c132ec91ebd21da3a2399548ea',1,'glm']]], ['packed_5flowp_5fdmat2x3',['packed_lowp_dmat2x3',['../a00303.html#ga2ccdcd4846775cbe4f9d12e71d55b5d2',1,'glm']]], ['packed_5flowp_5fdmat2x4',['packed_lowp_dmat2x4',['../a00303.html#gac870c47d2d9d48503f6c9ee3baec8ce1',1,'glm']]], ['packed_5flowp_5fdmat3',['packed_lowp_dmat3',['../a00303.html#ga3894a059eeaacec8791c25de398d9955',1,'glm']]], ['packed_5flowp_5fdmat3x2',['packed_lowp_dmat3x2',['../a00303.html#ga23ec236950f5859f59197663266b535d',1,'glm']]], ['packed_5flowp_5fdmat3x3',['packed_lowp_dmat3x3',['../a00303.html#ga4a7c7d8c3a663d0ec2a858cbfa14e54c',1,'glm']]], ['packed_5flowp_5fdmat3x4',['packed_lowp_dmat3x4',['../a00303.html#ga8fc0e66da83599071b7ec17510686cd9',1,'glm']]], ['packed_5flowp_5fdmat4',['packed_lowp_dmat4',['../a00303.html#ga03e1edf5666c40affe39aee35c87956f',1,'glm']]], ['packed_5flowp_5fdmat4x2',['packed_lowp_dmat4x2',['../a00303.html#ga39658fb13369db869d363684bd8399c0',1,'glm']]], ['packed_5flowp_5fdmat4x3',['packed_lowp_dmat4x3',['../a00303.html#ga30b0351eebc18c6056101359bdd3a359',1,'glm']]], ['packed_5flowp_5fdmat4x4',['packed_lowp_dmat4x4',['../a00303.html#ga0294d4c45151425c86a11deee7693c0e',1,'glm']]], ['packed_5flowp_5fdvec1',['packed_lowp_dvec1',['../a00303.html#ga054050e9d4e78d81db0e6d1573b1c624',1,'glm']]], ['packed_5flowp_5fdvec2',['packed_lowp_dvec2',['../a00303.html#gadc19938ddb204bfcb4d9ef35b1e2bf93',1,'glm']]], ['packed_5flowp_5fdvec3',['packed_lowp_dvec3',['../a00303.html#ga9189210cabd6651a5e14a4c46fb20598',1,'glm']]], ['packed_5flowp_5fdvec4',['packed_lowp_dvec4',['../a00303.html#ga262dafd0c001c3a38d1cc91d024ca738',1,'glm']]], ['packed_5flowp_5fivec1',['packed_lowp_ivec1',['../a00303.html#gaf22b77f1cf3e73b8b1dddfe7f959357c',1,'glm']]], ['packed_5flowp_5fivec2',['packed_lowp_ivec2',['../a00303.html#ga52635859f5ef660ab999d22c11b7867f',1,'glm']]], ['packed_5flowp_5fivec3',['packed_lowp_ivec3',['../a00303.html#ga98c9d122a959e9f3ce10a5623c310f5d',1,'glm']]], ['packed_5flowp_5fivec4',['packed_lowp_ivec4',['../a00303.html#ga931731b8ae3b54c7ecc221509dae96bc',1,'glm']]], ['packed_5flowp_5fmat2',['packed_lowp_mat2',['../a00303.html#ga70dcb9ef0b24e832772a7405efa9669a',1,'glm']]], ['packed_5flowp_5fmat2x2',['packed_lowp_mat2x2',['../a00303.html#gac70667c7642ec8d50245e6e6936a3927',1,'glm']]], ['packed_5flowp_5fmat2x3',['packed_lowp_mat2x3',['../a00303.html#ga3e7df5a11e1be27bc29a4c0d3956f234',1,'glm']]], ['packed_5flowp_5fmat2x4',['packed_lowp_mat2x4',['../a00303.html#gaea9c555e669dc56c45d95dcc75d59bf3',1,'glm']]], ['packed_5flowp_5fmat3',['packed_lowp_mat3',['../a00303.html#ga0d22400969dd223465b2900fecfb4f53',1,'glm']]], ['packed_5flowp_5fmat3x2',['packed_lowp_mat3x2',['../a00303.html#ga128cd52649621861635fab746df91735',1,'glm']]], ['packed_5flowp_5fmat3x3',['packed_lowp_mat3x3',['../a00303.html#ga5adf1802c5375a9dfb1729691bedd94e',1,'glm']]], ['packed_5flowp_5fmat3x4',['packed_lowp_mat3x4',['../a00303.html#ga92247ca09fa03c4013ba364f3a0fca7f',1,'glm']]], ['packed_5flowp_5fmat4',['packed_lowp_mat4',['../a00303.html#ga2a1dd2387725a335413d4c4fee8609c4',1,'glm']]], ['packed_5flowp_5fmat4x2',['packed_lowp_mat4x2',['../a00303.html#ga8f22607dcd090cd280071ccc689f4079',1,'glm']]], ['packed_5flowp_5fmat4x3',['packed_lowp_mat4x3',['../a00303.html#ga7661d759d6ad218e132e3d051e7b2c6c',1,'glm']]], ['packed_5flowp_5fmat4x4',['packed_lowp_mat4x4',['../a00303.html#ga776f18d1a6e7d399f05d386167dc60f5',1,'glm']]], ['packed_5flowp_5fuvec1',['packed_lowp_uvec1',['../a00303.html#gaf111fed760ecce16cb1988807569bee5',1,'glm']]], ['packed_5flowp_5fuvec2',['packed_lowp_uvec2',['../a00303.html#ga958210fe245a75b058325d367c951132',1,'glm']]], ['packed_5flowp_5fuvec3',['packed_lowp_uvec3',['../a00303.html#ga576a3f8372197a56a79dee1c8280f485',1,'glm']]], ['packed_5flowp_5fuvec4',['packed_lowp_uvec4',['../a00303.html#gafdd97922b4a2a42cd0c99a13877ff4da',1,'glm']]], ['packed_5flowp_5fvec1',['packed_lowp_vec1',['../a00303.html#ga0a6198fe64166a6a61084d43c71518a9',1,'glm']]], ['packed_5flowp_5fvec2',['packed_lowp_vec2',['../a00303.html#gafbf1c2cce307c5594b165819ed83bf5d',1,'glm']]], ['packed_5flowp_5fvec3',['packed_lowp_vec3',['../a00303.html#ga3a30c137c1f8cce478c28eab0427a570',1,'glm']]], ['packed_5flowp_5fvec4',['packed_lowp_vec4',['../a00303.html#ga3cc94fb8de80bbd8a4aa7a5b206d304a',1,'glm']]], ['packed_5fmat2',['packed_mat2',['../a00303.html#gadd019b43fcf42e1590d45dddaa504a1a',1,'glm']]], ['packed_5fmat2x2',['packed_mat2x2',['../a00303.html#ga51eaadcdc292c8750f746a5dc3e6c517',1,'glm']]], ['packed_5fmat2x3',['packed_mat2x3',['../a00303.html#ga301b76a89b8a9625501ca58815017f20',1,'glm']]], ['packed_5fmat2x4',['packed_mat2x4',['../a00303.html#gac401da1dd9177ad81d7618a2a5541e23',1,'glm']]], ['packed_5fmat3',['packed_mat3',['../a00303.html#ga9bc12b0ab7be8448836711b77cc7b83a',1,'glm']]], ['packed_5fmat3x2',['packed_mat3x2',['../a00303.html#ga134f0d99fbd2459c13cd9ebd056509fa',1,'glm']]], ['packed_5fmat3x3',['packed_mat3x3',['../a00303.html#ga6c1dbe8cde9fbb231284b01f8aeaaa99',1,'glm']]], ['packed_5fmat3x4',['packed_mat3x4',['../a00303.html#gad63515526cccfe88ffa8fe5ed64f95f8',1,'glm']]], ['packed_5fmat4',['packed_mat4',['../a00303.html#ga2c139854e5b04cf08a957dee3b510441',1,'glm']]], ['packed_5fmat4x2',['packed_mat4x2',['../a00303.html#ga379c1153f1339bdeaefd592bebf538e8',1,'glm']]], ['packed_5fmat4x3',['packed_mat4x3',['../a00303.html#gab286466e19f7399c8d25089da9400d43',1,'glm']]], ['packed_5fmat4x4',['packed_mat4x4',['../a00303.html#ga67e7102557d6067bb6ac00d4ad0e1374',1,'glm']]], ['packed_5fmediump_5fbvec1',['packed_mediump_bvec1',['../a00303.html#ga5546d828d63010a8f9cf81161ad0275a',1,'glm']]], ['packed_5fmediump_5fbvec2',['packed_mediump_bvec2',['../a00303.html#gab4c6414a59539e66a242ad4cf4b476b4',1,'glm']]], ['packed_5fmediump_5fbvec3',['packed_mediump_bvec3',['../a00303.html#ga70147763edff3fe96b03a0b98d6339a2',1,'glm']]], ['packed_5fmediump_5fbvec4',['packed_mediump_bvec4',['../a00303.html#ga7b1620f259595b9da47a6374fc44588a',1,'glm']]], ['packed_5fmediump_5fdmat2',['packed_mediump_dmat2',['../a00303.html#ga9d60e32d3fcb51f817046cd881fdbf57',1,'glm']]], ['packed_5fmediump_5fdmat2x2',['packed_mediump_dmat2x2',['../a00303.html#ga39e8bb9b70e5694964e8266a21ba534e',1,'glm']]], ['packed_5fmediump_5fdmat2x3',['packed_mediump_dmat2x3',['../a00303.html#ga8897c6d9adb4140b1c3b0a07b8f0a430',1,'glm']]], ['packed_5fmediump_5fdmat2x4',['packed_mediump_dmat2x4',['../a00303.html#gaaa4126969c765e7faa2ebf6951c22ffb',1,'glm']]], ['packed_5fmediump_5fdmat3',['packed_mediump_dmat3',['../a00303.html#gaf969eb879c76a5f4576e4a1e10095cf6',1,'glm']]], ['packed_5fmediump_5fdmat3x2',['packed_mediump_dmat3x2',['../a00303.html#ga86efe91cdaa2864c828a5d6d46356c6a',1,'glm']]], ['packed_5fmediump_5fdmat3x3',['packed_mediump_dmat3x3',['../a00303.html#gaf85877d38d8cfbc21d59d939afd72375',1,'glm']]], ['packed_5fmediump_5fdmat3x4',['packed_mediump_dmat3x4',['../a00303.html#gad5dcaf93df267bc3029174e430e0907f',1,'glm']]], ['packed_5fmediump_5fdmat4',['packed_mediump_dmat4',['../a00303.html#ga4b0ee7996651ddd04eaa0c4cdbb66332',1,'glm']]], ['packed_5fmediump_5fdmat4x2',['packed_mediump_dmat4x2',['../a00303.html#ga9a15514a0631f700de6312b9d5db3a73',1,'glm']]], ['packed_5fmediump_5fdmat4x3',['packed_mediump_dmat4x3',['../a00303.html#gab5b36cc9caee1bb1c5178fe191bf5713',1,'glm']]], ['packed_5fmediump_5fdmat4x4',['packed_mediump_dmat4x4',['../a00303.html#ga21e86cf2f6c126bacf31b8985db06bd4',1,'glm']]], ['packed_5fmediump_5fdvec1',['packed_mediump_dvec1',['../a00303.html#ga8920e90ea9c01d9c97e604a938ce2cbd',1,'glm']]], ['packed_5fmediump_5fdvec2',['packed_mediump_dvec2',['../a00303.html#ga0c754a783b6fcf80374c013371c4dae9',1,'glm']]], ['packed_5fmediump_5fdvec3',['packed_mediump_dvec3',['../a00303.html#ga1f18ada6f7cdd8c46db33ba987280fc4',1,'glm']]], ['packed_5fmediump_5fdvec4',['packed_mediump_dvec4',['../a00303.html#ga568b850f1116b667043533cf77826968',1,'glm']]], ['packed_5fmediump_5fivec1',['packed_mediump_ivec1',['../a00303.html#ga09507ef020a49517a7bcd50438f05056',1,'glm']]], ['packed_5fmediump_5fivec2',['packed_mediump_ivec2',['../a00303.html#gaaa891048dddef4627df33809ec726219',1,'glm']]], ['packed_5fmediump_5fivec3',['packed_mediump_ivec3',['../a00303.html#ga06f26d54dca30994eb1fdadb8e69f4a2',1,'glm']]], ['packed_5fmediump_5fivec4',['packed_mediump_ivec4',['../a00303.html#ga70130dc8ed9c966ec2a221ce586d45d8',1,'glm']]], ['packed_5fmediump_5fmat2',['packed_mediump_mat2',['../a00303.html#ga43cd36d430c5187bfdca34a23cb41581',1,'glm']]], ['packed_5fmediump_5fmat2x2',['packed_mediump_mat2x2',['../a00303.html#ga2d2a73e662759e301c22b8931ff6a526',1,'glm']]], ['packed_5fmediump_5fmat2x3',['packed_mediump_mat2x3',['../a00303.html#ga99049db01faf1e95ed9fb875a47dffe2',1,'glm']]], ['packed_5fmediump_5fmat2x4',['packed_mediump_mat2x4',['../a00303.html#gad43a240533f388ce0504b495d9df3d52',1,'glm']]], ['packed_5fmediump_5fmat3',['packed_mediump_mat3',['../a00303.html#ga13a75c6cbd0a411f694bc82486cd1e55',1,'glm']]], ['packed_5fmediump_5fmat3x2',['packed_mediump_mat3x2',['../a00303.html#ga04cfaf1421284df3c24ea0985dab24e7',1,'glm']]], ['packed_5fmediump_5fmat3x3',['packed_mediump_mat3x3',['../a00303.html#gaaa9cea174d342dd9650e3436823cab23',1,'glm']]], ['packed_5fmediump_5fmat3x4',['packed_mediump_mat3x4',['../a00303.html#gabc93a9560593bd32e099c908531305f5',1,'glm']]], ['packed_5fmediump_5fmat4',['packed_mediump_mat4',['../a00303.html#gae89d72ffc149147f61df701bbc8755bf',1,'glm']]], ['packed_5fmediump_5fmat4x2',['packed_mediump_mat4x2',['../a00303.html#gaa458f9d9e0934bae3097e2a373b24707',1,'glm']]], ['packed_5fmediump_5fmat4x3',['packed_mediump_mat4x3',['../a00303.html#ga02ca6255394aa778abaeb0f733c4d2b6',1,'glm']]], ['packed_5fmediump_5fmat4x4',['packed_mediump_mat4x4',['../a00303.html#gaf304f64c06743c1571401504d3f50259',1,'glm']]], ['packed_5fmediump_5fuvec1',['packed_mediump_uvec1',['../a00303.html#ga2c29fb42bab9a4f9b66bc60b2e514a34',1,'glm']]], ['packed_5fmediump_5fuvec2',['packed_mediump_uvec2',['../a00303.html#gaa1f95690a78dc12e39da32943243aeef',1,'glm']]], ['packed_5fmediump_5fuvec3',['packed_mediump_uvec3',['../a00303.html#ga1ea2bbdbcb0a69242f6d884663c1b0ab',1,'glm']]], ['packed_5fmediump_5fuvec4',['packed_mediump_uvec4',['../a00303.html#ga63a73be86a4f07ea7a7499ab0bfebe45',1,'glm']]], ['packed_5fmediump_5fvec1',['packed_mediump_vec1',['../a00303.html#ga71d63cead1e113fca0bcdaaa33aad050',1,'glm']]], ['packed_5fmediump_5fvec2',['packed_mediump_vec2',['../a00303.html#ga6844c6f4691d1bf67673240850430948',1,'glm']]], ['packed_5fmediump_5fvec3',['packed_mediump_vec3',['../a00303.html#gab0eb771b708c5b2205d9b14dd1434fd8',1,'glm']]], ['packed_5fmediump_5fvec4',['packed_mediump_vec4',['../a00303.html#ga68c9bb24f387b312bae6a0a68e74d95e',1,'glm']]], ['packed_5fuvec1',['packed_uvec1',['../a00303.html#ga5621493caac01bdd22ab6be4416b0314',1,'glm']]], ['packed_5fuvec2',['packed_uvec2',['../a00303.html#gabcc33efb4d5e83b8fe4706360e75b932',1,'glm']]], ['packed_5fuvec3',['packed_uvec3',['../a00303.html#gab96804e99e3a72a35740fec690c79617',1,'glm']]], ['packed_5fuvec4',['packed_uvec4',['../a00303.html#ga8e5d92e84ebdbe2480cf96bc17d6e2f2',1,'glm']]], ['packed_5fvec1',['packed_vec1',['../a00303.html#ga14741e3d9da9ae83765389927f837331',1,'glm']]], ['packed_5fvec2',['packed_vec2',['../a00303.html#ga3254defa5a8f0ae4b02b45fedba84a66',1,'glm']]], ['packed_5fvec3',['packed_vec3',['../a00303.html#gaccccd090e185450caa28b5b63ad4e8f0',1,'glm']]], ['packed_5fvec4',['packed_vec4',['../a00303.html#ga37a0e0bf653169b581c5eea3d547fa5d',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_9.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_9.js ================================================ var searchData= [ ['quat',['quat',['../a00252.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], ['qword',['qword',['../a00354.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_a.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_a.js ================================================ var searchData= [ ['sint',['sint',['../a00330.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], ['size1',['size1',['../a00359.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], ['size1_5ft',['size1_t',['../a00359.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], ['size2',['size2',['../a00359.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], ['size2_5ft',['size2_t',['../a00359.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], ['size3',['size3',['../a00359.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], ['size3_5ft',['size3_t',['../a00359.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], ['size4',['size4',['../a00359.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], ['size4_5ft',['size4_t',['../a00359.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_b.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_b.js ================================================ var searchData= [ ['u16',['u16',['../a00304.html#gaa2d7acc0adb536fab71fe261232a40ff',1,'glm']]], ['u16vec1',['u16vec1',['../a00304.html#ga08c05ba8ffb19f5d14ab584e1e9e9ee5',1,'glm::u16vec1()'],['../a00346.html#ga52cc069a92e126c3a8dcde93424d2ef0',1,'glm::gtx::u16vec1()']]], ['u16vec2',['u16vec2',['../a00304.html#ga2a78447eb9d66a114b193f4a25899c16',1,'glm']]], ['u16vec3',['u16vec3',['../a00304.html#ga1c522ca821c27b862fe51cf4024b064b',1,'glm']]], ['u16vec4',['u16vec4',['../a00304.html#ga529496d75775fb656a07993ea9af2450',1,'glm']]], ['u32',['u32',['../a00304.html#ga8165913e068444f7842302d40ba897b9',1,'glm']]], ['u32vec1',['u32vec1',['../a00304.html#gae627372cfd5f20dd87db490387b71195',1,'glm::u32vec1()'],['../a00346.html#ga9bbc1e14aea65cba5e2dcfef6a67d9f3',1,'glm::gtx::u32vec1()']]], ['u32vec2',['u32vec2',['../a00304.html#ga2a266e46ee218d0c680f12b35c500cc0',1,'glm']]], ['u32vec3',['u32vec3',['../a00304.html#gae267358ff2a41d156d97f5762630235a',1,'glm']]], ['u32vec4',['u32vec4',['../a00304.html#ga31cef34e4cd04840c54741ff2f7005f0',1,'glm']]], ['u64',['u64',['../a00304.html#gaf3f312156984c365e9f65620354da70b',1,'glm']]], ['u64vec1',['u64vec1',['../a00304.html#gaf09f3ca4b671a4a4f84505eb4cc865fd',1,'glm::u64vec1()'],['../a00346.html#ga818de170e2584ab037130f2881925974',1,'glm::gtx::u64vec1()']]], ['u64vec2',['u64vec2',['../a00304.html#gaef3824ed4fe435a019c5b9dddf53fec5',1,'glm']]], ['u64vec3',['u64vec3',['../a00304.html#ga489b89ba93d4f7b3934df78debc52276',1,'glm']]], ['u64vec4',['u64vec4',['../a00304.html#ga3945dd6515d4498cb603e65ff867ab03',1,'glm']]], ['u8',['u8',['../a00304.html#gaecc7082561fc9028b844b6cf3d305d36',1,'glm']]], ['u8vec1',['u8vec1',['../a00304.html#ga29b349e037f0b24320b4548a143daee2',1,'glm::u8vec1()'],['../a00346.html#ga5853fe457f4c8a6bc09343d0e9833980',1,'glm::gtx::u8vec1()']]], ['u8vec2',['u8vec2',['../a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611',1,'glm']]], ['u8vec3',['u8vec3',['../a00304.html#ga7c5706f6bbe5282e5598acf7e7b377e2',1,'glm']]], ['u8vec4',['u8vec4',['../a00304.html#ga20779a61de2fd526a17f12fe53ec46b1',1,'glm']]], ['uint16',['uint16',['../a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e',1,'glm']]], ['uint16_5ft',['uint16_t',['../a00304.html#ga91f91f411080c37730856ff5887f5bcf',1,'glm']]], ['uint32',['uint32',['../a00263.html#ga1134b580f8da4de94ca6b1de4d37975e',1,'glm']]], ['uint32_5ft',['uint32_t',['../a00304.html#ga2171d9dc1fefb1c82e2817f45b622eac',1,'glm']]], ['uint64',['uint64',['../a00263.html#gab630f76c26b50298187f7889104d4b9c',1,'glm']]], ['uint64_5ft',['uint64_t',['../a00304.html#ga3999d3e7ff22025c16ddb601e14dfdee',1,'glm']]], ['uint8',['uint8',['../a00263.html#gadde6aaee8457bee49c2a92621fe22b79',1,'glm']]], ['uint8_5ft',['uint8_t',['../a00304.html#ga28d97808322d3c92186e4a0c067d7e8e',1,'glm']]], ['umat2',['umat2',['../a00294.html#ga4cae85566f900debf930c41944b64691',1,'glm']]], ['umat2x2',['umat2x2',['../a00294.html#gabf8acdd33ce8951051edbca5200898aa',1,'glm']]], ['umat2x3',['umat2x3',['../a00294.html#ga1870da7578d5022b973a83155d386ab3',1,'glm']]], ['umat2x4',['umat2x4',['../a00294.html#ga57936a3998e992370e59a223e0ee4fd4',1,'glm']]], ['umat3',['umat3',['../a00294.html#ga5085e3ff02abbac5e537eb7b89ab63b6',1,'glm']]], ['umat3x2',['umat3x2',['../a00294.html#ga9cd7fa637a4a6788337f45231fad9e1a',1,'glm']]], ['umat3x3',['umat3x3',['../a00294.html#ga1f2cfcf3357db0cdf31fcb15e3c6bafb',1,'glm']]], ['umat3x4',['umat3x4',['../a00294.html#gae7c78ff3fc4309605ab0fa186c8d48ba',1,'glm']]], ['umat4',['umat4',['../a00294.html#ga38bc7bb6494e344185df596deeb4544c',1,'glm']]], ['umat4x2',['umat4x2',['../a00294.html#ga70fa2d05896aa83cbc8c07672a429b53',1,'glm']]], ['umat4x3',['umat4x3',['../a00294.html#ga87581417945411f75cb31dd6ca1dba98',1,'glm']]], ['umat4x4',['umat4x4',['../a00294.html#gaf72e6d399c42985db6872c50f53d7eb8',1,'glm']]], ['uvec1',['uvec1',['../a00276.html#gac3bdd96183d23876c58a1424585fefe7',1,'glm']]], ['uvec2',['uvec2',['../a00281.html#ga2f6d9ec3ae14813ade37d6aee3715fdb',1,'glm']]], ['uvec3',['uvec3',['../a00281.html#ga3d3e55874babd4bf93baa7bbc83ae418',1,'glm']]], ['uvec4',['uvec4',['../a00281.html#gaa57e96bb337867329d5f43bcc27c1095',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_c.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_c.js ================================================ var searchData= [ ['vec1',['vec1',['../a00270.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], ['vec2',['vec2',['../a00281.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], ['vec3',['vec3',['../a00281.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], ['vec4',['vec4',['../a00281.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_d.html ================================================
Loading...
Searching...
No Matches
================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/search/typedefs_d.js ================================================ var searchData= [ ['word',['word',['../a00354.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]] ]; ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/api/tabs.css ================================================ .tabs, .tabs2, .tabs3 { background-image: url('tab_b.png'); width: 100%; z-index: 101; font-size: 13px; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; } .tabs2 { font-size: 10px; } .tabs3 { font-size: 9px; } .tablist { margin: 0; padding: 0; display: table; } .tablist li { float: left; display: table-cell; background-image: url('tab_b.png'); line-height: 36px; list-style: none; } .tablist a { display: block; padding: 0 20px; font-weight: bold; background-image:url('tab_s.png'); background-repeat:no-repeat; background-position:right; color: #283A5D; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; outline: none; } .tabs3 .tablist a { padding: 0 10px; } .tablist a:hover { background-image: url('tab_h.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); text-decoration: none; } .tablist li.current a { background-image: url('tab_a.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } ================================================ FILE: third_party/PhysGaussian/gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm/doc/man.doxy ================================================ # Doxyfile 1.8.10 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = "0.9.9 API documentation" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = theme/logo-mini.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = . # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = "The $name class " \ "The $name widget " \ "The $name file " \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = YES # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = NO # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = YES # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO, these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = YES # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = YES # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = YES # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = NO # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = NO # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = YES # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = YES # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = NO # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = ../glm \ . # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, # *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, # *.vhdl, *.ucf, *.qsf, *.as and *.js. FILE_PATTERNS = *.hpp \ *.doxy # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = * # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # compiled with the --with-libclang option. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = NO # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the master .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /