################################### ### DM2_w24 # AGruber@tugraz.at ### ### hu_06 UN_headquaters NYC ### ###################################################### ### paneling / new dimensions ### 87.5 x 22.0 meters (was lenY = 116.56 / lenX = 28.18) ################################### ###################################################### ############################## import rhinoscriptsyntax as rs import random, time, sys, os ### sys.path.append("/Users/maya/Library/Mobile Documents/com~apple~CloudDocs/_DM2") ### sys.path.append("P:\WWW\dlng1998") sys.path.append("P:/") import DM_lib as dm ### reload( dm ) ############################## rs.UnitSystem(4) # km = 5, meters = 4, cm = 3 etc rs.ShowGrid(None, 0) # grid > 0 = off rs.ShowGridAxes(None, 1) # y/y/z axen display > 0/1 = off/on #rs.ViewDisplayMode(rs.CurrentView(), "Pen") #rs.ViewDisplayMode(rs.CurrentView(), "rendered") #rs.ViewDisplayMode(rs.CurrentView(), "ghosted") rs.ViewDisplayMode(rs.CurrentView(), "pen") rs.Command("cplane w t enter", 0) # cPlane World Top dm.PointRadius(displayModeX="all", rad=2, styl=3) #dm.printDisplay(state=1, scale=100, thickness=1, color="Display") # nomen est omen rs.EnableRedraw(0) rs.CurrentView("Perspective") dm.getCameraTarget() ## setCameraTarget(camera=[0, 0, 0], target=[0, 0, 1], lens=50, rota=0, upVec=0, verbose=0) ## start: dm.setCameraTarget( [-189.5858817, 1148.02418748, 340.51886134], [710.54239444, 683.41886106, -85.29431931], lens=50.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! ## end: dm.setCameraTarget( [422.60784929, 840.22221527, 87.39807237], [707.50972204, 599.45526295, -0.09230495], lens=80.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! dm.setCameraTarget( [422.60784929, 845.22221527, 87.39807237], [707.50972204, 599.45526295, -0.09230495], lens=80.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! #camCurve = rs.AddLine( [-189.5858817, 1148.02418748, 340.51886134], [422.60784929, 840.22221527, 87.39807237] ) #tarCurve = rs.AddLine( [710.54239444, 683.41886106, -85.29431931], [707.50972204, 599.45526295, -0.09230495] ) camCurve = rs.AddLine( [-189.5858817, 1148.02418748, 340.51886134], [422.60784929, 845.22221527, 160.39807237] ) tarCurve = rs.AddLine( [710.54239444, 683.41886106, 50.29431931], [707.4190247, 589.06381615, 17.93293485] ) anz = 60*24 camCoords = rs.DivideCurve(camCurve, anz, 0) tarCoords = rs.DivideCurve(tarCurve, anz, 0) rs.DeleteObjects( [camCurve, tarCurve] ) steps = 10 zoom = 50 deltaZoom = (80-zoom)/anz rs.HideObject( rs.ObjectsByName("_bldg3D_higBy_ran_48869328")) ###_________________________________________# ### basic settings for grid to fit UN_slab # ### # floors = H = dm.H = 40 # default=40 / incl roof slabs = L = dm.L = 11 # default=11 depth = D = dm.D = 4 # default= 4 / division in building_depth floorHeight = fH = dm.fH = 4.0 # default= 4.0 / 4.0*(H-1) = 156 meters # ################ # get from DM_lib as dm: UnoGridCoords = dm.UnoGridCoords # get gridCoords L*D*H = 1760 UnoPanelCoords = dm.UnoPanelCoords # get panelCoords [frontPanels, backPanels, sidePanels, upSidePanels] / default arguments s.u. ################____________________________# ################ lengthVec = lVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) )) ## rs.AddPoint( dm.getUnoCoord(1, 0, 0) ) depthVec = dVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 1, 0), dm.getUnoCoord(0, 0, 0) )) ## rs.AddPoint( dm.getUnoCoord(0, 1, 0) ) ################ ########################################################################################### UnoPanelCoords = dm.getUNpanelCoords(anzL=10*7, anzH=39, anzD=3, stepL=1, stepH=1, stepD=1) ### = all ~windows_panels BigPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39, anzD=3, stepL=2, stepH=6, stepD=2) ### = all ~windows_panels UnoPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39, anzD=3, stepL=1, stepH=3, stepD=1) ### = standard for hu_06 ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] topPanels = UnoPanelCoords[5] allPanels = UnoPanelCoords[4] ################################# dm.newEmptyLayer("UNO::setUp", [120,120,240]) if 0: ### SETUP >> dont' exec @ homework ! rs.ObjectColor(rs.AddCurve( [dm.getUnoCoord(0,0,0), dm.getUnoCoord(0,0,39), dm.getUnoCoord(10,0,39), dm.getUnoCoord(10,0,0), dm.getUnoCoord(10,3,0), dm.getUnoCoord(0,3,0), dm.getUnoCoord(0,3,39), dm.getUnoCoord(10,3,39)], 1), [64,64,64]) rs.ObjectColor(rs.AddCurve( [dm.getUnoCoord(0,0,39), dm.getUnoCoord(0,3,39), dm.getUnoCoord(10,3,39), dm.getUnoCoord(10,0,39), dm.getUnoCoord(10, 0, 0), dm.getUnoCoord(10, 3, 0), dm.getUnoCoord(10, 3, 39)], 1), [64,64,64]) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 1, 0) ), [222, 0, 0] ) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) ), [0, 222, 0] ) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 0, 2) ), [0, 0, 222] ) #rs.ObjectPrintWidth( rs.AllObjects()[0:4], 1.0 ) #rs.ZoomExtents() #for coords in BigPanelCoords[4]: rs.AddCurve( coords, 1 ) #_____________________________here you go: dm.newEmptyLayer("DEMOpanels", [111,111,111]) for panel in frontPanels: #allPanels: #panelX = panel[:] x = random.randint(0, 2) #rs.AddLine( panel[x], panel[x+1] ) dm.newEmptyLayer("myPROJ", [111,111,111]) global sunVec #dm.ort= "NYC UN" sunVec = dm.setSun(year=2024, mon=3, day=20, hour=10, min=0, sec=0, verbose=1)[2] #sunVec = rs.VectorScale(sunVec, -1000.0) #sunVec = rs.VectorRotate( sunVec, 180.0, [0,0,1] ) #print rs.VectorLength( sunVec ), "meters" #centerBrunnen = [701.116,622.559,0.000] #705.752,597.107,0.000 #rs.AddPoint( centerBrunnen ) centerBrunnen = rs.VectorAdd( rs.VectorAdd( dm.getUnoCoord(0,0,0), rs.VectorScale(lVec, -50.50) ), rs.VectorScale(dVec, -50.50) ) ###rs.AddPoint( centerBrunnen ) ###rs.AddLine( centerBrunnen, rs.VectorAdd(centerBrunnen, rs.VectorScale(dVec, 0.80))) for i in range(11): pX = dm.getUnoCoord(i,0,0) #geaendert rs.AddPoint( pX ) global sunVec global centerBrunnen def myPanel(panel, cnt=0): global sunVec global centerBrunnen #sunVec = [1,1,1] dm.esc() p0,p1,p2,p3 = panel coords = [p0,p1,p2,p3, p0] #rs.AddCurve( coords, 1 ) cenPt = dm.pntInbetween( p0, p2 ) #rs.AddPoint( cenPt ) sunBeam = rs.AddCurve( [cenPt, rs.VectorAdd(cenPt, sunVec)] ) #rs.ObjectColor( sunBeam, [0,0,200]) vec = rs.VectorUnitize(rs.VectorSubtract(cenPt, centerBrunnen)) reflBeam = rs.AddLine(cenPt, rs.VectorAdd(cenPt, vec) ) tweenCrv = rs.AddTweenCurves(sunBeam, reflBeam, number_of_curves = 1, method = 1, sample_number = 1) planeNorm = rs.CurvePerpFrame(tweenCrv, 0.0) #circ = rs.AddCircle( planeNorm, 5.0) #rs.ObjectName(circ, "cir") ###horiVec = dm.vecCurvePerpXY(tweenCrv, 0) ###rs.AddLine( cenPt, rs.VectorAdd(cenPt, rs.VectorScale( horiVec, 20.0) ) ) rect = rs.AddRectangle( planeNorm, 8.75*0.9, 12.0*0.9) coords = rs.CurveEditPoints(rect) centerRect = dm.pntInbetween(coords[1], coords[3] ) #rs.AddPoint( centerRect ) movVec = rs.VectorSubtract(cenPt, centerRect) rs.MoveObject( rect, movVec) #rs.AddPlanarSrf( rect ) coordsRect = rs.CurveEditPoints(rect) coordsRect.reverse() #rs.ObjectColor(rect, [0,0,0]) #farbe rechtangles #rs.ObjectPrintWidth(rect, 2.0) #dm.textDots(coordsRect) #rs.ObjectName( rect, str(dat[0])+"_"+str(dat[1]) ) for i in range(4): pass rs.AddLine(panel[i], coordsRect[i+0]) #rs.DeleteObjects( [tweenCrv, reflBeam, sunBeam] ) #if 1 and (cnt%10==0 or cnt%111111==0): if random.uniform(0,1) < 0.2: pX = dm.pntInbetween(centerBrunnen, cenPt, random.uniform(0.1, 0.25)) pY = dm.pntInbetween(centerBrunnen, cenPt, random.uniform(0.9, 0.99)) #reflBeam = rs.AddLine(cenPt, centerBrunnen ) #reflBeam = rs.AddLine(cenPt, pX ) reflPt = rs.AddPoint( centerBrunnen ) reflBeam = rs.AddLine(centerBrunnen, pX ) reflBeamP = rs.AddLine(cenPt, pY ) #rs.CurveArrows(reflBeam, arrow_style=2) sunBeam = rs.AddLine(cenPt, rs.VectorAdd(cenPt, rs.VectorScale(sunVec, -0.1))) #rs.CurveArrows(sunBeam, arrow_style=1) rs.ObjectColor( sunBeam, [222,34,34] ) rs.ObjectColor( reflBeam, [222,222,22] ) rs.ObjectColor( reflBeamP, [222,122,22] ) rs.ObjectColor( reflPt, [222,222,22] ) rs.ObjectLayer( reflPt, "DEMOpanels" ) #rs.ObjectPrintWidth(sunBeam, 1.5) #rs.ObjectPrintWidth( reflBeam, 1.5) if 0: for hor in range(1,10): rs.DeleteObjects(rs.ObjectsByLayer("myPROJ")) sunVec = dm.setSun(year=2025, mon=1, day=31, hour=hor, min=0, sec=0, verbose=0)[2] print "hor", hor for i,panel in enumerate(frontPanels+topPanels+sidePanels+upSidePanels):#frontPanels): dm.esc() myPanel(panel, cnt=i) rs.Redraw() rs.CurrentView("Perspective") #tar = dm.getUnoCoord(5, 2, 30) #cam = [574.978,703.645,20] #camVec = rs.VectorSubtract(cam, tar) #camVec = rs.VectorRotate(camVec, 180, [0,0,1]) #camVec = rs.VectorAdd(tar, cam) #dm.setCameraTarget( cam , tar, lens=50, rota=0, upVec=[-0.1795489216522601,0.23914303763757525,0.9542393789207109] ) # ... danke, andi ! #dm.setCameraTarget( [127.33320855, 1128.50343769, 267.26559066], [651.50931494, 620.52854133, 38.51657392], lens=49.99999999, rota=0, upVec=[0.21474858963135549,-0.20811115049176054,0.9542393789256127] ) # ... danke, andi ! #dm.setCameraTarget( [564.67939239, 696.82296528, 47.58367358], [648.9959043, 619.28798147, 39.77429715], lens=40, rota=0, upVec=[0.05006760454817882,-0.04604069618132556,0.9976840628525377] ) # ... danke, andi ! #dm.setCameraTarget( camVec , tar, lens=40, rota=0, upVec=[-0.1795489216522601,0.23914303763757525,0.9542393789207109] ) # ... danke, andi ! path = "L:/animatzi/mayaSun/" if not os.path.exists(path): os.makedirs(path) #dm.getCameraTarget() #rs.ZoomExtents() mon = 12 ####################################### TIMES anzahl = 24*60 print anzahl hor = -1 dMin = 1 ## delta minuten while 60%dMin != 0: dMin -= 1 print "dMin", dMin timeList = [] for i in range(anzahl): if i%60==0: hor += 1 for m in range(int(60/dMin)): min = m*dMin timeList.append( [hor, min] ) #timeList = timeList+timeList #timeList = timeList+timeList #timeList = timeList+timeList print "len(timeList)", len(timeList) ####################################### TIMES if 1: brnnenCrv = rs.ObjectsByName("crv_121257600")[0] brunnenCoords = rs.DivideCurve(brnnenCrv, int(1440*0.5), 1) #dm.textDots([brunnenCoords[360]]) brunnenCoords = brunnenCoords[360:]+brunnenCoords brunnenCoords = brunnenCoords+brunnenCoords brunnenCoords = brunnenCoords+brunnenCoords brunnenCoords = brunnenCoords+brunnenCoords brunnenCoords = brunnenCoords+brunnenCoords rs.DeleteObjects(rs.ObjectsByType(1)) #print "lll", len(brunnenCoords) captureIt = 0 cnt = 0 framNr = 0 steps = 20 PStd = 10 anzStd = 24 * PStd deltaAng = (28/(anzStd-0))*steps deltaZoom = 20/(anzStd*2-0)*steps deltaZ = (600-80)*2.0/(anzStd-0)*steps deltaZNr = 0 lens = 0 cont = 0 mn = 0 hr = 0 brunnenMov = 0.99 centerBrunnen = rs.VectorAdd(centerBrunnen, rs.VectorScale(lVec, -50.0)) #centerBrunnen = rs.VectorAdd(centerBrunnen, rs.VectorRotate( -50, deltaAng, [0,0,1] anz = 24*60 zoom=50 deltaZoom = (80-zoom)/(anz-steps) #### camTEST if 0: for val in range(0, 1440, 20): dm.esc() tarCoords[val][2] += 0.010*val rs.AddLine( camCoords[val], tarCoords[val]) dm.setCameraTarget(camCoords[val], tarCoords[val], lens=zoom+deltaZoom*val) rs.Redraw() if 1: for val in range(0*60, anz-1*(steps==1), steps): ###centerBrunnen = rs.VectorAdd(centerBrunnen, rs.VectorScale(lVec, brunnenMov)) ###centerBrunnen = rs.VectorAdd(centerBrunnen, rs.VectorScale(dVec, -brunnenMov)) centerBrunnen = brunnenCoords[val] #cenMove = rs.VectorAdd ([701.116,722.559 + val*20,0.000], centerBrunnen) #centerBrunnen = rs.VectorAdd (centerBrunnen, rs.VectorRotate( cenMove, 1, [0,0,1] )) #cenMove = rs.VectorAdd ([701.116,722.559 + val*50,0.000], centerBrunnen) cnt += 1 dm.esc() #dat = dm.number2date(number=((val*1)%365)+1, year=2025) #mon = dat[0] #day = dat[1] #print val, "hor min:", hor, min hor = timeList[val][0] min = timeList[val][1] #print hor, min if hor and hor%6==0 and min==0: brunnenMov *= -1 sunVec = dm.setSun(year=2025, mon=1, day=31, hour=hor, min=min, sec=0, verbose=0)[2] #sunVec = rs.VectorUnitize(sunVec) #sunVec = rs.VectorRotate( sunVec, -50.0, [0,0,1] ) if 1: rs.DeleteObjects(rs.ObjectsByLayer("myPROJ")) dm.esc() #rs.Redraw() for i,panel in enumerate(frontPanels+backPanels+topPanels+sidePanels+upSidePanels): #dm.esc() if 1: myPanel(panel, cnt=i) #rs.Redraw() #print val #camVec = rs.VectorRotate( camVec, deltaAng, [0,0,1] ) #Cameraposition #cam = rs.VectorAdd(tar, camVec) if 1: #if val < anzStd*0.5: #pass #camVec = rs.VectorRotate( camVec, deltaAng, [0,0,1] ) #Cameraposition #cam = rs.VectorAdd(tar, camVec) #if val > anzStd*0.75: #deltaZNr += 1 #cam[2] -= deltaZ*deltaZNr if val%1==0: #dm.setCameraTarget( cam , tar, lens=lens, rota=0, upVec=[0,0,1] ) # ... danke, andi ! tarCoords[val][2] += 0.01*val dm.setCameraTarget(camCoords[val], tarCoords[val], lens=zoom+deltaZoom*val) rs.Redraw() nam = dm.makeName("mayaSun_step_1", frameNumber=framNr, anzahl=4, format='jpg') if captureIt: rs.Command("-viewCaptureToFile Width=640 Height=360 Scale=2 DrawCPlaneAxes=No TransparentBackground=No "+path+nam+" ", 0) framNr += 1 #print i, dat #dm.zA() if cnt%10==0: pass #rs.Redraw() #rs.Sleep(100) #print dat #cam = rs.VectorAdd( dm.getUnoCoord(5,0,10), rs.VectorScale(dVec, -500.0) ) #tar = rs.VectorAdd( dm.getUnoCoord(5,0,20), rs.VectorScale(dVec, 0.0) ) #dm.setCameraTarget(camera=cam, target=tar,lens=30) #dm.setCameraTarget( [551.2235634, 665.03601405, 74.34610764], [752.61713161, 554.65445991, 74.34610764], lens=29.99999999, rota=0, upVec=[0,0,1] ) # ... danke, andi ! print "FINI" #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs #dm.printDisplay(state=0, scale=1000, thickness=1, color="Display") dm.newEmptyLayer("Default")