2020-06-07, UFC 1st Sunday Jam

Wir treffen uns immer am ersten Sonntag im Monat im Coworking Space Nürnberg um gemeinsam an den Themen rund um das Urban Future Center zu arbeiten. Jeder bringt seine Expertise und Leidenschaft mit.

Sonntag, 7. Juni ab 14 Uhr im i.b Discord

Eingeladen sind alle Macher, die mit anpacken wollen, um das Urban Future Center voranzubringen.

Bis auf weiteres treffen wir uns nicht im Coworking Space, sondern auf Discord im Audio Chat. Schnuppert einfach mal dazu, die aktuellen Themen findet ihr auf Slack im #urban-future-center Channel.

Holt euch als Grundausrüstung vorher alle Infos von der Landing Page und hier im Gitbook.

Wir freuen uns auf euch!

Kurzer Rückblick:

es war eine freude :)

Zweite Version eines 3D-Renderings des UFC Logos basierend auf der Voyager Golden Record Pulsar Map (Imran Khan)

Passend zur Version vom 03.05.2020, hier ein Update des UFC-Logo renders in Blender. Das Update umfasst, dass die Strukturen jetzt Zylinder, und damit linienartig sind, anstatt nur Kugeln im Raum zu sein. Siehe auch das Bild hier gleich drunter. Next steps wäre jetzt mal eine Verifizierung des Originallogos auf der Golden Record und die Produktion eines Renders davon. Weiterhin wäre es interessant, dieses Logo in in einer Browserverständlichen Sprache umzusetzen, so dass es gleich in 3D auf der Webseite existieren kann.

Und hier der passende Code dazu:

import bpy
import bmesh
import math

#http://www.johnstonsarchive.net/astro/pulsarmap.html
#Table 3: Same pulsars, 2002 data
translations = [4.98,0.458,7.4,0.722,8.44,0.375,2.49,2.27,1.43,2.45,1.1,7.94,0.169,2.9]
longitude = [5.978974419,5.478064923,5.271767006,4.599815244,3.995233191,3.437600495,3.221179667,3.208962363,2.530727415,1.717054918,1.188569221,0.91525066,0.826937,0.246265957]
latitude = [-0.133866754,-0.149051118,-0.026703538,-0.048694686,0.762708883,0.553967505,-0.100880031,-0.120427718,-0.021293017,-0.132645023,-0.069464104,-0.036477381,-0.067718775,0.454832803]

for i in range (0, 14):
    # Create an empty mesh and the object.
    mesh = bpy.data.meshes.new('Basic_Sphere' + str(i))
    basic_sphere = bpy.data.objects.new("Basic_Sphere"+ str(i), mesh)

    # Add the object into the scene.
    bpy.context.collection.objects.link(basic_sphere)

    # Select the newly created object
    bpy.ops.object.select_all(action='DESELECT')
    bpy.context.view_layer.objects.active = bpy.context.scene.objects[i]
    bpy.context.scene.objects[i].select_set(True)

    # Construct the bmesh sphere and assign it to the blender mesh.
    bm = bmesh.new()
    bmesh.ops.create_uvsphere(bm, u_segments=32, v_segments=16, diameter=0.1)
    bm.to_mesh(mesh)
    bm.free()

    bpy.ops.object.modifier_add(type='SUBSURF')
    bpy.ops.object.shade_smooth()
    
    #Apply transformation (translation and rotation)
    bpy.ops.transform.translate(value = (translations[i], 0, 0))
    bpy.ops.transform.rotate(value=longitude[i], orient_axis='Z', orient_type='LOCAL', center_override=(0, 0, 0))
    bpy.ops.transform.rotate(value=latitude[i], orient_axis='Y', orient_type='LOCAL', center_override=(0, 0, 0))


for i in range (0, 14):
    # Create an empty mesh and the object.
    mesh = bpy.data.meshes.new('Basic_Cylinder' + str(i))
    basic_cylinder = bpy.data.objects.new("Basic_Cylinder"+ str(i), mesh)

    # Add the object into the scene.
    bpy.context.collection.objects.link(basic_cylinder)

    # Select the newly created object
    bpy.ops.object.select_all(action='DESELECT')
    bpy.context.view_layer.objects.active = bpy.context.scene.objects[i+14]
    bpy.context.scene.objects[i+14].select_set(True)

    # Construct the bmesh sphere and assign it to the blender mesh.
    bm = bmesh.new()
    #bmesh.ops.create_uvsphere(bm, u_segments=32, v_segments=16, diameter=0.1)
    bmesh.ops.create_cone(bm, cap_ends=True, cap_tris=False, segments=12, diameter1=0.05, diameter2=0.05, depth=translations[i]) # same diameter on both ends
    bm.to_mesh(mesh)
    bm.free()

    #Apply transformation (translation and rotation)
    bpy.ops.transform.rotate(value=3.14/2, orient_axis='X', orient_type='GLOBAL')
    bpy.ops.transform.rotate(value=3.14/2, orient_axis='Z', orient_type='GLOBAL')
    bpy.ops.transform.translate(value = (translations[i]/2, 0, 0))
    bpy.ops.transform.rotate(value=longitude[i], orient_axis='Z', orient_type='GLOBAL', center_override=(0, 0, 0))
    bpy.ops.transform.rotate(value=-latitude[i], orient_axis='X', orient_type='LOCAL', center_override=(0, 0, 0))

Last updated