Example #1
0
 def __init__(self):
     self.radius = 2
     
     self.vel = rg.Vector3d(random.uniform(-1,1), random.uniform(-1,1), random.uniform(-1,1))
     self.vel.Unitize()
     self.vel *= 3
     
     self.attr = rc.DocObjects.ObjectAttributes()
     self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
     self.attr.ObjectColor = color.ColorBetweenColors(drawing.Color.Red, drawing.Color.White, 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.pos =  geo.RandomPoint(self.radius, 100-self.radius, self.radius, 100-self.radius, self.radius, 100-self.radius)
     #self.sphere = rg.Sphere(self.pos, self.radius)
     self.xSize = rg.Interval(-self.radius, self.radius)
     self.ySize = rg.Interval(-self.radius, self.radius)
     self.zSize = rg.Interval(-self.radius, self.radius)
     
     self.plane = rg.Plane.WorldXY
     self.plane.Origin = self.pos
     #self.plane.XAxis = self.vel
     
     self.box = rg.Box(self.plane, self.xSize, self.ySize, self.zSize)
     self.boxID = sc.doc.Objects.AddBox(self.box, self.attr)
Example #2
0
    def __init__(self):
        self.numVoxels = 25
        self.voxelSize = 4
        self.grad = color.GetGradient(10)
        self.targets = []
        for i in range(5):
            self.targets.append(
                geo.Particle(geo.RandomPoint(), geo.RandomVector3d(5)))
            self.targets[-1].radius = 5

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.MaterialSource = rc.DocObjects.ObjectMaterialSource.MaterialFromObject
        #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))
Example #3
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(0)
        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,
                                   geo.RandomPoint(10, 90, 10, 90, 80,
                                                   80), attr)
            if newParticle.hit == False:
                self.particles.append(newParticle)
                break

        for particle in self.particles:
            particle.Update()
Example #4
0
 def __init__(self, system):
     self.system = system
     self.pos = geo.RandomPoint()
     self.vel = geo.RandomVector3d(1)
     self.id = None
     self.plineId = None
     self.history = []
     self.speed = 3
     self.mesh = rg.Mesh()
     self.meshID = None
Example #5
0
 def __init__(self, system):
     self.system = system
     self.pos = geo.RandomPoint()
     self.vel = geo.RandomVector3d(1)
     self.acc = rg.Vector3d(0,0,0)
     #self.id = sc.doc.Objects.AddPoint(self.pos)
     self.plineId = None
     self.history = []
     self.speed = 3
     self.mesh = rg.Mesh()
     self.meshID = None
     self.neighbors = []
Example #6
0
 def __init__(self):
     numVoxels = 20
     self.voxelSize = 5
     
     self.targets = []
     for i in range(5):
         self.targets.append(geo.Particle(geo.RandomPoint(), geo.RandomVector3d(5)))
         self.targets[-1].radius = 5
     self.voxels = []
     for x in range(numVoxels):
         for y in range(numVoxels):
             for z in range(numVoxels):
                 self.voxels.append(Voxel(self, x*self.voxelSize, y*self.voxelSize, z*self.voxelSize))
     self.vertices = []
     for x in range(numVoxels):
         for y in range(numVoxels):
             for z in range(numVoxels):
                 self.vertices.append(Vertex(self, x*self.voxelSize, y*self.voxelSize, z*self.voxelSize))
Example #7
0
    def __init__(self, system):
        self.pos = geo.RandomPoint(15, 85, 25, 75, 90, 95)
        self.vel = rg.Vector3d(0, 0, -1)
        self.speed = 6
        self.vel *= self.speed
        self.system = system
        self.id = None
        self.size = 8
        self.prevPos = None
        self.union = None
        self.hit = False
        self.ids = []
        self.age = 0

        plane = rg.Plane(self.pos, geo.RandomVector3d(1))
        self.box = rg.Box(plane, rg.Interval(-self.size / 2, self.size / 2),
                          rg.Interval(-self.size / 2, self.size / 2),
                          rg.Interval(-self.size / 2, self.size / 2))
        self.box = self.box.ToBrep()
Example #8
0
    def __init__(self, system):
        self.system = system
        self.radius = 2
        self.size = 4

        self.vel = rg.Vector3d(random.uniform(-1, 1), random.uniform(-1, 1),
                               random.uniform(-.3, .3))
        self.vel.Unitize()
        self.speed = random.uniform(1, 2)
        self.vel *= self.speed
        self.acc = rg.Vector3d(0, 0, 0)

        self.attr = rc.DocObjects.ObjectAttributes()
        self.attr.ColorSource = rc.DocObjects.ObjectColorSource.ColorFromObject
        self.attr.ObjectColor = color.ColorBetweenColors(
            drawing.Color.DeepSkyBlue, drawing.Color.LimeGreen,
            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.pos = geo.RandomPoint(self.size * 2, 100 - self.size * 2,
                                   self.size * 2, 100 - self.size * 2,
                                   self.size * 2, 100 - self.size * 2)
        self.xSize = rg.Interval(-self.size * .25, self.size * .25)
        self.ySize = rg.Interval(-self.size * .125, self.size * .125)
        self.zSize = rg.Interval(-self.size, self.size)

        up = rg.Vector3d(0, 0, 1)
        xvec = rg.Vector3d.CrossProduct(self.vel, rg.Vector3d(0, 0, 1))
        yvec = rg.Vector3d.CrossProduct(self.vel, xvec)
        self.plane = rg.Plane(self.pos, yvec, xvec)

        self.box = rg.Box(self.plane, self.xSize, self.ySize, self.zSize)
        #self.boxID = sc.doc.Objects.AddBox(self.box, self.attr)
        self.srfIDs = []
        self.connectionIDs = []
Example #9
0
def main():
    skNum = (datetime.date.today() - datetime.date(2020, 03, 29)).days + 201
    if int(skNum) > int(os.path.splitext(os.path.basename(__file__))[0]):
        print "!!!!SAVE THE SKETCH WITH A NEW NAME!!!!"

    rs.UnselectAllObjects()

    init_time = time.time()
    version = 'a'
    anim = mp4.Animation(
        os.path.splitext(os.path.basename(__file__))[0] + version)
    numFrames = 150
    numPasses = 100
    anim.fps = 30

    td = TempDisplay()
    display = HUD(os.path.splitext(os.path.basename(__file__))[0], numFrames)
    s = Scene()
    ################################
    #SETUP
    targets = []
    vSystems = []
    for i in range(5):
        targets.append(geo.Particle(geo.RandomPoint(), geo.RandomVector3d(5)))
        targets[-1].radius = 5

    for i in range(5):
        print(i * .05) + .3
        vSystems.append(VoxelSystem(targets, i * .05 + .3))

    ################################
    for i in range(numFrames):
        start_time = time.time()
        print "Frame {}".format(i)
        if sc.escape_test(False):
            anim.Cleanup()
            return
        ################################
        #MAIN LOOP
        for target in targets:
            target.Update()

        for vSystem in vSystems:
            vSystem.Update()
            vSystem.UpdateDisplay()

        ################################
        #HUD
        #display.UpdateParam1('boxes: ' + str(len(bSystem.boxes)))
        #display.UpdateParam2('links: ' + str(len(bSystem.links)))
        #display.UpdateParam3('z: ' + str(ball.pos.Z))
        display.UpdateScaleBar()

        ################################
        sc.doc.Views.Redraw()
        display.Update(i)
        anim.AddFrame(numberOfPasses=numPasses)

        rs.Sleep(500)

        ################################
        #Framerate
        frameTime = time.time() - start_time
        timeLeft = (numFrames - i) * frameTime
        timeLeftStr = str(datetime.timedelta(seconds=timeLeft))
        print "Time remaining: {}".format(timeLeftStr)

    frameTime = time.time() - init_time
    timeLeftStr = str(datetime.timedelta(seconds=frameTime))
    print "Total Time: {}".format(timeLeftStr)

    if int(skNum) > int(os.path.splitext(os.path.basename(__file__))[0]):
        print "!!!!SAVE THE SKETCH WITH A NEW NAME!!!!"

    if os.path.isdir(
            r"D:\Files\Work\LIBRARY\06_RHINO\10_Python\300 DAYS\anim"):
        anim.Create(r"D:\Files\Work\LIBRARY\06_RHINO\10_Python\300 DAYS\anim",
                    frames2Keep=[i / 2, i - 1])
    else:
        anim.Create(r"C:\Tim\300 Days\anim", frames2Keep=[i / 2, i - 1])