こちらは「pywavefront」(Pythonライブラリ)のサンプルコードについての記事となっております。
目次
基本情報 … Basic Information
「pywavefront」はPythonのオブジェクトファイルを扱うためのライブラリです。OBJ形式の3Dモデルファイルを読み込み、メッシュやマテリアルのデータを取り出すことができます。また、3Dモデルの表示に必要な頂点座標や法線ベクトル、面情報などのデータも取り出すことができます。このライブラリを使用することで、PythonでOBJファイルを扱い、3Dモデルの生成や編集、解析を行うことができます。
サンプルコード … Sample Code
001 モデルの読み込み, モデルの表示 … Read the Model, Show the Model
1.「pywavefront」(Pythonライブラリ)で「OBJ」ファイルを読み込む
2.「pywavefront」(Pythonライブラリ)で「OBJ」モデルを表示する
### Standard Library ##########################################################
import ctypes
### Public Library ############################################################
import pywavefront
from pywavefront import visualization
import pyglet
from pyglet.gl import *
###############################################################################
obj = pywavefront.Wavefront('SAMPLE/monkey.obj')
print(obj.file_name) ### SAMPLE/monkey.obj
print(obj.mtllibs) ### ['monkey.mtl']
print(obj.materials) ### {'None': <pywavefront.material.Material object at 0x000001F2620C8F28>}
print(obj.meshes) ### {'Suzanne': <pywavefront.mesh.Mesh object at 0x000001F2620C8EB8>}
print(obj.vertices) ### [(0.4375, 0.164062, 0.765625), (-0.4375, 0.164062, 0.765625), ..., (0.859375, 0.382812, -0.382812), (-0.859375, 0.382812, -0.382812)]
print(obj.mesh_list) ### [<pywavefront.mesh.Mesh object at 0x00000248FF128EF0>]
###############################################################################
window = pyglet.window.Window(1280, 720, "window", resizable=True)
lightfv = ctypes.c_float * 4
#==============================================================================
@window.event
def on_resize(width, height):
viewport_width, viewport_height = window.get_framebuffer_size()
### OpenGL ##################################
glViewport(0, 0, viewport_width, viewport_height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45., float(width)/height, 1., 100.)
glMatrixMode(GL_MODELVIEW)
#############################################
return True
#==============================================================================
@window.event
def on_draw():
### window clear
window.clear()
### OpenGL ##################################
glLoadIdentity()
glLightfv(GL_LIGHT0, GL_POSITION, lightfv(-1.0, 1.0, 1.0, 0.0))
glTranslated(0, 0, -6)
#############################################
### window draw
visualization.draw(obj)
#==============================================================================
# run application
pyglet.app.run()
###############################################################################
このプログラムは、PythonでOpenGLを使って3Dモデルを表示する方法を示しています。プログラムでは、pywavefrontというPythonライブラリを使用して、Wavefront OBJファイルを読み込みます。そして、pygletというPythonライブラリを使用して、OpenGLによる3D描画を行います。
プログラムを実行すると、ウィンドウが開き、”SAMPLE/monkey.obj”が表示されます。キーボードを操作することで、3Dモデルを回転させたり拡大縮小したりすることができます。これにより、3Dモデルの詳細な検査が可能になります。