forked from LeenkxTeam/LNXSDK
Repe [T3DU] Update - 31f26d171bba0355ce2a77031e3aad4c64dbc7e9
This commit is contained in:
54
leenkx/blender/lnx/logicnode/math/LN_poisson_disk.py
Normal file
54
leenkx/blender/lnx/logicnode/math/LN_poisson_disk.py
Normal file
@ -0,0 +1,54 @@
|
||||
from lnx.logicnode.lnx_nodes import *
|
||||
|
||||
class PoissonDiskNode(LnxLogicTreeNode):
|
||||
"""
|
||||
Generates an array of points with a poisson distribution.
|
||||
|
||||
SampleCube (Sample Rectangle):
|
||||
topLeft: Minimum bounding corner position.
|
||||
lowerRight: Maximum bounding corner position.
|
||||
minimumDistance: Minimum required spatial distance between points.
|
||||
pointsPerIteration: Candidate sample attempts per active point before rejection.
|
||||
|
||||
SampleSphere (Sample Circle):
|
||||
center: Sphere center position vector.
|
||||
radius: Bounding sphere radius.
|
||||
minimumDistance: Minimum required spatial distance between points.
|
||||
pointsPerIteration: Candidate sample attempts per active point before rejection.
|
||||
"""
|
||||
bl_idname = 'LNPoissonDiskNode'
|
||||
bl_label = 'Poisson Disk Sampling'
|
||||
lnx_section = 'generator'
|
||||
lnx_version = 1
|
||||
|
||||
def remove_extra_inputs(self, context):
|
||||
while len(self.inputs) > 3:
|
||||
self.inputs.remove(self.inputs[-1])
|
||||
if self.property0 in ('Sample Cube', 'Sample Rectangle'):
|
||||
self.add_input('LnxVectorSocket', 'Top Left')
|
||||
self.add_input('LnxVectorSocket', 'Lower Right')
|
||||
else:
|
||||
self.add_input('LnxVectorSocket', 'Center')
|
||||
self.add_input('LnxFloatSocket', 'Radius')
|
||||
|
||||
property0: HaxeEnumProperty(
|
||||
'property0',
|
||||
items = [('Sample Cube', 'Sample Cube', 'Sample Cube'),
|
||||
('Sample Sphere', 'Sample Sphere', 'Sample Sphere'),
|
||||
('Sample Rectangle', 'Sample Rectangle', 'Sample Rectangle'),
|
||||
('Sample Circle', 'Sample Circle', 'Sample Circle')],
|
||||
name='', default='Sample Cube', update=remove_extra_inputs)
|
||||
|
||||
def lnx_init(self, context):
|
||||
self.add_input('LnxNodeSocketAction', 'In')
|
||||
self.add_input('LnxIntSocket', 'Points Per Iteration')
|
||||
self.add_input('LnxFloatSocket', 'Minimum Distance')
|
||||
self.add_input('LnxVectorSocket', 'Top Left')
|
||||
self.add_input('LnxVectorSocket', 'Lower Right')
|
||||
|
||||
self.add_output('LnxNodeSocketAction', 'Out')
|
||||
self.add_output('LnxNodeSocketArray', 'Points')
|
||||
self.add_output('LnxIntSocket', 'Length')
|
||||
|
||||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
||||
Reference in New Issue
Block a user