[Bf-extensions-cvs] [661331b5] master: object_particle_hair_net: remove: unsupported T63750

meta-androcto noreply at git.blender.org
Sun Sep 15 01:56:57 CEST 2019


Commit: 661331b5b15b58cc69b475f4e51f1b2a40bdd30a
Author: meta-androcto
Date:   Sun Sep 15 09:56:40 2019 +1000
Branches: master
https://developer.blender.org/rBAC661331b5b15b58cc69b475f4e51f1b2a40bdd30a

object_particle_hair_net: remove: unsupported T63750

===================================================================

D	object_particle_hair_net.py

===================================================================

diff --git a/object_particle_hair_net.py b/object_particle_hair_net.py
deleted file mode 100644
index 3869b92e..00000000
--- a/object_particle_hair_net.py
+++ /dev/null
@@ -1,971 +0,0 @@
-# ---------------------------------------------------
-# File HairNet.py
-# Written by Rhett Jackson April 1, 2013
-# Some routines were copied from "Curve Loop" by Bart Crouch
-# Some routines were copied from other sources
-# Very limited at this time:
-# NB 1) After running the script to create hair,
-# the user MUST manually enter Particle Mode on the Head object
-# and "touch" each point of each hair guide.
-# Using a large comb brish with very low strength is a good way to do this.
-# If it's not done, the hair strands are likely to:
-# be reset to a default/straight-out position during editing.
-# NB 2) All meshes must have the same number of vertices:
-#  in the direction that corresponds to hair growth
-# ---------------------------------------------------
-
-bl_info = {
-        "name": "HairNet",
-        "author": "Rhett Jackson",
-        "version": (0, 5, 1),
-        "blender": (2, 74, 0),
-        "location": "Properties",
-        "category": "Object",
-        "description": "Creates a particle hair system with hair guides from mesh edges which start at marked seams",
-        "wiki_url": "http://wiki.blender.org/index.php?title=Extensions:2.6/Py/Scripts/Objects/HairNet",
-        "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=35062&group_id=153&atid=467"
-        }
-
-import bpy
-import mathutils
-from mathutils import Vector
-from bpy.utils import register_module, unregister_module
-from bpy.props import *
-
-bpy.types.Object.hnMasterHairSystem=StringProperty(
-        name= "hnMasterHairSystem",
-        description= "Name of the hair system to be copied by this proxy object",
-        default="")
-
-bpy.types.Object.hnIsHairProxy=BoolProperty(
-        name="hnIsHairProxy",
-        description="Is this object a hair proxy object?",
-        default=False)
-
-bpy.types.Object.hnIsEmitter=BoolProperty(
-        name="hnIsEmitter",
-        description="Is this object a hair emitter object?",
-        default=False)
-
-bpy.types.Object.hnSproutHairs=IntProperty(
-        name="hnSproutHairs",
-        description="Number of additional hairs to add.",
-        default=0)
-
-# bpy.types.Object.hnSubdivideHairSections=IntProperty(
-#         name="hnSubdivideHairSections",
-#         description="Number of subdivisions to add along the guide hairs",
-#         default=0)
-
-
-def debPrintVertEdges(vert_edges):
-    print("vert_edges: ")
-    for vert in vert_edges:
-        print(vert, ": ", vert_edges[vert])
-
-def debPrintEdgeFaces(edge_faces):
-    print("edge_faces: ")
-    for edge in edge_faces:
-        print(edge, ": ", edge_faces[edge])
-
-def debPrintEdgeKeys(edges):
-    print("edge_keys")
-    for edge in edges:
-        print(edge, " : ", edge.key)
-
-def debPrintHairGuides(hairGuides):
-    print("Hair Guides:")
-    guideN=0
-
-    for group in hairGuides:
-        print("Guide #",guideN)
-        i=0
-        for guide in group:
-            print(i, " : ", guide)
-            i += 1
-        guideN+=1
-
-def debPrintSeams(seamVerts, seamEdges):
-    print("Verts in the seam: ")
-    for vert in seamVerts:
-        print(vert)
-    print("Edges in the seam: ")
-    for edge in seamEdges:
-        print(edge.key)
-
-def debPrintLoc(func=""):
-    obj = bpy.context.object
-    print(obj.name, " ", func)
-    print("Coords", obj.data.vertices[0].co)
-
-def getEdgeFromKey(mesh,key):
-    v1 = key[0]
-    v2 = key[1]
-    theEdge = 0
-    for edge in mesh.edges:
-        if v1 in edge.vertices and v2 in edge.vertices:
-            #print("Found edge :", edge.index)
-            return edge
-    return 0
-
-# returns all edge loops that a vertex is part of
-def getLoops(obj, v1, vert_edges, edge_faces, seamEdges):
-    debug = False
-
-    me = obj.data
-    if not vert_edges:
-        # Create a dictionary with the vert index as key and edge-keys as value
-        #It's a list of verts and the keys are the edges the verts belong to
-        vert_edges = dict([(v.index, []) for v in me.vertices if v.hide!=1])
-        for ed in me.edges:
-            for v in ed.key:
-                if ed.key[0] in vert_edges and ed.key[1] in vert_edges:
-                    vert_edges[v].append(ed.key)
-        if debug: debPrintVertEdges(vert_edges)
-    if not edge_faces:
-        # Create a dictionary with the edge-key as key and faces as value
-        # It's a list of edges and the faces they belong to
-        edge_faces = dict([(ed.key, []) for ed in me.edges if (me.vertices[ed.vertices[0]].hide!=1 and me.vertices[ed.vertices[1]].hide!=1)])
-        for f in me.polygons:
-            for key in f.edge_keys:
-                if key in edge_faces and f.hide!=1:
-                    edge_faces[key].append(f.index)
-        if debug : debPrintEdgeFaces(edge_faces)
-
-    ed_used = [] # starting edges that are already part of a loop that is found
-    edgeloops = [] # to store the final results in
-    for ed in vert_edges[v1.index]: #ed is all the edges v1 is a part of
-        if ed in ed_used:
-            continue
-        seamTest = getEdgeFromKey(me, ed)
-        if seamTest.use_seam:
-            #print("Edge ", seamTest.index, " is a seam")
-            continue
-
-        vloop = [] # contains all verts of the loop
-        poles = [] # contains the poles at the ends of the loop
-        circle = False # tells if loop is circular
-        n = 0 # to differentiate between the start and the end of the loop
-
-        for m in ed: # for each vert in the edge
-            n+=1
-            active_ed = ed
-            active_v  = m
-            if active_v not in vloop:
-                vloop.insert(0,active_v)
-            else:
-                break
-            stillGrowing = True
-            while stillGrowing:
-                stillGrowing = False
-                active_f = edge_faces[active_ed] #List of faces the edge belongs to
-                new_ed = vert_edges[active_v] #list of edges the vert belongs to
-                if len(new_ed)<3: #only 1 or 2 edges
-                    break
-                if len(new_ed)>4: #5-face intersection
-                    # detect poles and stop growing
-                    if n>1:
-                        poles.insert(0,vloop.pop(0))
-                    else:
-                        poles.append(vloop.pop(-1))
-                    break
-                for i in new_ed: #new_ed - must have 3 or 4 edges coming from the vert
-                    eliminate = False # if edge shares face, it has to be eliminated
-                    for j in edge_faces[i]: # j is one of the face indices in edge_faces
-                        if j in active_f:
-                            eliminate = True
-                            break
-                    if not eliminate: # it's the next edge in the loop
-                        stillGrowing = True
-                        active_ed = i
-                        if active_ed in vert_edges[v1.index]: #the current edge contains v1
-
-                            ed_used.append(active_ed)
-                        for k in active_ed:
-                            if k != active_v:
-                                if k not in vloop:
-
-                                    if n>1:
-                                        vloop.insert(0,k)
-                                    else:
-                                        vloop.append(k)
-
-
-                                    active_v = k
-                                    break
-                                else:
-                                    stillGrowing = False # we've come full circle
-                                    circle = True
-                        break
-        #TODO: Function to sort vloop. Use v1 and edge data to walk the ring in order
-        vloop = sortLoop(obj, vloop, v1, seamEdges, vert_edges)
-        edgeloops.append([vloop, poles, circle])
-    for loop in edgeloops:
-        for vert in loop[0]:
-            me.vertices[vert].select=True
-            #me.edges[edge].select=True
-    return edgeloops, vert_edges, edge_faces
-
-
-
-
-def getSeams(obj):
-    debug = False
-    #Make a list of all edges marked as seams
-    error = 0
-    seamEdges = []
-    for edge in obj.data.edges:
-        if edge.use_seam:
-            seamEdges.append(edge)
-
-    #Sort the edges in seamEdges
-#     seamEdges = sortEdges(seamEdges)
-
-    #Make a list of all verts in the seam
-    seamVerts = []
-    for edge in seamEdges:
-        for vert in edge.vertices:
-            if vert not in seamVerts:
-                seamVerts.append(vert)
-
-    if(len(seamEdges) < 2):
-        error = 2
-        return 0, 0, error
-
-    seamVerts = sortSeamVerts(seamVerts, seamEdges)
-    if debug: debPrintSeams(seamVerts, seamEdges)
-
-    if(len(seamEdges) == 0):
-        error = 2
-
-    return seamVerts, seamEdges, error
-
-def getNextVertInEdge(edge, vert):
-    if vert == edge.vertices[0]:
-        return edge.vertices[1]
-    else:
-        return edge.vertices[0]
-
-def makeNewHairSystem(headObject,systemName):
-    bpy.ops.object.mode_set(mode='OBJECT')
-    #Adding a particle modifier also works but requires pushing/pulling the active object and selection.
-    headObject.modifiers.new("HairNet", 'PARTICLE_SYSTEM')
-
-    #Set up context override
-#    override = {"object": headObject, "particle_system": systemName}
-#    bpy.ops.object.particle_system_add(override)
-    headObject.particle_systems[-1].name = systemName
-    return headObject.particle_systems[systemName]
-
-def makePolyLine(objName, curveName, cList):
-    #objName and curveName are strings cList is a list of vectors
-    curveData = bpy.data.curves.new(name=curveName, type='CURVE')
-    curveData.dimensions = '3D'
-
-#     objectData = bpy.data.objects.new(objName, curveData)
-#     objectData.location = (0,0,0) #object origin
-#     bpy.context.scene.objects.link(objectData)
-
-    polyline = curveData.splines.new('BEZIER')
-    polyline.bezier_points.add(len(cList)-1)
-    for num in range(len(c

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list