The shape was already there.
形已经有了。
Stage 1 grew a cluster of square spirals. In Stage 2, I wanted to see what light could change without losing that structure.
第一阶段长出一簇方形螺旋。第二阶段,我想看看保留这组结构之后,光还能改变什么。
Bismuth was the starting point: hollow steps, right angles and colour gathered around the edges. The original code draws the structure bar by bar. New crystals begin on the corners of older ones. I kept that growth system and made a separate copy for this stage.
起点还是铋:空心的台阶、直角,以及聚在边缘的颜色。原来的程序一根一根地画出晶条,新的晶体从旧晶体的角上开始。我保留了这套生长方式,复制一份项目后再做第二阶段。
At first I made the crystal more transparent. This opened the space between the bars, but making every stage glass made the whole round too similar. The next idea was to give each part of the existing cycle its own material and shape: Grow, Temper, Hold and Melt.
最初先把晶体做得更通透。杆之间的空间显出来了,但如果每一幕都用玻璃,一整轮还是太相似。后来我把原本的 Grow、Temper、Hold、Melt 四个生长阶段,分别对应一种材质和形态。
The main question became: can the same structure feel different because of what it does to light?
问题慢慢变成:同一组结构,能不能因为它如何接住光,而变成不同的东西?
Three ways of keeping the dark.
三种留下暗部的方式。
These three images helped me separate the qualities I was looking for. They all contain strong highlights, but most of each image stays dark. The bright parts do not cover the whole object.
这三张图帮我把想要的感觉分开。它们都有很强的高光,但画面大部分仍然是暗的。亮的部分没有把整个物体涂满。
I also looked at photographs of bismuth specimens through the Royal Society of Chemistry. The material is metal. Its rainbow colour comes from a surface oxide layer, rather than light passing through clear glass. For Temper I brought back closer steps, dark grooves and colour that changes across the surface.
我也通过英国皇家化学学会的铋资料看了标本照片。铋本身是金属,虹彩来自表面氧化层,而不是光穿过透明玻璃。因此 Temper 又改回较密的台阶、暗槽,以及沿表面变化的颜色。
The first two images suggest an atmosphere, not a confirmed optical method. I cannot tell from the images alone whether they use a filter, camera motion or post-processing. All three were supplied as visual references; their authors have not been verified.
前两张图提供的是感觉,不能只凭图片确认它们用了哪种滤镜、镜头运动或后期方法。三张图片均为本次研究提供的参考,作者尚未核实。
Gather, hold, give way.
凝结、暂存、松开。
The empty frames began to look like a station in space. I kept the background simple: one large opening, a distant planet and a field of stars. The four stages became a short story about collecting more light than a structure can hold.
空心框架慢慢像一座宇宙里的空间站。我把背景收得很简单:一个大开口、一颗远处的行星和一片星群。四个阶段也变成一个短故事:一座结构收进了比自己能承受的更多的光。
- GROW
Matter gathers in the dark.Clear frames appear one bar at a time. Their overlaps make small changes in colour. A quiet plane below catches the first shadows.
物质在暗处凝结。透明框架一根根长出来,重叠处积起一点颜色。下方的平面接住最初的影子。
- TEMPER
The surface gathers colour.The frames tighten into stepped metal. Iridescent bands and moving highlights travel over the same geometry.
表面慢慢收进颜色。框架收紧成阶梯状金属。虹彩色带与移动高光经过同一组几何。
- HOLD
The lattice holds the sky.The structure opens and lifts into silver frames. The receiving surface develops folds, and the shadows stretch across them. Near the end, the stars begin to move inward.
晶格暂时留住天空。结构展开、抬高,变成银色框架。下方承影面出现折面,影子经过折面而拉长。接近结束时,星群开始向内移动。
- MELT
Too much light. The lattice gives way.The first arrivals warm the core. Bars narrow into vertical threads and disappear. A mirror keeps a brief second image. After the last stars arrive, the disc closes, pauses and opens for another crystal.
光太多了,晶格开始松开。第一批星光抵达,核心变暖。晶条收成竖直细丝,随后消失。镜面暂时留下另一幅像。最后一批星光抵达后,圆盘收拢,短暂停顿,再展开迎接新的晶体。


This is a fictional cycle. Glass, silver frames and falling stars are visual translations, not four physical states of bismuth. The crystal growth supplies a structure for the story.
这是一个虚构的循环。玻璃、银色框架和坠落的星群是视觉转译,并不是铋的四种真实物态。晶体的生长方式给这个故事提供了结构。
A shadow can keep the other light.
影子里还能留下另一盏灯。
The coloured shadows first looked like something to correct. Then they became one of the more interesting parts. With a warm light and a cool light on different sides, blocking one source does not make a black shadow: the other source still reaches that place.
有颜色的影子最初像是一个需要修掉的问题,后来反而成了有意思的部分。两侧分别有暖光和冷光时,挡住其中一盏,另一盏仍然能照到那里,所以影子不一定是黑色。
The warm and cool lights have their own shadow maps. There is no separate painted layer for the coloured shadows. This follows the same basic relationship shown in the Exploratorium coloured-shadow experiment.
暖冷两盏灯各自生成阴影,没有再画一层彩色影子。它和 Exploratorium 的彩色阴影实验是同一种基本关系。
The receiving surface matters as much as the light. A plain surface makes a shadow readable. A shallow curve stretches it. A mirror puts the reflected crystal beside the shadow. A second, translucent disc now sits behind and to the left of the crystal, so part of the silhouette can leave the floor and appear vertically.
承影面和灯同样重要。平面让影子清楚,浅曲面把它拉开,镜子让倒影和阴影出现在一起。现在晶体左后方还有第二块半透明圆盘,让一部分剪影离开地面,出现在竖直方向。
I removed the drawn starbursts. They looked attached to the image. Narrow bevels and broad lights now give the edges their highlights as the light or viewpoint changes. This still uses ordinary real-time materials; it does not simulate diffraction or caustics.
后来去掉了叠画的星芒,因为它们像贴在画面上。现在用窄倒角和面光,让高光随着灯位或视角自然经过棱边。这里仍然是普通的实时材质,没有模拟衍射和焦散。
The useful changes were quite specific.
有效的修改往往很具体。


I copied the Stage 1 folder before making changes. The growth classes stayed in place, and earlier Stage 2 versions were kept so that I could compare them.
先复制第一阶段的文件夹再修改。原来的生长类保留下来,第二阶段的旧版本也留着,方便回看。
The first transparent material became Grow. Temper went through clear crystal and then returned to metal after looking more closely at actual bismuth photographs.
最早的透明材质留给 Grow。Temper 试过通透晶体,后来对照真实铋照片,又回到金属。
The grey background became a space station. Repeated doorways and a segmented floor quickly competed with the crystal, so I removed them and kept one opening and one main receiving surface.
灰色背景变成空间站。重复舱门和分片地板很快开始抢晶体的注意力,所以又删掉,只留一个开口和一个主要承影面。
A full hemisphere made the camera pull too far away and left a large empty bowl below the work. I reduced it to a shallow dish, then began looking for a quieter surface that could carry more of the shadow.
完整半球让镜头退得太远,也在作品下方留下一个很大的空碗。后来改成浅凹盘,再继续找更安静、能接住更多影子的形。
The flat reflector first read like another piece of sky. Adding a side and a small rim made it an object, but the edge became too thick. The current pass reduces that thickness again.
平面倒影最初像另一片天空。加上侧壁和窄边以后,它变成了一个物件,但边缘又太厚。这一轮继续把厚度收回去。
The inward star rain needed a visible destination. Its target now follows a surviving bar in the upper part of the crystal, rather than staying at a centre calculated before the shape changed. The first arrival starts the melt.
向内坠落的星雨需要一个看得见的终点。现在目标跟着晶体中上部仍然存在的一根晶条,避免停在变形前算出的中心。第一颗抵达后,才开始熔化。
Thin facets, and another image.
薄晶面与另一份影像。
The latest problem was that Temper arrived at a material and then simply waited. I want the surface to keep changing while the stepped outline stays recognizable. In this revision the layers slowly open, colour moves along them, and a side light passes across the rims. These small movements are an artistic translation, not a claim about the motion of a real crystal.
最新的问题是,Temper 切换完材质以后就只是等着。我希望台阶轮廓仍然可辨认,但表面在这一幕里继续变化。这一轮让层次缓慢舒展、颜色沿层移动,侧光经过棱边。这些细小运动是艺术转译,并不表示真实晶体会这样运动。


The deck is thinner and smaller now. Its motion eases between positions. During Hold, the profile gradually passes between a round cone and four flat faces, giving a shadow different surfaces to cross. The translucent disc sits close to the left rear of the crystal, where it can catch a second projection.
底盘现在更薄、更小,位移之间加了缓动。Hold 的轮廓在圆锥与四个平面之间慢慢变换,同一条影子因此能经过不同的面。半透明圆盘靠近晶体左后方,接住另一份投影。


The crystal, its shadow on the deck and its projection on the side screen become three views of one structure. I want the screen to show something the metal alone cannot: the gaps, overlaps and changes of direction inside the cluster.
晶体实体、地面影子、侧幕投影,变成观察同一组结构的三个面。我希望侧幕能显出金属本体不容易看清的东西:簇里的空隙、重叠和方向变化。
The metal steps are narrower and shallower. They remain opaque, but more space opens between the layers. The oxide colour changes during Temper, with a small variation from one ring to the next. I still need to watch how the dark gaps and the moving highlights balance across different seeds.
金属台阶的宽度和厚度都减小了。它仍然不透明,但层间让出了更多空间。氧化膜颜色在 Temper 内继续变化,相邻圈之间也有一点差异。下一步还要看不同 seed 下,暗缝和移动高光的平衡是否都成立。
A quieter colour range, clearer shadows.
收窄颜色,把影子留下来。
I limited Temper to cyan-blue and violet, with pale pink-silver rims. The colour still shifts along the layers, but heating and changes in viewing angle stay within this range. In Grow, I raised the lights as the crystal grew taller and reduced the shadow bias. The stepped outlines now fit on the disc instead of stretching into one large patch.
Temper 收在青蓝到蓝紫之间,棱边保留一点银粉色。颜色仍然沿层变化,但加热和视角改变都留在这个区间。Grow 的灯随晶体长高而抬升,同时减小阴影偏移,让台阶轮廓落回圆盘,不再被拉成一大片。


In that pass I moved the seed number next to the title and placed the light settings at the top right. The stages and playback shared one baseline below. The record page also returned to the navigation used by the earlier Web Page to Web Space pages.
当时把编号移到标题旁,灯光设置放到右上角,阶段与播放按钮在下方共用一条基线。记录页也换回其他 Web Page to Web Space 页面使用的顶部导航。
8 October: testing a lower surface.
10 月 8 日:试过压低的锥面。
In an earlier test, I cut off the tip and lowered the receiving surface. A small flat top sat slightly off-centre, while the outline moved between a truncated cone and a square frustum. The images below record that version. I later returned to a pointed form with steeper faces.
较早一版试着削掉尖顶,把承影面压低。小平顶稍微偏离中心,轮廓在圆形截锥与方形截锥之间变化。下面两张图记录的是这一版。后来又回到尖顶,并把斜面变得更陡。
At that stage, I tried a grey-blue physical material on the Hold surface, with a little metal reflection and a broad highlight. Applying it to every stage brightened the Temper floor too much and weakened its shadow, so I kept the other receiving surfaces as they were. Hold later returned to a darker matte material.
当时在 Hold 承影面上试了灰蓝 Physical 材质,保留少量金属反射和宽高光。把所有阶段都换成它时,Temper 地面被补得太亮,投影反而变淡了,所以其他阶段保留原来的承影材质。后来 Hold 也回到更暗的哑光表面。
The same Hold, from two angles.
同一个 Hold,两个角度。
The low side view keeps the receiving surface in the frame. Looking upward brings the dark layers closer, with thin silver highlights along a few edges. I kept that darkness in the record. The form should also hold together when only part of it catches the light.
低侧视角把承影面留在画面里。转为仰视,暗处的层次靠近了,只有少数棱边接到银色细高光。我把这份暗度保留在记录里。即使只有一部分接到光,形态也应该成立。


One batch for the crystal.
把晶条合在一起绘制。
Each bar still grows, heats and melts separately. I changed how they are drawn: one InstancedMesh holds the bars, with a colour and transform for each. They share the material and opacity, and the warm glow is mixed into their colours. The growth classes and seed sequence stay the same.
每根晶条仍然各自生长、受热和融化。这次改的是绘制方式:用一个 InstancedMesh 容纳晶条,每根保留自己的颜色、位置和缩放,共享材质与透明度,受热的暖光混入颜色。原来的生长类和 seed 序列保留下来。
I also stopped skipping every other shadow update, so the light and its shadow update together each frame. At first I kept the two spotlights outside and made the inner point light a manual option. The next pass brings that inner light into Hold automatically, while retaining the outside pair.
阴影也不再隔帧更新,而是每帧跟着光一起变化。最初把两盏聚光灯留在外侧,内灯只作为手动选项。下一轮又让内灯在 Hold 中自动参与,同时保留外侧的两盏灯。
Back to a pointed surface.
回到尖顶。
The flat top made Hold feel too soft. I removed it and increased the drop from the tip to the rim. One slightly offset point now meets steeper faces, while the surface still moves between a cone and a four-sided pyramid. The thin edge remains. I changed the receiving surface to dark grey-blue matte Phong, with only a little environment reflection, to keep the shadow contrast. The crystal above still uses its silver physical material.
小平顶让 Hold 显得太柔。我把它去掉,增加尖顶到底边的落差。一个稍微偏心的顶点连接更陡的斜面,表面仍然在圆锥与四棱锥之间变化。薄边保留,承影面换成深灰蓝哑光 Phong,只留少量环境反射,让阴影对比更清楚。上方晶体仍然使用银色 Physical 材质。
I also tried fading the edge of the side screen, then restored its clear circular outline. The hard edge makes it easier to read as a separate surface receiving the shadow. It stays translucent; only the radial fade is gone.
侧幕试过让边缘淡出,随后又恢复清楚的圆形轮廓。硬边更容易让人看出它是一块单独接影的面。半透明仍然保留,只去掉径向的边缘渐隐。
Jump, then continue.
跳转以后继续播放。
Clicking a stage used to stop growth, which made the buttons feel like a pause. I changed them to jump into the cycle and keep playing. Pause now has one clear job. I also removed the repeated Light and Study buttons at the top; the lighting choice stays in Controls.
以前点击阶段就停下生长,按钮用起来像暂停。这次改成跳入循环,然后继续播放,把暂停单独留给 Pause。顶部重复的 Light 和 Study 按钮也去掉,灯位选择留在 Controls 里。
The disc takes 1.3 seconds to open, and growth begins only when it is fully open. After the crystal and the last stars disappear, it closes over 1.6 seconds, leaves 0.2 seconds of empty space, then opens again. I shortened Temper from 10 to about 6 seconds and changed the Hold setting from 24 to 12 seconds. Growth and starfall are quicker too; the whole cycle still varies with the seed.
圆盘用 1.3 秒完全展开,第一根晶条才开始生长。晶体和最后一批星光都消失后,用 1.6 秒收回,留 0.2 秒空场景,再次展开。Temper 从 10 秒缩到约 6 秒,Hold 的等待参数从 24 秒改为 12 秒。生长和星雨也加快了,但整轮时长仍随 seed 变化。
Light on the ridges, light inside.
棱上的光,内部的光。
I added four narrow triangular facets along the pyramid ridges, using the same metal as the perimeter. They catch the real lights and disappear as the surface rounds into a cone. The broad faces stay dark. Hold now adds a moving inner light automatically, while the outside key and fill remain. I brought back amber and cool blue to separate the coloured shadows again.
棱锥的四条棱加了窄三角面,与盘边共用金属材质,直接接灯光,转成圆锥时隐藏。大面仍保持暗色。Hold 现在自动加入移动内灯,外部主灯与补光继续保留。把灯色从接近白色拉回琥珀暖色与冷蓝,是为了让彩色阴影重新分开。
Temper keeps the same cool range, but the bands move farther through it over the six-second stage. I increased the film variation from about ±6 to ±17 nm, with the sampled film thickness still limited to 164–198 nm. The layers pass through cyan, blue and violet without bringing back yellow-green.
Temper 保留原来的冷色范围,但色带在六秒里经过更大的变化。薄膜波幅从约 ±6 增到 ±17 nm,取色用的膜厚仍限制在 164–198 nm。层间经过青蓝、蓝与紫色,不把黄绿色带回来。
Melt had stayed metallic while the material waited for the old metal values to fade almost to zero. I separated that wait from the shape change. The transparent material now starts with Melt and reaches about 0.55 opacity after a third of a second; the bars take longer to stretch into threads. The floor also flattens and brings in its reflection within the first second.
Melt 原先还要等旧的金属参数几乎归零,材质才切换,所以迟迟显得不透。我把这个等待从形体变化中分开。现在进入 Melt 就使用透明材质,约三分之一秒后透明度接近 0.55;晶条仍慢一些拉成细丝。地面也在第一秒内展平并带出倒影。
The orbit now reaches below the crystal and its receiving surface. The new 57.93-second recording is 1920 × 1080 at 60 fps, with about three seconds looking straight down and six seconds looking up from below. It follows the surface from zero through a full cycle and regrowth. I also exported ten photographs, including two straight-down views. The finished video passed a full decoding check.
相机现在可以绕到晶体与承影面下方。新版录像长 57.93 秒,1920 × 1080、60 fps,包含约 3 秒垂直俯视和 6 秒下方仰视,从圆盘为零开始,保留完整循环与再生。另导出 10 张照片,其中两张为正俯视。成片已通过全片解码检查。
I want to keep the steps clear and let the light be the moving part.
我想把台阶留清楚,让光成为主要的运动。
From a surface to a sky, and back.
从一片表面到一片天空,再回来。
The disc opens from nothing. A crystal grows, gathers colour and holds the light inside its silver frame. Then the stars fall toward it. The structure melts, the disc closes, and a new round begins.
圆盘从零展开。晶体生长、积起颜色,把光留在银色的框架里。随后星群向它坠落,结构熔化,圆盘收回,再开始新的一轮。
Look at the same crystal from another side.
绕到同一颗晶体的另一面。
Drag to orbit above or below the crystal and scroll to zoom. Click a stage to jump there and keep playing. Grow restarts growth; Temper and Hold continue from the current form; Melt starts the starfall. Only Pause or Space pauses the whole scene. M jumps to the next stage, L switches Stage lights / Inner light, R grows another crystal, G opens the controls and H hides the interface. Click inside the frame first.
拖动可以从上方绕到晶体下方,滚轮缩放。点击阶段会跳转并继续播放:Grow 从头生长,Temper / Hold 接着当前形态继续,Melt 启动星雨。只有 Pause 或 空格 暂停整个场景。M 跳到下一幕,L 切换 Stage lights / Inner light,R 重新生成,G 打开参数,H 隐藏界面。先点一下画面,让按键生效。
The study starts only when loaded. Desktop WebGL recommended.点击后才运行作品。建议使用支持 WebGL 的桌面浏览器。 Open in a full window ↗在完整窗口打开 ↗
Built from the existing project
从原来的代码继续
The six original classes remain. The bars change their position and scale for each stage, and a small set of values controls the transitions. The receiving surface changes by moving mesh vertices. Stars and the station are kept in separate files. I tried to keep the code close to the original project.
原来的六个 class 保留下来。晶条通过位置与缩放对应不同阶段,少量参数控制过渡。承影面通过改变网格顶点变形。星群和空间站放在独立文件里,尽量让代码仍然接近原来的项目。
Three.js supplies the crystal's physical material, the mirror and the broad lights. The mirror renders the scene from a reflected camera. A shared cube camera samples the surrounding space for the crystal material. The outside spotlights make the shadows. The inner point light joins Hold automatically and also casts shadows. Inner light strengthens it; the outside lights remain. The broad area lights add highlights without casting shadows.
晶体的物理材质、镜面和面光使用 Three.js 自带功能。镜面从镜像相机重新渲染场景;共享的立方体相机为晶体材质采样周围环境。阴影由外侧聚光灯生成;Hold 的自动内灯也会投影,选择 Inner light 会加强它,外部灯光仍保留。面光补充连续高光,本身不投影。
This is an approximation. The transparent layers do not calculate true coloured transmission shadows, and the crystal does not trace multiple internal reflections. The colour model and the small layer movements are design choices. They help study the appearance, but should not be mistaken for a physical experiment.
这些都还是近似。透明层没有计算真正的彩色透射阴影,晶体也没有追踪内部的多次反射。颜色模型与细小的层间运动是设计选择,用来研究观感,不是物理实验。
References & record
参考与记录
This page was assembled from the project notes, saved versions and actual browser captures. Images marked “earlier” document previous studies. The current film and gallery document the October 8 revision.
这页根据项目笔记、保留版本与浏览器实拍整理。标为“较早版本”的图片记录之前的尝试,本页新增的影片与图集记录 10 月 8 日版本。
- BISMUTH — Stage 1The original square-spiral growth system and oxide colour study.原有方形螺旋生长系统与氧化膜颜色研究。
- Royal Society of Chemistry — BismuthSpecimen photographs, hopper form and the oxide surface.标本照片、漏斗形态与氧化表面。
- Exploratorium — Colored ShadowsTwo coloured sources and the light remaining in a shadow.不同颜色光源与影子里剩下的光。
- Three.js — MeshPhysicalMaterial · RectAreaLight · Reflector, r185The built-in material, lighting and reflection tools used in this stage.这一阶段使用的内置材质、光照与反射工具。
- APERTURE · AFTERTIDE — Build LogEarlier process pages used as a reference for this record.本页参考的既有作品记录。
- Artwork / 创作
- Boyan Peng · 2026
- Tools / 工具
- Three.js · p5.js · Tweakpane
- Record / 记录
- The original Stage 1 folder is retained. This record follows the work through the October 8 revision.第一阶段原文件夹保留。这一页与 10 月 7 日的修改一起整理,暂作为本地制作记录。
- Reference images / 参考图片
- The three images in section 02 were supplied for this study. Authors and original sources remain unverified. They are kept here as local references.第二节三张图由本次研究提供,作者与原始来源尚未核实,暂作为本地参考保存。






