Esempio n. 1
0
    def __init__(self):
        self.particles = []
        self.targetID = r'8d8dd842-3d3f-4f65-b7d4-e4089e4f9cbb'
        self.target = rs.coercemesh(self.targetID)
        self.boundary = rg.Box(rg.Plane.WorldXY, rg.Interval(0, 100),
                               rg.Interval(0, 100), rg.Interval(0, 100))
        self.boundary = self.boundary.ToBrep()

        self.time = 0

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        grad = color.GetGradient(1)
        self.attr.ObjectColor = color.GradientOfColors(grad, 0)
        self.attr.ObjectColor = drawing.Color.White
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        #ATTR1
        self.attr1 = rc.DocObjects.ObjectAttributes()
        self.attr1.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr1.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        self.attr1.ObjectColor = drawing.Color.Green
        index = sc.doc.Materials.Add()
        mat1 = sc.doc.Materials[index]
        mat1.DiffuseColor = self.attr1.ObjectColor
        mat1.CommitChanges()
        self.attr1.MaterialIndex = index

        #ATTR2
        self.attr2 = rc.DocObjects.ObjectAttributes()
        self.attr2.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr2.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        self.attr2.ObjectColor = drawing.Color.Blue
        index = sc.doc.Materials.Add()
        mat2 = sc.doc.Materials[index]
        mat2.DiffuseColor = self.attr2.ObjectColor
        mat2.CommitChanges()
        self.attr2.MaterialIndex = index

        self.clays = []
        #numClays = 1
        #for i in range(numClays):
        #    self.clays.append(Clay(self, color.GradientOfColors(grad, i/numClays), rg.Interval(25+(i*10), 35+(i*10))))
        numClays = 1
        self.clays.append(
            Clay(self, color.GradientOfColors(grad, 0), rg.Interval(35, 65)))

        self.particles = []
        for i in range(6):
            self.particles.append(Particle(self))
Esempio n. 2
0
    def __init__(self):
        self.particles = []

        self.boundary = rg.Box(rg.Plane.WorldXY, rg.Interval(0, 100),
                               rg.Interval(0, 100), rg.Interval(0, 100))
        self.boundary = self.boundary.ToBrep()

        self.time = 0

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        grad = color.GetGradient(5)
        self.attr.ObjectColor = color.GradientOfColors(grad, 0)
        self.attr.ObjectColor = drawing.Color.White
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        self.attr0 = self.attr.Duplicate()
        self.attr0.ObjectColor = color.GradientOfColors(grad, .5)
        index = sc.doc.Materials.Add()
        self.mat0 = sc.doc.Materials[index]
        self.mat0.DiffuseColor = self.attr0.ObjectColor
        self.mat0.CommitChanges()
        self.attr0.MaterialIndex = index

        self.attr1 = self.attr.Duplicate()
        self.attr1.ObjectColor = color.GradientOfColors(grad, 0)
        index = sc.doc.Materials.Add()
        self.mat1 = sc.doc.Materials[index]
        self.mat1.DiffuseColor = self.attr1.ObjectColor
        self.mat1.CommitChanges()
        self.attr1.MaterialIndex = index

        self.attr2 = self.attr.Duplicate()
        self.attr2.ObjectColor = color.GradientOfColors(grad, 1)
        index = sc.doc.Materials.Add()
        self.mat2 = sc.doc.Materials[index]
        self.mat2.DiffuseColor = self.attr2.ObjectColor
        self.mat2.CommitChanges()
        self.attr2.MaterialIndex = index

        self.clay0 = Clay(self, self.attr0, rg.Interval(35, 40))
        self.clay1 = Clay(self, self.attr1, rg.Interval(30, 35))
        self.clay2 = Clay(self, self.attr2, rg.Interval(40, 55))

        self.balls = []
        for i in range(5):
            self.balls.append(Ball(self))
Esempio n. 3
0
 def __init__(self, system):
     self.system = system
     self.val = None
     self.history = []
     self.historyPos = []
     self.pipeIDs = []
     self.pipe = None
     self.pipes = []
     self.alive = True
     self.length = 4
     self.turned = False
     self.prevVel = None
     self.prevPlane = None
     self.majorBrep = rg.Brep()
     
     self.cases = {
     0: rg.Vector3d(1,0,0),
     1: rg.Vector3d(-1,0,0),
     2: rg.Vector3d(0,1,0),
     3: rg.Vector3d(0,-1,0),
     4: rg.Vector3d(0,0,1),
     5: rg.Vector3d(0,0,-1)
     }
     
     self.case = random.randint(0,len(self.cases)-1)
     
     #Movement
     self.vel = rg.Vector3d(random.uniform(-1,1),random.uniform(-1,1), random.uniform(-.2,.2))
     self.vel.Unitize()
     self.tempVel = self.vel.Clone()
     self.speed = self.length
     self.vel *= self.speed
     self.acc = rg.Vector3d(0,0,0)
     self.size = 1
     self.cone = None
     self.coneID = None
     self.rotAngle = 0
     
     #Color and Material
     self.attr = rc.DocObjects.ObjectAttributes()
     self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
     self.grad = color.GetGradient(random.randint(0,9))
     #col = drawing.Color.AliceBlue
     self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
     self.attr.ObjectColor = color.GradientOfColors(self.grad, 0)
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     #Position
     self.pos =  rg.Point3d(random.uniform(5,95), random.uniform(5,95), random.uniform(5,95))
     #self.pos =  rg.Point3d(50, 50, 50)
     self.plane = rg.Plane(self.pos, self.vel)
     
     #Bake
     self.tempIDs = []
     self.ids = []
     self.coneIDs = []
Esempio n. 4
0
 def UpdateDisplay(self):
     if self.id: sc.doc.Objects.Delete(self.id, True)
     
     
     if len(self.interPts) >= 3:
         r, plane = rg.Plane.FitPlaneToPoints(self.interPts)
         if r == rg.PlaneFitResult.Success:
             us = []
             vs = []
             for eachPt in self.interPts:
                 r, u, v = plane.ClosestParameter(eachPt)
                 us.append(u)
                 vs.append(v)
             
             uInt = rg.Interval(min(us), max(us))
             vInt = rg.Interval(min(vs), max(vs))
             
             planeSurface = rg.PlaneSurface(plane, uInt, vInt)
             self.id = sc.doc.Objects.AddBrep(planeSurface.ToBrep())
     
     
     if False:
         if len(self.belowVertices) > 0 and len(self.belowVertices) < 8:
             self.attr.ObjectColor = color.GradientOfColors(self.system.grad, util.Remap(len(self.belowVertices), 0, 8, 0, 1), 2)            
             
             index = sc.doc.Materials.Add()
             mat = sc.doc.Materials[index]
             mat.DiffuseColor = self.attr.ObjectColor
             mat.CommitChanges()
             self.attr.MaterialIndex = index
             
             xform = rg.Transform.Scale(self.centerPt, util.Remap(len(self.belowVertices), 1, 7, .1, 1))
             box = self.box.Duplicate()
             box.Transform(xform)
             self.id = sc.doc.Objects.AddMesh(box, self.attr)
Esempio n. 5
0
    def Update(self, time):
        for id in self.ids:
            if id:
                sc.doc.Objects.Delete(id, True)
        self.time = time
        #################################
        attr = self.attr.Duplicate()
        grad = color.GetGradient(2)
        col1 = color.GradientOfColors(grad, util.Remap(self.time, 0, 150, 0,
                                                       1))
        attr.ObjectColor = col1

        attr.ObjectColor = col1
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = attr.ObjectColor
        self.mat.CommitChanges()
        attr.MaterialIndex = index

        safety = 0
        while True:
            safety += 1
            if safety > 20:
                print "Safety"
                break
            newParticle = Particle(self, rg.Point3d(50, 50, 80), attr)
            if newParticle.hit == False:
                self.particles.append(newParticle)
                break

        for particle in self.particles:
            particle.Update()
Esempio n. 6
0
 def __init__(self, system):
     self.system = system
     self.pos = rg.Point3d(random.uniform(10,90), random.uniform(10,90), random.uniform(10,90))
     #self.vel = rg.Vector3d(random.uniform(-2, 2),random.uniform(-2, 2),random.uniform(-2, 2))
     self.vel = rg.Vector3d(0,0,0)
     self.vel.Unitize()
     self.vel *= 5
     self.acc = rg.Vector3d(0,0,0)
     
     self.vel += self.acc
     self.id = None
     self.ids = []
     self.age = 0
     
     self.prevPlane = rg.Plane.WorldXY
     self.xform = None
     
     #Attr
     self.attr = rc.DocObjects.ObjectAttributes()
     self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
     self.grad = color.GetGradient(10)
     self.attr.ObjectColor = color.GradientOfColors(self.grad, 0)
     self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     self.InitTriangle()
Esempio n. 7
0
    def __init__(self):
        self.particles = []

        self.boundary = rg.Box(rg.Plane.WorldXY, rg.Interval(0, 100),
                               rg.Interval(0, 100), rg.Interval(0, 100))
        self.boundary = self.boundary.ToBrep()

        initPlane = rg.Plane.WorldXY
        initPlane.Origin = rg.Point3d(50, 50, 50)

        self.majorBrep = rg.Brep()

        self.openPlanes = []
        self.deadPlanes = []
        self.nextRoundPlanes = [initPlane]
        self.modules = []

        self.size = 1
        self.time = 0

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        grad = color.GetGradient(5)
        self.attr.ObjectColor = color.GradientOfColors(grad, 0)
        self.attr.ObjectColor = drawing.Color.White
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index
Esempio n. 8
0
    def __init__(self):
        self.particles = []
        self.boundary = rg.Box(rg.Plane.WorldXY, rg.Interval(-25, 125),
                               rg.Interval(-25, 125), rg.Interval(0, 100))
        self.boundary = self.boundary.ToBrep()

        self.time = 0
        self.ids = []

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        grad = color.GetGradient(1)
        self.attr.ObjectColor = color.GradientOfColors(grad, 0)
        self.attr.ObjectColor = drawing.Color.White
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        self.particles = []
        #for i in range(2):
        self.particles.append(Particle(self, rg.Point3d(25, 50, 80)))
        self.particles.append(Particle(self, rg.Point3d(75, 50, 80)))
Esempio n. 9
0
 def UpdateDisplay(self):
     self.attr.ObjectColor = color.GradientOfColors(self.grad, util.Remap(self.acc.Length, 0, .25, 0, 1))
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
Esempio n. 10
0
 def __init__(self, system):
     self.system = system
     #self.pos = rg.Point3d(random.uniform(10,90), random.uniform(10,90), 90)
     self.pos = rg.Point3d(50,50,95)
     self.vel = rg.Vector3d(random.uniform(-2, 2),random.uniform(-2, 2),0)
     #self.vel = rg.Vector3d(0,0,0)
     self.acc = rg.Vector3d(0,0,-.5)
     self.futureVel = None
     self.ids = []
     self.age = 0
     self.width = random.uniform(1, 9)
     self.depth = random.uniform(1, 9)
     self.height = random.uniform(1, 9)
     self.plane = rg.Plane.WorldXY
     self.plane.Origin = self.pos
     xSize = rg.Interval(-self.width/2, self.width/2)
     ySize = rg.Interval(-self.depth/2, self.depth/2)
     zSize = rg.Interval(-self.height/2, self.height/2)
     self.box = rg.Box(self.plane, xSize, ySize, zSize)
     self.boxBrep = self.box.ToBrep()
     self.id = sc.doc.Objects.AddBrep(self.boxBrep)
     self.vel += self.acc
     self.futurePos = rg.Point3d.Add(self.pos, self.vel)
     self.attr = rc.DocObjects.ObjectAttributes()
     self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
     grad = color.GetGradient(1)
     self.attr.ObjectColor = color.GradientOfColors(grad, random.uniform(0,1))
     self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     self.primaryAxis = None
Esempio n. 11
0
 def Update2(self, time):
     self.prevPlane = self.plane
     
     self.attr.ObjectColor = color.GradientOfColors(self.grad, util.Remap(time, 0, 150, 0, 1))
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     safety = 0
     while True:
         safety += 1
         case = random.randint(1,2)
         #case = 2
         if case == 0:
             #Straight
             geo = self.system.straightSec.geo.Duplicate()
             endPlane = self.system.straightSec.planeEnd.Clone()
             xform = rg.Transform.PlaneToPlane(rg.Plane.WorldXY, self.prevPlane)
         if case == 1:
             #Angle
             geo = self.system.angleSec.geo.Duplicate()
             endPlane = self.system.angleSec.planeEnd.Clone()
             self.prevPlane.Rotate(math.radians(random.uniform(0,360)), self.prevPlane.Normal, self.prevPlane.Origin)
             xform = rg.Transform.PlaneToPlane(rg.Plane.WorldXY, self.prevPlane)
         if case == 2:
             #U Turn
             geo = self.system.uTurnSec.geo.Duplicate()
             endPlane = self.system.uTurnSec.planeEnd.Clone()
             #rotForm = rg.Transform.Rotation(rg.Point3d(0,0,0))
             #self.prevPlane.Transform(rotForm)
             self.prevPlane.Rotate(math.radians(random.uniform(0,360)), self.prevPlane.Normal, self.prevPlane.Origin)
             
             xform = rg.Transform.PlaneToPlane(rg.Plane.WorldXY, self.prevPlane)
         
         
         geo.Transform(xform)
         finished = False
         results = rg.Intersect.Intersection.BrepBrep(geo, self.system.boundary, sc.doc.ModelAbsoluteTolerance)
         if safety > 20:
             print "SAFETY"
             self.alive = False
             break
         if len(results[1]) == 0:
             #results = rg.Intersect.Intersection.BrepBrep(geo, self.majorBrep, sc.doc.ModelAbsoluteTolerance)
             #if len(results[1]) == 0:
             #    self.majorBrep.Append(geo)
             #    finished = True
             #if finished:
             break
     
     endPlane.Transform(xform)
     if self.alive:
         sc.doc.Objects.AddBrep(geo, self.attr)
     
     self.plane = endPlane
Esempio n. 12
0
    def __init__(self):
        self.particles = []

        self.boundary = rg.Box(rg.Plane.WorldXY, rg.Interval(0, 100),
                               rg.Interval(0, 100), rg.Interval(0, 100))
        self.boundary = self.boundary.ToBrep()

        initPlane = rg.Plane.WorldXY
        initPlane.Origin = rg.Point3d(50, 50, 50)

        self.majorBrep = rg.Brep()
        self.breps = []
        #self.pn = perlin.TileableNoise()

        self.openPlanes = []
        self.deadPlanes = []
        self.nextRoundPlanes = [initPlane]
        self.modules = []

        self.time = 0

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        grad = color.GetGradient(5)
        self.attr.ObjectColor = color.GradientOfColors(grad, 0)
        self.attr.ObjectColor = drawing.Color.White
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.balls = []
        for i in range(10):
            self.balls.append(Ball())
        #self.ball = Ball()

        self.voxels = []
        self.size = 10
        for i in range(0, 10):
            for j in range(0, 10):
                for k in range(0, 10):
                    s = 10
                    thisPlane = rg.Plane(
                        rg.Point3d(i * s + (s / 2), j * s + (s / 2),
                                   k * s + (s / 2)), rg.Vector3d(0, 0, 1))
                    self.openPlanes.append(thisPlane)

        for plane in self.openPlanes:
            self.voxels.append(Module(self, self.size, plane))

        for i in range(0):
            self.voxels.append(Module(self, self.size, 0))
            self.openPlanes += self.nextRoundPlanes
        self.nextRoundPlanes = []
Esempio n. 13
0
 def UpdateDisplay(self):
     sphere = rg.Sphere(self.system.mesh.Vertices[self.index], .8)
     
     self.attr.ObjectColor = color.GradientOfColors(self.system.grad, util.Remap(self.d, 0, 30, 0, 1), 3)
     index = sc.doc.Materials.Add()
     mat = sc.doc.Materials[index]
     mat.DiffuseColor = self.attr.ObjectColor
     mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     self.system.ids.append(sc.doc.Objects.AddSphere(sphere, self.attr))
Esempio n. 14
0
 def __init__(self, system, vec = None):
     self.system = system
     self.majorBrep = rg.Brep()
     self.alive = True
     self.age = 0
     
     self.history = []
     self.segments = []
     
     #Movement
     #self.vel = rg.Vector3d(random.uniform(-1,1),random.uniform(-1,1), random.uniform(-.2,.2))
     #self.vel.Unitize()
     #self.size = random.uniform(1, 3)
     self.size = .1
     self.length = .75
     
     #Color and Material
     self.attr = rc.DocObjects.ObjectAttributes()
     self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
     #self.grad = color.GetGradient(random.randint(0,9))
     self.grad = color.GetGradient(4)
     #col = drawing.Color.AliceBlue
     col = color.GradientOfColors(self.grad, random.uniform(0,1))
     self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
     self.attr.ObjectColor = col
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     #Position
     self.pos =  rg.Point3d(random.uniform(5,95), random.uniform(5,95), .1)
     #self.pos =  rg.Point3d(50, 50, 99)
     self.dir = rg.Vector3d(0,0,1)
     initPlane = rg.Plane.WorldXY
     initPlane.Origin = self.pos
     
     initPlane = rg.Plane(self.pos, self.dir)
     
     self.openPlanes = []
     self.planesToRemove = []
     self.nextRoundPlanes = [initPlane]
     
     self.crv = None
     self.crvs = rc.Collections.CurveList()
     self.pts = []
     
     self.ids = []
     
     sc.doc.Objects.AddSphere(rg.Sphere(self.pos, self.size), self.attr)
Esempio n. 15
0
    def __init__(self):
        self.particles = []

        self.boundary = rg.Box(rg.Plane.WorldXY, rg.Interval(0, 100),
                               rg.Interval(0, 100), rg.Interval(0, 100))
        self.boundary = self.boundary.ToBrep()

        self.time = 0

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        grad = color.GetGradient(1)
        self.attr.ObjectColor = color.GradientOfColors(grad, 0)
        self.attr.ObjectColor = drawing.Color.White
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject

        self.clays = []
        #numClays = 1
        #for i in range(numClays):
        #    self.clays.append(Clay(self, color.GradientOfColors(grad, i/numClays), rg.Interval(25+(i*10), 35+(i*10))))
        numClays = 1
        self.clays.append(
            Clay(self, color.GradientOfColors(grad, 0), rg.Interval(0, 30)))

        self.balls = []
        for i in range(4):
            self.balls.append(Ball(self))
Esempio n. 16
0
 def __init__(self, system, x,y,z, xi, yi, zi):
     self.system = system
     self.pos = rg.Point3f(x,y,z)
     
     self.xi = xi
     self.yi = yi
     self.zi = zi
     
     sum = 0
     for target in self.system.targets:
         sum += target.radius/((target.pos - rg.Point3d(self.pos)).Length)
     self.isoValue = sum
     
     self.attr = self.system.attr.Duplicate()
     self.attr.ObjectColor = color.GradientOfColors(self.system.grad, util.Remap(self.isoValue, .2, .8, 0, 1), 2)
Esempio n. 17
0
    def UpdateDisplay(self):
        self.attr.ObjectColor = color.GradientOfColors(
            self.grad, util.Remap(self.acc.Length, 0, .25, 0, 1))
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        #for id in self.ids:
        #    sc.doc.Objects.Delete(id, True)

        if self.id: sc.doc.Objects.Delete(self.id, True)

        self.id = sc.doc.Objects.AddMesh(self.mesh, self.attr)
Esempio n. 18
0
 def UpdateDisplay(self):
     self.attr.ObjectColor = color.GradientOfColors(self.grad, util.Remap(self.vel.Length, 3, 7, 0, 1))
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     #if self.id: sc.doc.Objects.Delete(self.id, True)
     for id in self.ids:
         sc.doc.Objects.Delete(id, True)
     
     if self.id is None:
         self.id = sc.doc.Objects.AddMesh(self.mesh, self.attr)
     else:
         self.id = sc.doc.Objects.Transform(self.id, self.xform, True)
Esempio n. 19
0
    def __init__(self, targets, iv):
        self.numVoxels = 25
        self.voxelSize = 4
        self.grad = color.GetGradient(10)
        self.targets = []
        self.isoValue = iv
        self.mesh = rg.Mesh()
        self.id = None
        self.pts = []
        self.ptsCollection = rc.Collections.Point3dList()

        self.targets = targets

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        grad = color.GetGradient(5)
        self.attr.ObjectColor = color.GradientOfColors(
            grad, util.Remap(self.isoValue, .3, .5, 0, 1), 3)
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        index = sc.doc.Materials.Add()
        mat = sc.doc.Materials[index]
        mat.DiffuseColor = self.attr.ObjectColor
        mat.CommitChanges()
        self.attr.MaterialIndex = index

        #Setup Vertices
        self.vertices = []
        for x in range(self.numVoxels + 1):
            yRow = []
            for y in range(self.numVoxels + 1):
                zRow = []
                for z in range(self.numVoxels + 1):
                    zRow.append(
                        Vertex(self, x * self.voxelSize, y * self.voxelSize,
                               z * self.voxelSize, x, y, z))
                yRow.append(zRow)
            self.vertices.append(yRow)

        #Setup Voxels
        self.voxels = []
        index = 0
        for x in range(self.numVoxels):
            for y in range(self.numVoxels):
                for z in range(self.numVoxels):
                    self.voxels.append(
                        Voxel(self, x * self.voxelSize, y * self.voxelSize,
                              z * self.voxelSize, x, y, z))
Esempio n. 20
0
    def UpdateDisplay(self):
        if self.id: sc.doc.Objects.Delete(self.id, True)

        if len(self.interPts) >= 3:

            r, plane = rg.Plane.FitPlaneToPoints(self.interPts)
            if r == rg.PlaneFitResult.Success:
                if False:
                    v = plane.RemapToPlaneSpace(self.vertices[0].pos)[1]
                    if v.Z < 0 and self.vertices[
                            0].isoValue < self.system.isoValue:
                        #keep plane
                        pass
                    elif v.Z < 0 and self.vertices[
                            0].isoValue >= self.system.isoValue:
                        #flip plane
                        nRev = plane.Normal
                        nRev.Reverse()
                        plane = rg.Plane(plane.Origin, nRev)
                    elif v.Z >= 0 and self.vertices[
                            0].isoValue < self.system.isoValue:
                        #flip plane
                        nRev = plane.Normal
                        nRev.Reverse()
                        plane = rg.Plane(plane.Origin, nRev)
                    elif v.Z >= 0 and self.vertices[
                            0].isoValue >= self.system.isoValue:
                        #keep plane
                        pass

                mesh = geo.DelaunayMesh(self.interPts, plane)
                self.system.mesh.Append(mesh)

                #self.id = sc.doc.Objects.AddMesh(mesh)

        if False:
            self.attr.ObjectColor = color.GradientOfColors(
                self.system.grad,
                util.Remap(len(self.belowVertices), 0, 8, 0, 1), 2)

            index = sc.doc.Materials.Add()
            mat = sc.doc.Materials[index]
            mat.DiffuseColor = self.attr.ObjectColor
            mat.CommitChanges()
            self.attr.MaterialIndex = index
Esempio n. 21
0
    def __init__(self, system):
        self.system = system
        self.val = None
        self.history = []
        self.historyPos = []
        self.pipeIDs = []
        self.pipe = None

        #Movement
        self.vel = rg.Vector3d(random.uniform(-1, 1), random.uniform(-1, 1),
                               random.uniform(-1, 1))
        self.vel.Unitize()
        self.speed = 4
        self.vel *= self.speed
        self.acc = rg.Vector3d(0, 0, 0)
        self.size = 5
        self.cone = None
        self.coneID = None
        self.rotAngle = 0

        #Color and Material
        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        grad = color.GetGradient(1)
        self.attr.ObjectColor = color.GradientOfColors(grad,
                                                       random.uniform(0, 1))
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        #Position
        self.pos = rg.Point3d(random.uniform(5, 95), random.uniform(5, 95),
                              random.uniform(5, 95))
        self.plane = rg.Plane(self.pos, self.vel)
        #self.sphere = rg.Sphere(self.pos, self.size )

        #Bake
        self.tempIDs = []
        self.ids = []
        #self.ids.append(sc.doc.Objects.AddSphere(self.sphere, self.attr))
        self.coneIDs = []
Esempio n. 22
0
    def UpdateDisplay(self):
        if self.id: sc.doc.Objects.Delete(self.id, True)
        if len(self.belowVertices) > 0 and len(self.belowVertices) < 8:
            self.attr.ObjectColor = color.GradientOfColors(
                self.system.grad,
                util.Remap(len(self.belowVertices), 0, 8, 0, 1), 2)

            index = sc.doc.Materials.Add()
            mat = sc.doc.Materials[index]
            mat.DiffuseColor = self.attr.ObjectColor
            mat.CommitChanges()
            self.attr.MaterialIndex = index

            xform = rg.Transform.Scale(
                self.centerPt, util.Remap(len(self.belowVertices), 1, 7, .1,
                                          1))
            box = self.box.Duplicate()
            box.Transform(xform)
            self.id = sc.doc.Objects.AddMesh(box, self.attr)
Esempio n. 23
0
    def UpdateDisplay(self):
        for id in self.ids:
            sc.doc.Objects.Delete(id, True)

        for i, pt in enumerate(self.path):
            sphere = rg.Sphere(pt, .8)
            self.attr.ObjectColor = color.GradientOfColors(
                self.grad, util.Remap(i, 0, len(self.path), 0, 1), 3)
            index = sc.doc.Materials.Add()
            mat = sc.doc.Materials[index]
            mat.DiffuseColor = self.attr.ObjectColor
            mat.CommitChanges()
            self.attr.MaterialIndex = index

            self.ids.append(sc.doc.Objects.AddSphere(sphere, self.attr))

        self.ids.append(sc.doc.Objects.AddMesh(self.mesh))
        self.vObjects[self.sourceIndex].UpdateDisplay()
        self.vObjects[self.targetIndex].UpdateDisplay()
Esempio n. 24
0
    def UpdateDisplay(self):
        if self.id: sc.doc.Objects.Delete(self.id, True)

        if len(self.interPts) >= 3:
            r, plane = rg.Plane.FitPlaneToPoints(self.interPts)
            if r == rg.PlaneFitResult.Success:
                mesh = geo.DelaunayMesh(self.interPts, plane)
                self.system.mesh.Append(mesh)

                #self.id = sc.doc.Objects.AddMesh(mesh)

        if False:
            self.attr.ObjectColor = color.GradientOfColors(
                self.system.grad,
                util.Remap(len(self.belowVertices), 0, 8, 0, 1), 2)

            index = sc.doc.Materials.Add()
            mat = sc.doc.Materials[index]
            mat.DiffuseColor = self.attr.ObjectColor
            mat.CommitChanges()
            self.attr.MaterialIndex = index
Esempio n. 25
0
    def Update(self, time):
        grad = color.GetGradient(1)
        self.attr.ObjectColor = color.GradientOfColors(
            grad, util.Remap(time, 0, 150, 0, 1))
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.openPlanes = self.nextRoundPlanes
        self.openPlanes = self.openPlanes[:8]
        self.nextRoundPlanes = []

        planesToRemove = []
        for plane in self.openPlanes:
            planesToRemove.append(plane)
            self.AddModule(plane)

        for plane in planesToRemove:
            self.openPlanes.remove(plane)
Esempio n. 26
0
    def InitTriangle(self):
        xval = util.Remap(self.pos.X, 0, 100, 0, 1 * 2)
        yval = util.Remap(self.pos.Y, 0, 100, 0, 1 * 2)
        zval = util.Remap(self.pos.Z, 0, 100, 0, 1 * 5)
        val = self.system.pn.noise3(xval + self.system.p.pos.X,
                                    yval + self.system.p.pos.Y,
                                    zval + self.system.p.pos.Z)
        self.size = util.Remap(val, -1, 1, -2, 2)
        if self.size > 0:
            self.pt0 = rg.Point3f(0, self.size, 0)
            self.pt1 = rg.Point3f(-self.size / 2, 0, 0)
            self.pt2 = rg.Point3f(self.size / 2, 0, 0)

            camPos = sc.doc.Views.ActiveView.ActiveViewport.CameraLocation
            vec = camPos - self.pos
            plane = rg.Plane(self.pos, vec)
            testPt = self.pos + rg.Vector3f(0, 0, 1)
            cp = plane.ClosestPoint(testPt)
            yAxis = cp - self.pos
            xprod = rg.Vector3d.CrossProduct(vec, yAxis)
            plane = rg.Plane(self.pos, xprod, yAxis)
            xform = rg.Transform.PlaneToPlane(rg.Plane.WorldXY, plane)
            #self.xform = rg.Transform.PlaneToPlane(self.prevPlane, plane)
            self.prevPlane = plane.Clone()

            col = color.GradientOfColors(self.grad,
                                         util.Remap(val, -1, 1, -1, 1), 2)

            self.system.mesh.VertexColors.Add(col)
            self.system.mesh.VertexColors.Add(col)
            self.system.mesh.VertexColors.Add(col)

            self.pt0.Transform(xform)
            self.pt1.Transform(xform)
            self.pt2.Transform(xform)
            i0 = self.system.mesh.Vertices.Add(self.pt0)
            i1 = self.system.mesh.Vertices.Add(self.pt1)
            i2 = self.system.mesh.Vertices.Add(self.pt2)
            self.system.mesh.Faces.AddFace(i0, i1, i2)
Esempio n. 27
0
 def __init__(self):
     self.p = Target(rg.Point3d(50,50,50), rg.Vector3d(.05,0.05,0.05))
     self.dots = []
     self.time = 0
     self.links = []
     self.id = None
     self.grad = color.GetGradient(10)
     self.mesh = rg.Mesh()
     self.pn = perlin.SimplexNoise()
     for i in range(1000):
         self.dots.append(Dot(self))
     
     #Attr
     self.attr = rc.DocObjects.ObjectAttributes()
     self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
     self.grad = color.GetGradient(10)
     self.attr.ObjectColor = color.GradientOfColors(self.grad, 0)
     self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
Esempio n. 28
0
    def UpdateDisplay(self):
        self.attr.ObjectColor = color.GradientOfColors(
            self.grad, util.Remap(self.age, 0, 150, 0, 1))
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        if self.id: sc.doc.Objects.Delete(self.id, True)
        self.id = sc.doc.Objects.AddBrep(self.boxBrep, self.attr)
        for id in self.ids:
            sc.doc.Objects.Delete(id, True)

        edgesCurrent = self.boxBrep.GetWireframe(-1)
        if len(self.edgesPrev):
            for i in range(12):
                crvA = edgesCurrent[i]
                crvB = self.edgesPrev[i]
                loft = rg.Brep.CreateFromLoft([crvA, crvB], rg.Point3d.Unset,
                                              rg.Point3d.Unset,
                                              rg.LoftType.Straight, False)
                sc.doc.Objects.AddBrep(loft[0], self.attr)
Esempio n. 29
0
 def Update(self, time):
     self.attr.ObjectColor = color.GradientOfColors(self.grad, util.Remap(time, 0, 150, 0, 1))
     index = sc.doc.Materials.Add()
     self.mat = sc.doc.Materials[index]
     self.mat.DiffuseColor = self.attr.ObjectColor
     self.mat.CommitChanges()
     self.attr.MaterialIndex = index
     
     
     prevTurn = self.turned
     self.turned = False
     self.prevVel = self.vel.Clone()
     self.prevPlane = self.plane.Clone()
     
     #Should I change?
     futurePos = self.pos + self.vel
     hitBoundary = False
     f = 2
     
     possibleCases = [0,1,2,3,4,5]
     if futurePos.X < self.size * f:
         hitBoundary = True
         possibleCases.remove(1)
     if futurePos.Y < self.size * f:
         hitBoundary = True
         possibleCases.remove(3)
     if futurePos.Z < self.size * f:
         hitBoundary = True
         possibleCases.remove(5)
     if futurePos.X > 100-self.size * f:
         hitBoundary = True
         possibleCases.remove(0)
     if futurePos.Y > 100-self.size * f:
         hitBoundary = True
         possibleCases.remove(2)
     if futurePos.Z > 100-self.size * f:
         hitBoundary = True
         possibleCases.remove(4)
     
     #self.AvoidNeighborPaths()
     #self.AvoidSelf()
     
     if hitBoundary == True:
         self.turned = True
         self.case = random.choice(possibleCases)
     
     if hitBoundary == False:
         if time%random.randint(6, 10) == 0 and prevTurn == False:
             self.turned = True
             self.ChangeDirection()
     
     self.vel = self.cases[self.case]*self.length
     self.CreateRectangles()
     
     if self.turned:
         pass
         #prevVel
         #jog = self.vel
         self.vel += self.prevVel
     
     self.pos += self.vel
     
     if len(self.history) > 20 and 1 == 2:
         self.history = self.history[-20:]
     if len(self.historyPos) > 30:
         self.historyPos.pop(0)
Esempio n. 30
0
    def __init__(self, system, vec=None):
        self.system = system
        self.val = None
        self.history = []
        self.historyPos = []
        self.pipeIDs = []
        self.pipe = None
        self.pipes = []
        self.alive = True
        self.size = random.uniform(1, 6)
        self.length = self.size * 2
        self.turned = False
        self.prevVel = None
        self.majorBrep = rg.Brep()
        self.prevBrep = None
        self.planes = []
        self.ids = []
        self.breps = []

        self.straightSec = Module(self.size)
        self.straightSec.CreateStraight()
        self.angleSec = Module(self.size)
        self.angleSec.CreateAngle()
        self.uTurnSec = Module(self.size)
        self.uTurnSec.CreateUturn()
        self.TSec = Module(self.size)
        self.TSec.CreateT()

        self.cases = {
            0: rg.Vector3d(1, 0, 0),
            1: rg.Vector3d(-1, 0, 0),
            2: rg.Vector3d(0, 1, 0),
            3: rg.Vector3d(0, -1, 0),
            4: rg.Vector3d(0, 0, 1),
            5: rg.Vector3d(0, 0, -1)
        }

        self.case = random.randint(0, len(self.cases) - 1)

        #Movement
        #self.vel = rg.Vector3d(random.uniform(-1,1),random.uniform(-1,1), random.uniform(-.2,.2))
        if vec is None:
            self.vel = random.choice(self.cases)
        else:
            self.vel = vec
        self.vel.Unitize()
        self.tempVel = self.vel.Clone()
        self.speed = self.length
        self.vel *= self.speed
        self.acc = rg.Vector3d(0, 0, 0)
        self.size = 2
        self.cone = None
        self.coneID = None
        self.rotAngle = 0

        #Color and Material
        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        #self.grad = color.GetGradient(random.randint(0,9))
        self.grad = color.GetGradient(4)
        #col = drawing.Color.AliceBlue
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        self.attr.ObjectColor = color.GradientOfColors(self.grad,
                                                       random.uniform(0, 1))
        index = sc.doc.Materials.Add()
        self.mat = sc.doc.Materials[index]
        self.mat.DiffuseColor = self.attr.ObjectColor
        self.mat.CommitChanges()
        self.attr.MaterialIndex = index

        self.attrCol1 = rc.DocObjects.ObjectAttributes()
        self.attrCol1.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attrCol1.ObjectColor = drawing.Color.Red
        self.attrCol2 = rc.DocObjects.ObjectAttributes()
        self.attrCol2.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attrCol2.ObjectColor = drawing.Color.Green
        self.attrCol3 = rc.DocObjects.ObjectAttributes()
        self.attrCol3.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attrCol3.ObjectColor = drawing.Color.Blue

        #Position
        self.pos = rg.Point3d(random.uniform(5, 95), random.uniform(5, 95),
                              random.uniform(5, 95))
        #self.pos =  rg.Point3d(50, 50, 50)
        self.plane = rg.Plane(self.pos, self.vel)
        self.planes.append(self.plane)
        self.origin = rg.Point3d(self.pos)

        #Bake
        self.tempIDs = []
        self.ids = []
        self.coneIDs = []
        self.id = None