Case study制作事例

HARU 「NO CENTER」

中心なんて 最初から 無かったでしょう

There was never a center to begin with, was there?

Read the breakdown

The film contains flashing lights · 点滅注意

00Overview概要

A measuring world, and the girl who spills out of it.

すべてを測る世界と、そこからはみ出す少女。

HARU 「NO CENTER」 is an original song and music video by ASTRA MOTION. We wrote the lyrics, designed the character, produced the reference track and directed every frame — then turned each decision into a rule that could be measured, checked and rendered at native 4K.

作詞、キャラクターデザイン、参照トラック、そして全カットの演出をASTRA MOTIONが手がけ、ひとつひとつの判断を「測れるルール」に置き換えて、ネイティブ4Kで仕上げました。

Direction · Edit · Compositing
ASTRA MOTION
Lyrics · Character design
ASTRA MOTION
Creative director
JI YOUAN
  • 128.30sSong length · 3,849 frames at 30 fps
  • 128.25BPMBeat grid from kick and snare onsets · 69 bars · 18 sections
  • 4+1Colour worlds, plus one accent that survives every grade
  • 611080p character takes · 49 FHD + 12 V2V remasters
  • 290Frames of After Effects intro, built entirely by script
  • 51.7sOf the song set in a Blender world · 40 %
  • 0Misaligned cuts in the final sync check
  • 3840×2160Native render · only the character takes are upscaled

01Conceptコンセプト

One lyric became the rule.

ひとつの歌詞が、映像のルールになった。

The pre-chorus asks a question, and the film answers it with a rule: the centre is empty. A measuring HUD keeps looking for it — CENTER: NOT FOUND — and HARU never stands in it.

「中心なんて 最初から 無かったでしょう」。だから画面の中心は空いたまま。計測HUDは中心を探し続け、HARUは決してそこに立ちません。

中心なんて最初から無かったでしょう

AI doesn't know the beauty we see, hear and feel, so we translate it into numbers — a colour temperature for a sunset, a BPM for the bar that takes our breath away. The film stages that translation: a paper city that measures, averages and centres everything, and a girl who doesn't fit its grid.

AIは、私たちが見て、聴いて、感じる美しさを知りません。だから私たちはそれを数字に翻訳する。この映像は、すべてを測り、平均し、中心に揃える方眼紙の街と、そのマス目に収まらない少女の物語です。

The measuring world

  • Dead centre, symmetry, a locked camera
  • Grids, rulers, crosshairs, timecode
  • Type glued to floors and walls
  • Verse · interlude · break

測る世界 — 中央、対称、固定カメラ。

HARU, spilling out

  • Thirds, and a world tilted up to ±8°
  • Snap zooms, whip pans, hit-stops, shake
  • Type that flies off the screen
  • Chorus · drops · finale

はみ出すHARU — 三分割、傾く世界、画面の外へ飛ぶ文字。

Four worlds, one accent.

The worlds switch only on section and bar boundaries, never on the beat. One colour survives every grade: HARU's red iris. Her mint jacket is the only colour outside the palette, so she can be found in any world.

世界はセクションと小節の境目でだけ切り替わる。どのグレードでも残るのは、赤い瞳だけ。

  • PAPER#ECE6D8

    Cream paper, teal grid, ink type. The measuring world.

  • INK#0E0D10

    Near black, white type, one red point. Chorus and system.

  • SIGNAL RED#DE1218

    Red, halftone, ink shadows. The three drops.

  • WHITEOUT#FAF8F4

    Overexposed white, one red point. Hit frames and the break.

  • ACCENT#86B7A0

    The mint jacket. The red iris survives every grade.

Ten style frames before a single shot.

Look development, composited from real take frames: one frame per world and section, built before the edit so every later decision had a target.

実際のテイクから合成した10枚のスタイルフレーム。編集の前に、すべての判断の基準を作りました。

  1. Style frame A: a macro of HARU's red eye under a measuring crosshair, with 方眼紙の vertical lyrics printed over the paper grid.AIntro · 午前零時 方眼紙の街
  2. Style frame B: HARU in colour at the front of 61 grey clones on a grid floor, with 平行線 laid out in red perspective type.BVerse · 平均 平面 平行線 · 61 clones
  3. Style frame C: HARU crossing her arms over a red line as ink walls close in, the world tilted, 線を引くほど as a label.CBuild · 線を引くほど
  4. Style frame D: HARU thrusting her palm at the lens and shouting, giant DON'T ENTER type behind and warning tape in front.DChorus 1a · DON'T ENTER
  5. Style frame E: a sneaker stomping on red halftone, a giant black kanji splitting behind it.EDrop 1 · 中心
  6. Style frame F: HARU's eyes in a monochrome close-up under a red glitching ERROR and measuring brackets.FInterlude · MEASURING... ERROR
  7. Style frame G: a fist filling the frame with stuttering OUT- type and the word OUTSIDE bursting out.GDrop 2 · OUTSIDE
  8. Style frame H: four tall panels of full-body HARU in different worlds, NO CENTER across them.HDrop 3 · NO CENTER callback
  9. Style frame I: HARU looking back from outside a drawn box, はみ出したまま in vertical Mincho, 行こう in red.IBreak · はみ出したまま
  10. Style frame J: the same shouting frame split down the middle, key only on the left and fully graded on the right.JCharacter grade · key only vs graded
Style frames A–J · 1600 × 900 · composited from FHD and 480p take frames

02Music to picture音と映像

Cut to the music, not to the lyric.

歌詞ではなく、音楽で切る。

Before any picture, the song was measured. A beat grid from kick and snare onsets. Lyric timing from a consensus of three aligners — MMS, stable-ts and WhisperX — snapped to vocal onsets within ±50 ms. Sections from measured energy and from stems entering or leaving, not from the song's tags.

絵を作る前に、まず曲を測りました。キックとスネアからビートグリッドを、3つのアライナーの合意から歌詞のタイミングを、実測したエネルギーとステムの出入りからセクションを導いています。

Song map of HARU 「NO CENTER」Sub-bass energy for each bar of the song, coloured by the world of its section. The energy jumps at the three drops, 60.18, 78.89 and 108.83 seconds, and the worlds switch only at section boundaries.Bar 1 · 0.29–2.16 s · sub 0.00Bar 2 · 2.16–4.03 s · sub 0.00Bar 3 · 4.03–5.91 s · sub 0.00Bar 4 · 5.91–7.78 s · sub 0.02Bar 5 · 7.78–9.65 s · sub 0.06Bar 6 · 9.65–11.52 s · sub 0.04Bar 7 · 11.52–13.39 s · sub 0.07Bar 8 · 13.39–15.26 s · sub 0.02Bar 9 · 15.26–17.13 s · sub 0.14Bar 10 · 17.13–19.00 s · sub 0.01Bar 11 · 19.00–20.88 s · sub 0.00Bar 12 · 20.88–22.75 s · sub 0.01Bar 13 · 22.75–24.62 s · sub 0.07Bar 14 · 24.62–26.49 s · sub 0.01Bar 15 · 26.49–28.36 s · sub 0.00Bar 16 · 28.36–30.23 s · sub 0.01Bar 17 · 30.23–32.10 s · sub 0.08Bar 18 · 32.10–33.98 s · sub 0.07Bar 19 · 33.98–35.85 s · sub 0.06Bar 20 · 35.85–37.72 s · sub 0.04Bar 21 · 37.72–39.59 s · sub 0.11Bar 22 · 39.59–41.46 s · sub 0.08Bar 23 · 41.46–43.33 s · sub 0.01Bar 24 · 43.33–45.20 s · sub 0.04Bar 25 · 45.20–47.08 s · sub 0.14Bar 26 · 47.08–48.95 s · sub 0.12Bar 27 · 48.95–50.82 s · sub 0.12Bar 28 · 50.82–52.69 s · sub 0.12Bar 29 · 52.69–54.56 s · sub 0.14Bar 30 · 54.56–56.43 s · sub 0.11Bar 31 · 56.43–58.30 s · sub 0.11Bar 32 · 58.30–60.17 s · sub 0.00Bar 33 · 60.17–62.05 s · sub 0.33Bar 34 · 62.05–63.92 s · sub 0.34Bar 35 · 63.92–65.79 s · sub 0.36Bar 36 · 65.79–67.66 s · sub 0.34Bar 37 · 67.66–69.53 s · sub 0.36Bar 38 · 69.53–71.40 s · sub 0.35Bar 39 · 71.40–73.27 s · sub 0.31Bar 40 · 73.27–75.14 s · sub 0.13Bar 41 · 75.14–77.02 s · sub 0.03Bar 42 · 77.02–78.89 s · sub 0.03Bar 43 · 78.89–80.76 s · sub 0.39Bar 44 · 80.76–82.63 s · sub 0.35Bar 45 · 82.63–84.50 s · sub 0.43Bar 46 · 84.50–86.37 s · sub 0.38Bar 47 · 86.37–88.25 s · sub 0.37Bar 48 · 88.25–90.12 s · sub 0.42Bar 49 · 90.12–91.99 s · sub 0.46Bar 50 · 91.99–93.86 s · sub 0.44Bar 51 · 93.86–95.73 s · sub 0.17Bar 52 · 95.73–97.60 s · sub 0.09Bar 53 · 97.60–99.47 s · sub 0.05Bar 54 · 99.47–101.34 s · sub 0.04Bar 55 · 101.34–103.22 s · sub 0.06Bar 56 · 103.22–105.09 s · sub 0.02Bar 57 · 105.09–106.96 s · sub 0.02Bar 58 · 106.96–108.83 s · sub 0.01Bar 59 · 108.83–110.70 s · sub 0.44Bar 60 · 110.70–112.57 s · sub 0.35Bar 61 · 112.57–114.44 s · sub 0.44Bar 62 · 114.44–116.31 s · sub 0.40Bar 63 · 116.31–118.19 s · sub 0.49Bar 64 · 118.19–120.06 s · sub 0.39Bar 65 · 120.06–121.93 s · sub 0.53Bar 66 · 121.93–123.80 s · sub 0.46Bar 67 · 123.80–125.67 s · sub 0.11Bar 68 · 125.67–127.54 s · sub 0.05Bar 69 · 127.54–128.30 s · sub 0.55Intro whisper · 0.00–7.67 sFirst bass groove · 7.67–15.60 sVerse · 15.60–25.69 sVocal distortion · 25.69–30.12 sBuild · 30.12–37.60 s消して stutter · 37.60–39.49 sPre-chorus · 39.49–44.92 sChorus 1a · 44.92–52.42 sChorus 1b + breath · 52.42–60.17 sDrop 1 · 60.17–71.87 sInterlude system · 71.87–75.10 sWhisper · countdown · 75.10–78.89 sDrop 2 · 78.89–86.17 sFinal hook · 86.17–93.86 sBreak はみ出したまま · 93.86–101.30 sSnare-roll build · 101.30–108.83 sDrop 3 finale · 108.83–123.80 sFinal hit · 123.80–128.30 sFIRST BASS 7.67CHORUS 44.92DROP 1 60.17DROP 2 78.89DROP 3 108.83FINAL HIT 123.800:000:150:300:451:001:151:301:452:00
PaperInkSignal redWhiteoutBars: sub-bass energy per bar (HARU_motion.json) · band: sections · dashed: structure hits · song time
  1. 01

    Nothing moves on every beat.

    Worlds, colour and camera set-ups change on 1-, 2- and 4-bar boundaries. Only discrete events hit the beat — landings, world steps, type slams — and they live on the world and type layers, never on the character.

    拍ごとに揺らさない。切り替えは1・2・4小節の境目で。

  2. 02

    Cut where the music changes.

    On the downbeat where the music turns, not where the lyric ends. The final hook holds to the first beat of bar 51 at 93.86 s, although its line ends at 93.42 s — off by even 0.4 s, a cut reads as a mistake.

    歌詞の終わりではなく、音楽が変わる頭拍で切る。

  3. 03

    Then check it by machine.

    A sync check finds the music's boundaries by Foote novelty over two bars of beat-synced energy and MFCCs, then matches each one to a scene change within 3.5 frames. Final master: 0 misaligned, audio +0 ms.

    境界はプログラムで照合。最終マスターのずれは0。

03Characterキャラクター

One model sheet. Every take answers to it.

一枚のモデルシートに、すべてのテイクが従う。

HARU's three-view model sheet: side, front and back. White hair in twin buns with black scrunchies and twintails with coral ties, red eyes, a black choker, a black ASTRA MOTION crop top, a mint bomber worn off the shoulders, black balloon joggers and chunky white sneakers.
Model sheet · three views · character design by ASTRA MOTION

HARU was designed in-house: a three-view model sheet, a front face and eight expressions. They are the reference for every generated take — and the standard each take is judged against.

HARUは自社でデザインしました。三面図、正面の顔、8種類の表情。生成するすべてのテイクの参照であり、合否の基準です。

  1. 01Twin buns, black scrunchies
  2. 02Red iris — kept in colour through every grade
  3. 03Twintails to the chest, coral ties
  4. 04Choker, chain, silver hoops
  5. 05ASTRA MOTION crop top — the studio's own mark
  6. 06Bandages on the cheek and the belly
  7. 07Mint bomber, #86B7A0 — the only colour outside the palette
  8. 08Balloon joggers, chunky white sneakers

A take that misses the sheet — hair length, ties, outfit — is rejected and regenerated, never patched in the composite.

髪の長さ、髪留め、衣装が違えば作り直す。合成でごまかさない。

  • HARU with a serious, level expression.Serious真顔
  • HARU glaring with lowered brows.Glareにらみ
  • HARU shouting with her mouth wide open, fangs showing.Shout叫び
  • HARU gritting her teeth.Gritted食いしばり
  • HARU with teary, sorrowful eyes.Sorrow哀しみ
  • HARU with a cold, half-lidded stare.Cold冷たい目
  • HARU singing with her mouth open.Singing歌唱
  • HARU with her eyes squeezed shut.Eyes shut目を閉じる

The take protocol.

  1. Prompt in a fixed order. Framing and lens, crisp line art, tempo and bar structure (128 BPM, changes on 1-, 2- or 4-bar units, holds like a statue), the face and the gaze, the character pinned to the sheet, a flat chroma-blue backing, then the negatives: no floor, shadow, particles or text.
  2. Reference the song. Up to seven image references — sheet, face, expressions — and an audio reference cut from the full mix, starting one second before the shot.
  3. Lip sync is a gate. Mouth opening is correlated with the vocal line by line. A take that sings the right shapes on its own timing is time-warped at syllable onsets, within ±1 frame, rather than thrown away.
  4. Respect the frame. 16:9 close-ups are used full frame — never cropped, scaled or rolled; the camera moves the world around them. Only 3:4 and 9:16 full-body takes become objects: cards, standees, clones.

Plate to final.

Because close-ups are never reframed, the raw take sits exactly under the finished shot. Drag across to take the world, the type and the grade away.

クローズアップは一切リフレームしないので、素材テイクは完成画の真下にぴたりと重なります。

Final frame: HARU shouting and pulling her jacket open in front of giant red PRESSURE type, with a chorus HUD.
Raw take: the same frame of HARU on a flat chroma-blue backing.
03Chorus 1a · MY PRESSURE · 48.50 s · S06B FHDDrag to compare

Remastered, not regenerated.

Performance is locked first, in 480p drafts that are quick to direct: acting, lip sync and timing are approved there. The approved takes are then remastered video-to-video at 1080p with Seedance 2.5, keeping every frame of the performance. Measured on the first remaster: about ten times the fine detail of the resized draft, with the mouth matching at a correlation of 0.998.

Only the stretches the edit uses are sent, packed into four-second inputs: ten requests instead of eighteen. Each result is retimed onto the draft's frames and colour-matched with its own 17³ LUT.

演技・口の形・タイミングは480pの下書きで決め、承認したテイクをSeedance 2.5のV2Vで1080pにリマスター。使う区間だけを4秒単位にまとめ、18回分を10回のリクエストに。

V2V remaster at 1080p: a close crop of HARU's face, a tear on her cheek, every strand of hair and the ear piercings sharp.
480p draft of the same frame, resized: the same face and expression, soft and blurred.
V2VPre-chorus hold · 44.55 s · S05A, same frame · face crop 1.7×Drag to compare

04After Effectsアフターエフェクツ

An intro built by script.

スクリプトで組み上げたイントロ。

AE · 0.29–7.62 sExtendScript build · loop

The first 9.63 seconds — 290 frames — are an After Effects composition generated entirely by ExtendScript. Python prepares what it needs — take frames, cut frames, lyric timing, a tracked eye point for the reticle — and the script builds the project, logs every effect parameter and writes check frames, without ever touching the app window.

冒頭9.63秒(290フレーム)は、ExtendScriptだけで構築したAfter Effectsのコンポジション。素材フレーム、カット、歌詞のタイミング、トラッキングした目の位置をPythonで用意し、スクリプトが組み上げます。

  • Glow
  • CC Light Burst
  • CC Star Burst
  • CC Radial Fast Blur
  • Radial Blur
  • Wiggle Paths
  • Leave Color
  • Time Remap · Pixel Motion

Built-in effects only, so the project renders anywhere. Time remapping with pixel-motion blending keeps the eye opening right up to the cut instead of freezing on a repeated frame. For the master, the same script rebuilds the comp at twice the scale and renders natively at 3840 × 2160.

  1. A thin blueprint grid, compass rings and a needle star drawn in deep space.

    1.50 sBlueprint draw-on

    Grid, compass and a needle star labelled CENTER draw themselves in.
  2. HARU whispering with closed eyes, a light streak across her face and short vertical lyrics at the edges.

    5.00 sLyrics at eye level

    午前零時 / 方眼紙の街, split left and right in vertical Mincho.
  3. A grey macro of a closed eye with a thin red reticle drifting over it.

    7.00 sReticle

    A red sight hunts across the closed eye, then locks onto the pupil.
  4. A four-point star torn open in a grey frame, a red iris glowing inside it.

    7.67 sTorn-star window

    The first bass hit tears a four-point star open; the eye opens inside it.
  5. HARU staring coldly inside a black eclipse disc with a white ring around her.

    9.30 sEclipse ring

    The ring's front half crosses over her, the back half passes behind.

The eclipse ring, as code.

Every motif is a function. This one builds the eclipse: a rim flare that runs around the disc, a zig-zag corona turning three degrees a second, a thin red ring, then radial streaks and two glows. Sizes are written in design pixels and scaled once, so the same build renders at 1080p or natively at 4K.

モチーフはすべて関数。デザイン座標で書き、倍率ひとつで1080pにも4Kにも組み上がります。

ae_ref/haru_ref_build.jsxExtendScript · excerpt
function buildEclipse() {
    var c = pre('PC_ECLIPSE', 2000, 2000);
    var s = shapeL(c, 'eclipse', false); tp(s, POS).setValue(px([1000, 1000]));
    var g = grp(s, 'rim flare'); ellP(g, 1300);
    var t = trimP(g, 0, 7, 0); t.property('ADBE Vector Trim Offset').expression = 'time*95';
    strokeP(g, C.white, 15, 100);
    …
    g = grp(s, 'corona'); ellP(g, 1384); zigP(g, 24, 100); strokeP(g, C.paper, 1.5, 45);
    gt(g, 'ADBE Vector Rotation').expression = 'time*3';
    …
    g = grp(s, 'red ring'); ellP(g, 1236); strokeP(g, C.red, 2.2, 85);
    g = grp(s, 'disc'); ellP(g, 1300); fillP(g, C.disc, 100);
    var a = adj(c, 'ADJ streaks + glow');
    var rb = fx(a, 'ADBE Radial Blur', 'zoom streaks'); sp(rb, 1, 10); sp(rb, 2, px([1000, 1000])); sp(rb, 3, 2); sp(rb, 4, 2);
    glow(a, 'glow tight', 50, 45, 2.2);
    glow(a, 'glow wide', 30, 220, 0.9);
    return c;
}

05Blenderブレンダー

Worlds built in code.

コードで建てた世界。

Blender runs headless, driven by Python. Geometry, Geometry Nodes, camera keys and renders all come from scripts, so a world can be re-timed to the song and rendered again at 4K from the same source. The numbers on screen are measured from the scene itself.

Blenderは画面を開かず、Pythonで動かします。ジオメトリ、ジオメトリノード、カメラ、レンダリングまでスクリプトで管理し、曲に合わせて組み直し、同じソースから4Kで描き直せます。

Set in Blender
51.7 s of 128.3 s
Worlds in the edit
6
Renderer
EEVEE native 3840 × 2160
Blender · 60.10–67.62 sDrop 1 · water world · loop
  • HARU redrawn as a wire mesh of points and lines on paper, with coordinate readouts.

    9.67–13.37 s

    Data scan

    As the camera cranes up, her body is redrawn as wire mesh, points and coordinates. The values are real: beats, Blender-measured 3D readings, tracked pupils, bass level.

  • HARU on dark water beside a ring of white sand closing into a circle.

    60.17–68.10 s

    Water world

    A 1.3 m ice cube shatters into 193 shards on the drop's first beat. Rings spread, wire polyhedra and a ribbon of her real waveform appear, then 36,000 grains of sand close into an empty circle: CENTER: NOT FOUND.

  • Cards of HARU standing on a black grid canvas among white wireframe towers.

    69.53–75.03 s

    Canvas

    A card storm on a giant canvas, then one unbroken zoom-out sweep onto the data plan, and a data room where the scan reads ERROR.

  • HARU singing with open arms inside a tunnel of black and white chrome blocks, a LIVE tag in the corner.

    86.20–93.83 s

    4 FEEDS

    A 2 × 2 wall of feeds in black-and-white chrome with mixed typefaces. The red neon line she draws becomes the crosshair between them, and the camera tours C → D → B → A.

  • HARU walking toward the camera down rails inside a white tunnel of black rings.

    101.50–123.77 s

    Rail world

    A runaway locomotive. Through the build, speed, ring spacing and lens width grow every bar; the last drop keeps running down the same track in the colour of each row.

  • A single rough white cube floating in the dark beside HARU, who holds her palms together.

    123.80–128.30 s

    193 → 1

    Her closing spell pulls the 193 shards of drop 1's cube back into one. Shot at f/0.6 with six-sample motion blur, then the world goes black.

The same 193 shards, twice.

The ice cube is cut into tetrahedra from a fixed seed. Drop 1 throws the pieces outward on its first beat; the ending calls the same function with the same seed, so the shards that gather into one cube at the very end are exactly the ones that flew apart in the drop.

同じシードから、同じ193片。ドロップで砕けた欠片が、エンディングでひとつに戻ります。

xpoly/scripts/plan.pyPython · excerpt
def make_shards(seed=11):
    rng = np.random.default_rng(seed)
    h = CUBE_S / 2
    pts = [np.array([x, y, z]) for x in (-h, h) for y in (-h, h) for z in (-h, h)]
    …                                          # + 30 points on the faces, 12 inside
    out = []
    for tet in Delaunay(pts).simplices:
        V = pts[tet]
        vol = abs(np.linalg.det(np.stack([V[1] - V[0], V[2] - V[0], V[3] - V[0]]))) / 6
        if vol < 1e3:
            continue
        c = V.mean(0)
        …
        d = c / h + 0.35 * rng.normal(size=3)
        d /= np.linalg.norm(d)
        speed = (2400 + 3400 * rng.random()) * (900 / max(size, 300)) ** 0.35
        …
    order = np.argsort([-s['vol'] for s in out])
    for i in (order[5], order[11]):            # two red shards, mid-sized
        out[i]['red'] = True
    return out

Straight out of EEVEE.

The 4 FEEDS sets before compositing: a shard burst, falling chrome slivers, a mirrored grid floor, a block tunnel and a white room.

  1. Raw render: white and red shards bursting from a centre point on black.
  2. Raw render: thin white, grey and red slivers falling through black.
  3. Raw render: chrome pillars and floating plates over a mirrored grid floor.
  4. Raw render: a tunnel of black, white and grey blocks spiralling to a vanishing point.
  5. Raw render: white pillars and tumbling plates in a white room under a black sky.
4 FEEDS · raw EEVEE frames · song 86.7–92.5 s
  1. The paper city in the PAPER world: cream walls with vertical lyrics and a red target at the end of the boulevard.PAPER
  2. The same city in the INK world: black walls outlined in white.INK
  3. The same city in the SIGNAL RED world: red walls with dark red halftone shadows.SIGNAL RED
  4. The same city in the WHITEOUT world: overexposed white walls.WHITEOUT

One city, four worlds.

Look development in Blender: a paper city of 88 buildings, the lyrics set vertically on its walls, a red CENTER target in the middle of the boulevard — rendered with the same camera in all four worlds to prove the pipeline against the palette.

同じ街、同じカメラで4つの世界を描き分けたルック開発。

06Compositing合成

One renderer for the final.

最終画は、ひとつのレンダラーで。

Every frame of the master is written by our own compositor: Python with NumPy and Pillow, Metal kernels, and PyTorch MPS for keying. It places the keyed takes, the worlds, the type and the HUD on a 2.5D camera, and splices in the After Effects and Blender renders frame for frame.

最終マスターの全フレームは、自社のPythonコンポジター(NumPy・Pillow、Metal、PyTorch MPS)が書き出しています。

Where every second was made.

Song frames 0–3848 at 30 fps
  1. After Effects intro, 0.00–9.67 s
  2. Compositor + Blender data scan, 9.67–13.40 s
  3. Compositor · groove to pre-chorus, 13.40–44.80 s
  4. Compositor · chorus 1, 44.80–60.17 s
  5. Compositor + Blender water world · drop 1, 60.17–68.13 s
  6. Compositor · drop 1 rage, 68.13–69.53 s
  7. Blender canvas · card storm and sweep, 69.53–75.07 s
  8. Compositor · countdown to drop 2, 75.07–86.20 s
  9. Blender 4 FEEDS · final hook, 86.20–93.87 s
  10. Compositor · break, 93.87–101.50 s
  11. Compositor + Blender rail world · build, 101.50–107.90 s
  12. Blender rail world · drop 3 first cut, 107.90–110.70 s
  13. Compositor + Blender rail world · last drop, 110.70–120.07 s
  14. Blender 4 FEEDS · drop 3 callback, 120.07–121.93 s
  15. Compositor + Blender rail world · glare, 121.93–123.80 s
  16. Blender polyhedra · ending spell, 123.80–128.30 s
  • 52 %Compositor
  • 23 %Compositor over a Blender world
  • 17 %Blender splice
  • 8 %After Effects splice

Type in three tiers.

  1. HARU singing in front of giant red kanji 平面 that fill the frame.

    L

    Slam

    One or two words at 40–70 % of the frame height. They land a frame before the syllable with a two-frame overshoot, and leave on the next phrase with motion blur.

  2. A paper grid city seen low along the floor, red words 平均 平面 平行線 laid in perspective.

    M

    Architecture

    Phrases set on 3D floors and walls. The camera passes over them, so the perspective, not the animation, does the work.

  3. An extreme close-up of HARU's red eyes with thin measuring reticles and small HUD readouts.

    S

    Measure

    A small mono HUD of time, BPM, coordinates and readings — the voice of the measuring world. Small, but many.

Key

Translucent hair, kept.

A chroma key built for white hair: a matte from the local backing colour, a guided filter that redraws the half-resolution 4:2:0 chroma edge at full resolution, and unmixing of the blue from the edge colour, computed on the GPU.

Grade

A sticker no more.

Shadows tinted to each world, a 6–10 px rim in the world's colour, halftone shadows only in the drops, highlight glow and grain — so a keyed figure sits inside the frame instead of on top of it.

4K

Upscale once, render the rest.

Type, worlds, HUD, effects, the AE intro and the Blender splices are rendered natively at 3840 × 2160. Only the character takes are upscaled, once per source: Real-ESRGAN for 480p drafts, Real-CUGAN 2× with 25 % of the source for 1080p takes. The finished composite is never upscaled.

Out of the frame, by rule.

Letterbox bars stay pure black. Only an outstretched limb may cross them — never the head or the body — and only on chosen hits. In that frame the world alone drops out of focus and the figure pushes 6 % toward the lens.

レターボックスを越えるのは、伸ばした手足だけ。頭と体は枠の内側に残す。

HARU gritting her teeth behind a red world as her open palm crosses the black letterbox bar toward the lens. The sole of HARU's sneaker kicking toward the lens between stuttering OUT- type on red.
Interlude · 69.53–75.03 sBlender canvas + compositor HUD · loop

07Direction演出ルール

The rules we held the film to.

この映像に課したルール。

  1. 01

    Vary the kind of shot, not the speed.

    Each section was planned with its own world, camera grammar and type scale, and every edit is audited for its mix of shots — front busts, centred frames, rolls, full bodies. The energy comes from what changes, not from cutting faster.

  2. 02

    Motion follows the structure.

    Nothing bobs on every beat. World, colour and camera set-ups change on bar boundaries; only landings, world steps and slams hit the beat.

  3. 03

    Cut where the music changes.

    On the downbeat, never where the lyric ends.

  4. 04

    The body carries the drops.

    Full-body standees on a 3D floor, clone cascades, squad unison and punch holds — not cards and close-ups.

  5. 05

    Lip sync is a gate.

    A mouth that doesn't match the line is never used for singing. Slide it line by line first; what still doesn't match becomes a silhouette.

  6. 06

    Never crop a close-up.

    16:9 takes stay full frame. The camera moves the world around them.

  7. 07

    The sheet is law.

    Anything off-model is regenerated. The composite never covers for a take.

  8. 08

    Flash-safe by default.

    At most three full-frame flashes a second. Where a drop strobes on purpose, a warning card opens the film.

08Delivery納品と検証

Measured before it shipped.

出す前に、測る。

Resolution
3840 × 2160, native
Frame rate
30 fps
Video
HEVC (hvc1) · 60 Mbps
Colour
BT.709
Audio
AAC 48 kHz · 320 kbps
Length
3,969 frames · 2:12.30
Opening
4 s photosensitivity card, silent
  • Sync

    Music boundaries matched to scene changes within 3.5 frames: 0 misaligned, audio +0 ms.

  • Flash

    Harding-style one-second windows on the master. Where the drops strobe by design, the warning card says so. Every clip on this page passes the same check.

  • Completeness

    Every compositor part, splice and card frame present before the encode: 0 missing.

  • Change control

    A change re-renders only its window, at 4K, and the frames around it are compared byte for byte with the previous master.

09Creditsクレジット

Direction · Edit · Compositing
ASTRA MOTION
Lyrics · Character design
ASTRA MOTION
Reference track · Arrangement · Sound design
ASTRA MOTION
Creative director
JI YOUAN
Music
Suno AI v6
Character animation
Seedance 2.5 · V2V remaster
Motion graphics
Adobe After Effects
3D
Blender

Toolchain

  • After Effects · ExtendScript
  • Blender · EEVEE · Geometry Nodes
  • Python · NumPy · Pillow
  • Metal · PyTorch MPS
  • Seedance on Higgsfield
  • Suno v6
  • Logic Pro · Serum
  • Real-ESRGAN · Real-CUGAN
  • FFmpeg · VideoToolbox

See it move. In 4K.

4Kで、動く姿を。

Open on YouTube
All work

HARU 「NO CENTER」 Official Music Video · 4K

Plays in the YouTube player. Contains flashing lights · 点滅注意Open on YouTube

ASTRA MOTIONメニュー

contact@astra-motion.kr

START A PROJECT

A place for your idea.

あなたのアイデアを、ここから。

Tell us a little about what you have in mind.つくってみたいものについて、少し聞かせてください。

This form prepares an email draft for contact@astra-motion.kr. Nothing is sent automatically.contact@astra-motion.kr宛てのメール下書きを作成します。自動では送信されません。