Initial commit: RHINE LAB · ANALYSIS OS:三维界面与动效实验(本仓库不含个人归档索引数据)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Detail reconstruction from the clear 40–42 second reference.
|
||||
# Executed by build_archive.py in the same scene; assembly uses this identical source.
|
||||
# All dimensions below are BEFORE the shared x2 thickness bake.
|
||||
from pathlib import Path
|
||||
|
||||
obsolete=('Embedded optical cavity','Subsurface refractive shoulder','Inner optical bevel',
|
||||
'Concentric optical machining','Embedded amber annulus','Moulded circuit channel',
|
||||
'Moulded inner perimeter','Moulded vent footing','Laser etched vent',
|
||||
'Calibration mark','Edge inscription','Engraved circuit trace')
|
||||
for obj in list(scene.objects):
|
||||
if obj.name.startswith(obsolete): bpy.data.objects.remove(obj,do_unlink=True)
|
||||
|
||||
emboss=material('Moulded_Lettering',(.81,.786,.75),.24,.13)
|
||||
architecture_script=Path(ROOT)/'art/internal_architecture.py'
|
||||
exec(compile(architecture_script.read_text(encoding='utf-8'),str(architecture_script),'exec'))
|
||||
|
||||
# Rebuild the moulding from normalized positions on the complete 41.0-second face.
|
||||
def face_point(px,py):return ((px-432)/1022*5-2.5,(1018-py)/676*3.7)
|
||||
def mould(name,pixels,depth=-.074,radius=.004,mat=core):
|
||||
return channel(name,[face_point(x,y) for x,y in pixels],depth,radius,mat)
|
||||
|
||||
shell_script=Path(ROOT)/'art/shell_reference_details.py'
|
||||
exec(compile(shell_script.read_text(encoding='utf-8'),str(shell_script),'exec'))
|
||||
|
||||
# Fine, lightly recessed rectangular backing routes, beneath the ring structures.
|
||||
for route in [[(681,470),(681,899),(1061,899),(1061,821),(1310,821),(1310,464),(1028,464),(1028,406)]]:
|
||||
mould('Information substrate fine route',route,.014,.0018,core)
|
||||
|
||||
# Embossed vertical company inscription belongs to the inner cover, not the ink label.
|
||||
inscription=text('Moulded vertical lettering','RHINE LAB, LLC.',0,0,.155,emboss)
|
||||
# Text baseline follows Blender local X; rotate it down the left edge in the X/Z plane.
|
||||
inscription.location=(-2.27,-.078,2.29)
|
||||
inscription.rotation_euler=(math.pi/2,math.pi/2,0)
|
||||
inscription.data.extrude=.003;inscription.data.bevel_depth=.0015;inscription.data.bevel_resolution=1
|
||||
inscription.data.space_character=1.10
|
||||
# Two small registration pads under the floating tabs.
|
||||
for x in [-1.61,-1.45]:cube('Information substrate registration pad',(x,-.029,.53),(.014,.009,.038),gold,.002)
|
||||
|
||||
# Lower-right circular service detail with a slanted slotted rail, seen under haze.
|
||||
px,pz=face_point(1312,923)
|
||||
for radius,depth,mat in [(.145,-.070,optical_edge),(.120,-.065,core),(.083,-.072,optical_edge)]:
|
||||
torus('Moulded service socket',px,pz,radius,.0055,mat,depth).scale.z=.45
|
||||
annular_profile('Moulded service socket center',px,pz,[(.021,-.040),(.043,-.040),(.048,-.060),(.035,-.074),(.021,-.068)],gold,32)
|
||||
for i in range(11):
|
||||
x=1.03+i*.063
|
||||
channel('Moulded diagonal vent',[(x-.035,.38),(x+.030,.53)],-.075,.008,optical_edge)
|
||||
channel('Moulded diagonal vent recess',[(x-.029,.38),(x+.036,.53)],-.071,.003,core)
|
||||
Reference in New Issue
Block a user