xuzhusheng / gltf-to-3d-tiles

Convert glTF model to Glb, b3dm and 3D tiles format.
MIT License
123 stars 35 forks source link

TypeError: 'NoneType' object is not iterable #3

Closed Kashgar closed 2 years ago

Kashgar commented 2 years ago

Execute the command: python .\main.py glb demo.gltf demo.glb prompts the following error,how to fix?

Traceback (most recent call last): File "\gltf-to-3d-tiles-main\main.py", line 104, in app() File " \lib\site-packages\typer\main.py", line 214, in call return get_command(self)(*args, kwargs) File " \lib\site-packages\click\core.py", line 1128, in call return self.main(args, kwargs) File " \lib\site-packages\click\core.py", line 1053, in main rv = self.invoke(ctx) File " \lib\site-packages\click\core.py", line 1659, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File " \lib\site-packages\click\core.py", line 1395, in invoke return ctx.invoke(self.callback, ctx.params) File " \lib\site-packages\click\core.py", line 754, in invoke return __callback(args, kwargs) File " \lib\site-packages\typer\main.py", line 500, in wrapper return callback(**use_params) # type: ignore File " \gltf-to-3d-tiles-main\main.py", line 85, in glb copy_textures(fin, fout, gltf.images) File " \gltf-to-3d-tiles-main\main.py", line 50, in copy_textures for image in images: TypeError: 'NoneType' object is not iterable

xuzhusheng commented 2 years ago

fixed by commit 895d1291b4ffbf7694c42de2dea094ee3ff386d0

Kashgar commented 2 years ago

Why is this version of tileset annotated? The problem of GLB has been corrected. After removing the tileset annotation, there are still errors

Execute the command: python .\main.py tileset demo.gltf d:\3dtiles\

Traceback (most recent call last): …… File " gltf-to-3d-tiles-main\main.py", line 73, in tileset gltf_to_tileset(gltf, buffer, fout, measure) File " gltf-to-3d-tiles-main\gltf_to_tileset.py", line 72, in gltf_to_tileset gltf_slicer = Slicer(gltf, buffer=buffer) File " gltf-to-3d-tiles-main\gltf\slicer.py", line 14, in init for image in self.images: TypeError: 'NoneType' object is not iterable

xuzhusheng commented 2 years ago

fixed by commit ee0d11ace7d2bf30fafb5be18d1500f4bb566709

Kashgar commented 2 years ago

Why is it still a bug today? i need you help

Execute the command: python .\main.py tileset demo.gltf d:\3dtiles\ or use command: python .\main.py tileset demo.gltf d:\3dtiles\tileset.json ???

Traceback (most recent call last): File " \gltf-to-3d-tiles-main\main.py", line 107, in app() File " \lib\site-packages\typer\main.py", line 214, in call return get_command(self)(*args, kwargs) File " \lib\site-packages\click\core.py", line 1128, in call return self.main(args, kwargs) File " \lib\site-packages\click\core.py", line 1053, in main rv = self.invoke(ctx) File " \lib\site-packages\click\core.py", line 1659, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File " \lib\site-packages\click\core.py", line 1395, in invoke return ctx.invoke(self.callback, ctx.params) File " \lib\site-packages\click\core.py", line 754, in invoke return __callback(args, kwargs) File " \lib\site-packages\typer\main.py", line 500, in wrapper return callback(**use_params) # type: ignore File " \gltf-to-3d-tiles-main\main.py", line 73, in tileset gltf_to_tileset(gltf, buffer, fout, measure) File " \gltf-to-3d-tiles-main\gltf_to_tileset.py", line 74, in gltf_to_tileset tiles = list(map(lambda id: Tile(content_id=id, instance_box=gltf_slicer.get_bounding_box( File " \gltf-to-3d-tiles-main\gltf_to_tileset.py", line 75, in id), instances_matrices=gltf_slicer.get_matrices(id), matrix=Matrix4(), gltf=gltf_slicer.slice_mesh(id).as_bytes(), extras=gltf_slicer.get_extras(id)), range(gltf_slicer.meshes_count))) File " \gltf-to-3d-tiles-main\gltf\slicer.py", line 68, in slice_mesh return self.slice_primitives(self.meshes[mesh_id].primitives) File " \gltf-to-3d-tiles-main\gltf\slicer.py", line 55, in slice_primitives buffer_views=self.get_buffer_views(buffer_view_indices), materials=self.get_materials(material_indices, image_indices), textures=self.get_textures(len(image_indices)), images=self.get_images(image_indices)) File " \gltf-to-3d-tiles-main\gltf\slicer.py", line 61, in __get_textures return self.textures[:count] TypeError: 'NoneType' object is not subscriptable

xuzhusheng commented 2 years ago

fixed by commit 0ac3b0ccb0974294b5dc7da4dc364979c2ecd170