こちらの続きです。
APIでレンダリング1 - C#ATIA
連続してレンダリング画像を取得すればgifアニメに出来ますね。
# Fusion360API Python script import traceback import adsk.core as core import adsk.fusion as fusion import math def run(context): ui: core.UserInterface = None try: app: core.Application = core.Application.get() ui = app.userInterface des: fusion.Design = app.activeProduct renderMgr: fusion.RenderManager = des.renderManager renderMgr.activateRenderWorkspace() rendering: fusion.Rendering = renderMgr.rendering camera: core.Camera = app.activeViewport.camera target: core.Point3D = camera.target eye: core.Point3D = camera.eye upVec: core.Vector3D = camera.upVector upVec.normalize() viewVec: core.Vector3D = eye.vectorTo(target) viewVec.normalize() sideVec: core.Vector3D = viewVec.crossProduct(upVec) sideVec.normalize() viewMat: core.Matrix3D = core.Matrix3D.create() viewMat.setWithCoordinateSystem( target, sideVec, viewVec, upVec, ) count = 30 unit = math.radians(360 / count) matLst = [] for idx in range(count): mat: core.Matrix3D = core.Matrix3D.create() mat.setToRotation( unit * idx, core.Vector3D.create(0,0,1), core.Point3D.create(0,0,0), ) mat.transformBy(viewMat) matLst.append(mat) cameraLst = [] for mat in matLst: camera: core.Camera = app.activeViewport.camera eye: core.Point3D = camera.eye.copy() eye.transformBy(mat) camera.eye = eye cameraLst.append(camera) for idx, camera in enumerate(cameraLst): renderFeat: fusion.RenderFuture = rendering.startLocalRender( f'C:/temp/hoge{idx}.jpg', camera, ) ui.messageBox('Done') except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
30枚の画像で360°取得します。(=1コマ12°)
・・・結構時間がかかります。まぁしょうがないですね。
前回同様、こちらのjpg->gifにしました。
GIFメーカー (動画や画像からアニメーションを作ろう!)
出来上がりはこちら。
角度を間違えました・・・。カメラの上方向じゃなくて、モデルの
上方向にすべきでした。メチャメチャ酔います。
無料でここまで出来るのすごい!と思うのですが、Blenderはもっと
出来るだろうな。