Improve summit terrain, mobile HUD and multiplayer night equipment
Add the Blender flashlight asset with a 600 lm beam and reduced bloom, shared-mode self badge, and compact phone controls. Relocate the summit marker, blend terrain seams, widen walking routes, and align local server configuration on port 2027.
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"source": "User-supplied Naver place 11491310 coordinate and annotated north-up satellite screenshot, 2026-10-31",
|
||||
"pin": { "latitude": 37.445208, "longitude": 126.96413 },
|
||||
"pinTipPixels": [206, 175],
|
||||
"markerCenterPixels": [231, 230],
|
||||
"metersPerPixel": 0.2,
|
||||
"scaleNote": "Approximately 50px per 10m in the same 18.30 zoom satellite view; screenshot registration is approximate.",
|
||||
"estimatedUncertaintyMeters": 3,
|
||||
"offsetFromPinMeters": [5, 11],
|
||||
"offsetFromStartMeters": [-2.9642, -43.1612]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
export const SUNRISE_WISH = {
|
||||
width: 1080, height: 1920, fps: 30, seconds: 10,
|
||||
from: Date.parse('2026-11-06T06:55:00+09:00'),
|
||||
to: Date.parse('2026-11-06T07:28:00+09:00'),
|
||||
heading: 109, pitch: 5, fieldOfView: 30,
|
||||
} as const;
|
||||
@@ -0,0 +1,38 @@
|
||||
"""Blender-authored pocket torch; local -Z exports as the grip's -Y axis."""
|
||||
import bpy, math
|
||||
from pathlib import Path
|
||||
ROOT = Path('D:/project/sunrise')
|
||||
previous = bpy.context.window.scene
|
||||
scene = bpy.data.scenes.new('Sheep pocket flashlight')
|
||||
bpy.context.window.scene = scene
|
||||
root = bpy.data.objects.new('Flashlight', None)
|
||||
scene.collection.objects.link(root)
|
||||
def material(name, color, metal=0):
|
||||
m=bpy.data.materials.new(name);m.use_nodes=True
|
||||
s=next(n for n in m.node_tree.nodes if n.type=='BSDF_PRINCIPLED')
|
||||
s.inputs['Base Color'].default_value=(*color,1)
|
||||
s.inputs['Metallic'].default_value=metal;s.inputs['Roughness'].default_value=.45
|
||||
return m
|
||||
body=material('Torch charcoal',(.065,.085,.10))
|
||||
trim=material('Torch warm brass',(.55,.35,.12),.5)
|
||||
lens=material('Torch lens',(.72,.83,.88))
|
||||
def cylinder(name, radius, depth, z, mat):
|
||||
bpy.ops.mesh.primitive_cylinder_add(vertices=24,radius=radius,depth=depth,location=(0,0,z))
|
||||
o=bpy.context.object;o.name=name;o.parent=root;o.data.materials.append(mat)
|
||||
bevel=o.modifiers.new('Soft edges','BEVEL');bevel.width=.007;bevel.segments=2
|
||||
return o
|
||||
cylinder('Torch grip',.065,.22,-.035,body)
|
||||
for z in [-.10,-.06,-.02,.02]: cylinder('Grip ring',.068,.012,z,trim)
|
||||
cylinder('Torch cap',.07,.035,.09,body)
|
||||
cylinder('Torch bezel',.10,.09,-.19,body)
|
||||
cylinder('Lens rim',.105,.018,-.24,trim)
|
||||
cylinder('FlashlightLens',.088,.009,-.253,lens)
|
||||
for o in scene.objects:o.select_set(True)
|
||||
bpy.context.view_layer.objects.active=root
|
||||
import io_scene_gltf2
|
||||
fmt=next(i[0] for i in io_scene_gltf2.get_format_items(None,bpy.context) if i[0]=='GLB')
|
||||
bpy.ops.export_scene.gltf(filepath=str(ROOT/'public/characters/flashlight.glb'),export_format=fmt,use_selection=True,use_active_scene=True,export_yup=True,export_apply=True)
|
||||
(ROOT/'assets/characters').mkdir(parents=True,exist_ok=True)
|
||||
bpy.data.libraries.write(str(ROOT/'assets/characters/flashlight.blend'),{scene})
|
||||
bpy.context.window.scene=previous
|
||||
print('Exported flashlight.glb; charcoal body, brass grip rings, inset lens')
|
||||
@@ -0,0 +1,18 @@
|
||||
"""Apply the satellite-estimated marker location in the authored plateau scene."""
|
||||
import bpy, json
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path('D:/project/sunrise')
|
||||
spec = json.loads((ROOT/'scripts/constants/marker-location.json').read_text())
|
||||
root = bpy.data.objects['summit-marker']
|
||||
baseline = bpy.data.meshes['Slab before marker seating']
|
||||
x, south = spec['offsetFromStartMeters']
|
||||
def ground(x, y):
|
||||
return min(baseline.vertices, key=lambda v:(v.co.x-x)**2+(v.co.y-y)**2).co.z
|
||||
root.location.z += ground(x, -south)-ground(root.location.x, root.location.y)
|
||||
root.location.x, root.location.y = x, -south
|
||||
root['locationSource'] = spec['source']
|
||||
root['locationUncertaintyMeters'] = spec['estimatedUncertaintyMeters']
|
||||
# Restore the original ground, then seat the existing stone at its new location.
|
||||
exec(compile((ROOT/'scripts/sculpt-asymmetric-marker.py').read_text(), 'sculpt-asymmetric-marker.py', 'exec'))
|
||||
exec(compile((ROOT/'scripts/export-summit-plateau.py').read_text(), 'export-summit-plateau.py', 'exec'))
|
||||
Reference in New Issue
Block a user