RIKKYO COLLECTION

🕒日時🕔
11/4
開場 15:30 【開演】 16 : 00
【閉演】 16 : 50 閉場 17 : 00

📍場所📍

9号館大教室

ー立教コレクションとはー

立教コレクションは、立教生のみで創り上げる特別なファッションショーです。ステージ設営から服の制作、モデル出演まで、すべてを立教生の手で行っている、唯一無二のステージです。

42nd Rikkyo Collectionのテーマは

Éphémère

Éphémère――フランス語で「儚い」「つかの間の」という意味を持つ言葉。

私たちは、毎日を過ごす中で、自分らしさや個性を持っていても、それを表に出す機会は意外と少ないのではないでしょうか。教室の中だけでは見えない表情や、普段は隠している魅力。そんな一人ひとりの「まだ見えていない自分」を、この一瞬だけの舞台で解き放ちます。


ースタイルブックの無料配布を実施ー

今年のテーマであるÉphémère エフェメールコンセプトのページ、立教生の私服での作成、立コレ構成員のページなど様々な情報を記載

今回のRikkyo Collectionでは、1モデル1アイテム手作りを軸に、モデル一人ひとりの個性から生まれる世界観を表現します。同じ時間、同じ場所であっても、二度と同じ瞬間は訪れない。だからこそ、その瞬間にしか生まれない美しさがあります。


儚いからこそ、忘れられない。
一瞬だからこそ、価値がある。


このステージでしか見ることのできない、それぞれの「Éphémère」をお楽しみください。

注意喚起

・演出上の理由により公演中の入退室が出来ないのでご了承ください。

・携帯電話の電源はお切りください。

・写真や動画の撮影はご遠慮ください。

RIKKYO COLLECTION

-日時-
11/4
開場 15:30 【開演】 16 : 00
【閉演】 16 : 50 閉場 17 : 00

-場所-

9号館大教室

ー立教コレクションとはー

立教コレクションは、立教生のみで創り上げる特別なファッションショーです。ステージ設営から服の制作、モデル出演まで、すべてを立教生の手で行っている、唯一無二のステージです。

42nd Rikkyo Collectionのテーマは

Éphémère

Éphémère――フランス語で「儚い」「つかの間の」という意味を持つ言葉。

私たちは、毎日を過ごす中で、自分らしさや個性を持っていても、それを表に出す機会は意外と少ないのではないでしょうか。教室の中だけでは見えない表情や、普段は隠している魅力。そんな一人ひとりの「まだ見えていない自分」を、この一瞬だけの舞台で解き放ちます。


ースタイルブックの無料配布を実施ー

今年のテーマであるÉphémère エフェメールコンセプトのページ、立教生の私服での作成、立コレ構成員のページなど様々な情報を記載

今回のRikkyo Collectionでは、1モデル1アイテム手作りを軸に、モデル一人ひとりの個性から生まれる世界観を表現します。同じ時間、同じ場所であっても、二度と同じ瞬間は訪れない。だからこそ、その瞬間にしか生まれない美しさがあります。


儚いからこそ、忘れられない。
一瞬だからこそ、価値がある。


このステージでしか見ることのできない、それぞれの「Éphémère」をお楽しみください。

注意喚起

・演出上の理由により公演中の入退室が出来ないのでご了承ください。

・携帯電話の電源はお切りください。

・写真や動画の撮影はご遠慮ください。

RIKKYO COLLECTION

-日時-
11/4
開場 15:30 【開演】 16 : 00
【閉演】 16 : 50 閉場 17 : 00

-場所-

9号館大教室

ー立教コレクションとはー

立教コレクションは、立教生のみで創り上げる特別なファッションショーです。ステージ設営から服の制作、モデル出演まで、すべてを立教生の手で行っている、唯一無二のステージです。

42nd Rikkyo Collectionのテーマは

Éphémère

Éphémère――フランス語で「儚い」「つかの間の」という意味を持つ言葉。



私たちは、毎日を過ごす中で、自分らしさや個性を持っていても、それを表に出す機会は意外と少ないのではないでしょうか。教室の中だけでは見えない表情や、普段は隠している魅力。そんな一人ひとりの「まだ見えていない自分」を、この一瞬だけの舞台で解き放ちます。


ースタイルブックの無料配布を実施ー

今年のテーマであるÉphémère エフェメールコンセプトのページ、立教生の私服での作成、立コレ構成員のページなど様々な情報を記載

今回のRikkyo Collectionでは、1モデル1アイテム手作りを軸に、モデル一人ひとりの個性から生まれる世界観を表現します。同じ時間、同じ場所であっても、二度と同じ瞬間は訪れない。だからこそ、その瞬間にしか生まれない美しさがあります。


儚いからこそ、忘れられない。
一瞬だからこそ、価値がある。


このステージでしか見ることのできない、それぞれの「Éphémère」をお楽しみください。

注意喚起

・演出上の理由により公演中の入退室が出来ないのでご了承ください。

・携帯電話の電源はお切りください。

・写真や動画の撮影はご遠慮ください。

// === 羽アニメーション用 JavaScript (超繊細・小型サイズ) === const canvas = document.getElementById('featherCanvas'); const ctx = canvas.getContext('2d'); let width, height; function resize() { width = canvas.width = window.innerWidth; height = canvas.height = window.innerHeight; } window.addEventListener('resize', resize); resize(); // さらに小さく精巧な羽(Offscreen Canvas)を事前生成 function createFeatherTexture(baseSize) { const texCanvas = document.createElement('canvas'); const padding = 50; texCanvas.width = baseSize + padding * 2; texCanvas.height = baseSize * 2.6 + padding * 2; const tCtx = texCanvas.getContext('2d'); const cx = texCanvas.width / 2; const topY = padding; const botY = texCanvas.height - padding; const length = botY - topY; tCtx.save(); // 1. 影と立体的な厚み(小ぶりでも存在感のあるドロップシャドウ) tCtx.shadowColor = 'rgba(0, 0, 0, 0.25)'; tCtx.shadowBlur = 12; tCtx.shadowOffsetX = 4; tCtx.shadowOffsetY = 8; // 2. 羽の外輪郭 tCtx.beginPath(); tCtx.moveTo(cx, botY); tCtx.bezierCurveTo(cx - baseSize * 0.48, botY - length * 0.25, cx - baseSize * 0.65, topY + length * 0.3, cx, topY); tCtx.bezierCurveTo(cx + baseSize * 0.65, topY + length * 0.3, cx + baseSize * 0.48, botY - length * 0.25, cx, botY); tCtx.closePath(); // グラデーション const bodyGrad = tCtx.createRadialGradient(cx, topY + length * 0.4, baseSize * 0.05, cx, topY + length * 0.5, baseSize * 0.7); bodyGrad.addColorStop(0, 'rgba(255, 255, 255, 0.98)'); bodyGrad.addColorStop(0.45, 'rgba(240, 243, 248, 0.92)'); bodyGrad.addColorStop(0.8, 'rgba(215, 222, 230, 0.82)'); bodyGrad.addColorStop(1, 'rgba(190, 200, 210, 0.0)'); tCtx.fillStyle = bodyGrad; tCtx.fill(); // 3. 羽軸(Rachis) tCtx.shadowColor = 'transparent'; tCtx.beginPath(); tCtx.moveTo(cx, botY + 6); tCtx.quadraticCurveTo(cx - 1.5, topY + length * 0.5, cx, topY + 3); tCtx.lineWidth = Math.max(1.8, baseSize * 0.035); const stemGrad = tCtx.createLinearGradient(cx, botY, cx, topY); stemGrad.addColorStop(0, 'rgba(180, 188, 198, 0.95)'); stemGrad.addColorStop(0.5, 'rgba(255, 255, 255, 1.0)'); stemGrad.addColorStop(1, 'rgba(220, 226, 232, 0.85)'); tCtx.strokeStyle = stemGrad; tCtx.stroke(); // 4. 高密度な繊細な毛束 const barbCount = 130; for (let i = 0; i < barbCount; i++) { const t = i / barbCount; const currY = botY - t * length; const widthFactor = Math.sin(t * Math.PI); const barbLen = baseSize * 0.48 * widthFactor; [-1, 1].forEach(dir => { tCtx.beginPath(); tCtx.moveTo(cx, currY); const curveX = cx + dir * barbLen * (0.8 + Math.random() * 0.3); const curveY = currY - (length * 0.04) + (Math.random() * 3 - 1.5); tCtx.quadraticCurveTo( cx + dir * barbLen * 0.5, currY - 1.5, curveX, curveY ); tCtx.lineWidth = 0.6 + Math.random() * 0.5; const alpha = (0.35 + widthFactor * 0.5) * (0.6 + Math.random() * 0.4); tCtx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; tCtx.stroke(); }); } // 5. 根元の綿毛(Downy Feather) const fluffCount = 40; for (let i = 0; i < fluffCount; i++) { const t = (i / fluffCount) * 0.25; const currY = botY - t * length; const angle = (Math.random() - 0.5) * Math.PI * 0.8; const fluffLen = baseSize * (0.18 + Math.random() * 0.3); tCtx.beginPath(); tCtx.moveTo(cx, currY); tCtx.quadraticCurveTo( cx + Math.sin(angle) * fluffLen * 0.5, currY - Math.cos(angle) * fluffLen * 0.5, cx + Math.sin(angle) * fluffLen, currY - Math.cos(angle) * fluffLen + 6 ); tCtx.lineWidth = 0.8 + Math.random() * 0.6; tCtx.strokeStyle = `rgba(255, 255, 255, ${0.45 + Math.random() * 0.45})`; tCtx.stroke(); } tCtx.restore(); return texCanvas; } // 超小型サイズ設定(ベースサイズ 50px) const featherTexture = createFeatherTexture(50); // 羽クラス class Feather { constructor(isInitial = false) { this.reset(isInitial); } reset(isInitial = false) { this.x = Math.random() * width; this.y = isInitial ? Math.random() * height : -120; // Z軸奥行き(0.25 〜 1.1) this.z = 0.25 + Math.random() * 0.85; // 羽の大きさ(さらに小型化: 0.45 〜 0.85倍) this.scale = this.z * (0.45 + Math.random() * 0.4); // スピーディーな落下速度 this.speedY = (1.8 + Math.random() * 2.2) * this.z; this.speedX = (Math.random() - 0.5) * 1.2; // 3D回転・スピーディーな翻り this.rotX = Math.random() * Math.PI * 2; this.rotY = Math.random() * Math.PI * 2; this.rotZ = (Math.random() - 0.5) * 1.5; this.rotSpeedX = (Math.random() - 0.5) * 0.05; this.rotSpeedY = (Math.random() - 0.5) * 0.065; this.rotSpeedZ = (Math.random() - 0.5) * 0.03; this.oscillation = Math.random() * Math.PI * 2; this.oscSpeed = 0.035 + Math.random() * 0.045; this.opacity = Math.min(1.0, 0.4 + this.z * 0.6); } update() { this.oscillation += this.oscSpeed; this.x += Math.sin(this.oscillation) * 2.2 * this.z + this.speedX; this.y += this.speedY; this.rotX += this.rotSpeedX; this.rotY += this.rotSpeedY; this.rotZ += this.rotSpeedZ; if (this.y > height + 120) { this.reset(false); } } draw() { ctx.save(); ctx.translate(this.x, this.y); const scaleY = Math.cos(this.rotX); const scaleX = Math.cos(this.rotY); ctx.rotate(this.rotZ); ctx.scale(scaleX * this.scale, scaleY * this.scale); // 被写界深度(奥にある羽をソフトにブラー) if (this.z < 0.5) { ctx.filter = `blur(${(0.5 - this.z) * 4}px)`; } const flipLighting = Math.abs(scaleX * scaleY) * 0.6 + 0.4; ctx.globalAlpha = this.opacity * flipLighting; ctx.drawImage( featherTexture, -featherTexture.width / 2, -featherTexture.height / 2 ); ctx.restore(); } } // 羽の枚数(小さくなった分、少し枚数を増やして35枚で繊細に舞うように配置) const featherCount = 35; const feathers = Array.from({ length: featherCount }, () => new Feather(true)); // アニメーションループ function animate() { ctx.clearRect(0, 0, width, height); feathers.sort((a, b) => a.z - b.z); feathers.forEach(feather => { feather.update(); feather.draw(); }); requestAnimationFrame(animate); } animate();