forked from bartvdbraak/blender
previous commit for retopo converted the strokes into a curve first, better to use the grease pencil data directly. renamed coordinates --> co, matching mesh verts
This commit is contained in:
parent
3f37f32e17
commit
9b0a3ee9ce
@ -156,20 +156,20 @@ class Spline:
|
||||
hub.links.append(hub_prev)
|
||||
hub_prev.links.append(hub)
|
||||
hub_prev = hub
|
||||
|
||||
def get_points(stroke):
|
||||
from Mathutils import Vector
|
||||
# TODO - why isnt point.co a Vector?
|
||||
return [Vector(tuple(point.co)) for point in stroke.points]
|
||||
|
||||
def get_splines(gp):
|
||||
for l in gp.layers:
|
||||
if l.active: # XXX - should be layers.active
|
||||
break
|
||||
|
||||
|
||||
|
||||
def get_points(spline):
|
||||
points = spline.points
|
||||
|
||||
if len(spline.bezier_points):
|
||||
points = spline.bezier_points
|
||||
|
||||
return [point.co.copy().resize3D() for point in points]
|
||||
|
||||
|
||||
def get_splines(data):
|
||||
return [Spline(get_points(spline)) for spline in data.splines]
|
||||
frame = l.active_frame
|
||||
|
||||
return [Spline(get_points(stroke)) for stroke in frame.strokes]
|
||||
|
||||
def xsect_spline(sp_a, sp_b, _hubs):
|
||||
from Mathutils import LineIntersect
|
||||
@ -203,9 +203,8 @@ def xsect_spline(sp_a, sp_b, _hubs):
|
||||
pt_a_prev = pt_a
|
||||
|
||||
|
||||
def calculate(scene, obj):
|
||||
data = obj.data
|
||||
splines = get_splines(data)
|
||||
def calculate(gp):
|
||||
splines = get_splines(gp)
|
||||
_hubs = {}
|
||||
|
||||
for i, sp in enumerate(splines):
|
||||
@ -265,22 +264,21 @@ def calculate(scene, obj):
|
||||
|
||||
|
||||
def main():
|
||||
# first convert gpencil
|
||||
# *** evil!
|
||||
scene = bpy.context.scene
|
||||
|
||||
bpy.ops.gpencil.convert(type='PATH')
|
||||
|
||||
|
||||
scene = bpy.context.scene
|
||||
obj = bpy.context.object
|
||||
if not obj:
|
||||
raise Exception("no active object")
|
||||
|
||||
obj_new = calculate(scene, obj)
|
||||
gp = None
|
||||
|
||||
# obj.selected = False
|
||||
scene.objects.unlink(obj)
|
||||
if obj:
|
||||
gp = obj.grease_pencil
|
||||
|
||||
if not gp:
|
||||
gp = scene.grease_pencil
|
||||
|
||||
if not gp:
|
||||
raise Exception("no active grease pencil")
|
||||
|
||||
obj_new = calculate(gp)
|
||||
|
||||
scene.objects.active = obj_new
|
||||
obj_new.selected = True
|
||||
|
@ -77,7 +77,7 @@ static void rna_def_gpencil_stroke_point(BlenderRNA *brna)
|
||||
RNA_def_struct_sdna(srna, "bGPDspoint");
|
||||
RNA_def_struct_ui_text(srna, "Grease Pencil Stroke Point", "Data point for freehand stroke curve.");
|
||||
|
||||
prop= RNA_def_property(srna, "coordinates", PROP_FLOAT, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "x");
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_ui_text(prop, "Coordinates", "");
|
||||
|
Loading…
Reference in New Issue
Block a user