This question has no sense. There can be an infinite number of angles and camera positions. There is no such thing as every angle.
Some angles and scales can be just a flat image, sowing an extreme close up of yellow paint of a pencil.
There is not one application that needs this kind of approach. Not any video game, product display, video or scientific approach.
It will have a humongous set of images, barely differentiable one from other, you can add to that different lighting conditions... I can keep saying more ideas on why this is a bad approach to whatever you are doing, especially in this era of real-time 3D rendering.
But if you still need to do this. The concept is simply "Render" your 3D model. Import your model in Blender, Add a camera that rotates around the object, and put in in a helicoidal path. Then change the camera settings and keep doing this year after year...
Or import the object on a realtime render engine and let the user play with the object.
*To watch "only" 100,000 frames of the pencil... You will be making a movie of 1.2 hours... This will be a World record of the most boring movie ever.
bpy.ops.import_mesh.stl()
. You can easily adjust the number of images for each turnaround as well as moving the camera up/down for different angled turnarounds. Put that into a loop withos.listdir()
orglob.glob()
to repeat it for folders full of stl/obj files. You may also be interested in the clevr-dataset-gen repo which generates multiple images for machine learning.