ベジェカーブ作る前に日本語の場合は英語モードに切り替えなきゃスクリプトエラーになります。
BezierCurveはできるだけ大きく描きます。
BlenderPython
# Blender import
import bpy
import math
import bmesh
import csv
print("start python code....------------------------------------------>>>")
basedir="F:/SandBox/UE5PuchiCon22/Blender_Curve_To_Spline/"
with open(basedir+"/test.csv",'w',newline='') as file:
writer = csv.writer(file,delimiter = ',')
count = 0
writer.writerow(["","x","y","z",
"i_x","i_y","i_z",
"o_x","o_y","o_z"])
print("bpy.data.curves= "+str(bpy.data.curves))
for obj in bpy.data.curves:
print("obj.name= "+str(obj.name))
for object in bpy.data.objects:
print("object.name= "+object.name)
ob_curve = bpy.data.objects.get(obj.name)
print("ob_curve= "+str(ob_curve))
if(str(ob_curve)=="None"):
print("ob_curve =is= NoneType")
else:
for curve in obj.splines:
print("curve= "+str(curve))
for bezpoint in curve.bezier_points:
print("bezpoint= "+str(bezpoint))
if(str(bezpoint)=="NoneType"):
print("bezpoint =is= NoneType")
else:
xyz = ob_curve.matrix_world @ bezpoint.co
xyz_left = ob_curve.matrix_world @ bezpoint.handle_left
xyz_right = ob_curve.matrix_world @ bezpoint.handle_right
count += 1
writer.writerow([count, xyz[0], xyz[1], xyz[2],
xyz_left[0], xyz_left[1], xyz_left[2],
xyz_right[0], xyz_right[1], xyz_right[2]])
出力されたCSV
値はかなり大きめじゃないとだめよ
,x,y,z,i_x,i_y,i_z,o_x,o_y,o_z
1,13.595291137695312,230.46768188476562,70.73152160644531,158.9687042236328,225.82052612304688,70.73152160644531,-178.57012939453125,236.6106414794922,70.73152160644531
2,-207.3365020751953,-38.245094299316406,120.08828735351562,-198.0128631591797,17.276376724243164,181.6839141845703,-222.84031677246094,-130.56887817382812,17.66411781311035
3,43.76624298095703,-265.9769287109375,0.0,-181.01539611816406,-265.9769287109375,0.0,258.02471923828125,-265.9769287109375,0.0
4,231.6976318359375,-64.63948059082031,49.9024543762207,191.0831298828125,-174.81529235839844,-94.65201568603516,255.28945922851562,-0.641462504863739,133.87005615234375
CSVにそって構造体作ります。ブループリント>構造体
CSVをUEにドラッグして読みこみ
BP_SplineにSplinrコンポーネント付けて、コンストラクションスクリプトでこれつくります。
なにかは描かれた
こっから先は精度の問題?
できたっていうのかなこれ。
ZIP
Blender_Curve_To_Spline.zip
https://drive.google.com/file/d/1n4y_EoBTJDpaKdJnUNLTfLLxueqsYcGm/view?usp=sharing
UE532_CurveSpline2.zip
https://drive.google.com/file/d/1uk8QwaZbL_PE1HEF8umtN76axFFBJAoC/view?usp=sharing
参考URL
https://blenderartists.org/t/world-location-of-bezier-points/1219282
https://teratail.com/questions/146037
Text Editorでデバッグ時にprintで出力したものがPython Consoleに出てこなくて困っていましたが、勘違いしていました。Python Consoleではなくて、System Consoleの方に出てきます。
メニューバー Window > Toggle System Console で別ウィンドウでコマンドプロンプトがたちあがります。
https://docs.blender.org/api/current/bpy.ops.mesh.html