안녕하세요!
회원 로그인
신규 회원 등록
내 계정
주문문의
독점 쿠폰
즐겨찾기 목록
회원 로그아웃
0
현재 장바구니가 비어있습니다!
지금 구매하세요
즐겨찾기 목록으로 이동
찾다
찾다
施巴
施巴
多層級
계정
내 계정
주문문의
회원 로그아웃
회원 로그인
신규 회원 등록
언어
0
import { Canvas, useFrame } from '@react-three/fiber' import { OrbitControls } from '@react-three/drei' import { useMemo } from 'react' import * as THREE from 'three' function MarqueeRingScreen() { // 使用 useMemo 確保 Canvas 只被創建一次,提升效能 const texture = useMemo(() => { // 1. 建立隱藏的 2D 畫布 const canvas = document.createElement('canvas') canvas.width = 2048 // 寬度拉大以容納長文字 canvas.height = 256 const ctx = canvas.getContext('2d') // 2. 畫黑色背景 ctx.fillStyle = '#000000' ctx.fillRect(0, 0, canvas.width, canvas.height) // 3. 畫上跑馬燈文字 (模擬 LED 高亮度綠色) ctx.fillStyle = '#00FF00' ctx.font = 'bold 150px Arial' ctx.textAlign = 'center' ctx.textBaseline = 'middle' ctx.fillText('★ HIGH DEFINITION LED DISPLAY ★', canvas.width / 2, canvas.height / 2) // 4. 將 Canvas 轉換為 Three.js 的貼圖 const tex = new THREE.CanvasTexture(canvas) tex.wrapS = THREE.RepeatWrapping // 允許貼圖在水平方向無縫重複拼接 tex.wrapT = THREE.RepeatWrapping return tex }, []) // useFrame 會在瀏覽器每一次畫面刷新時執行 (約每秒 60 次) useFrame(() => { // 不斷改變貼圖的 X 軸偏移量,創造出文字滾動的視覺效果 texture.offset.x -= 0.002 }) return (
{/* 環形屏:使用圓柱體 (半徑 2, 高 1, 側邊分段 64, openEnded=true 代表上下不封頂) */}
{/* side={THREE.DoubleSide} 讓圓柱體的內外兩側都能顯示畫面 */}
) } export default function App() { return (
{/* 攝影機稍微拉高一點 (Y軸設為2),並往下看,比較容易看出環形的立體感 */}
) }
제품 재고 부족에 대한 메시지
×
보내다
현재 구매가 집중되고 있습니다. 잠시만 기다려 주세요
이 페이지를 떠나면 대기 시간이 늘어날 수 있습니다.
상품 페이지 다시 들어가기
Loading
장바구니에 추가됨
장바구니가 업데이트되었습니다.
네트워크에 이상이 있습니다. 재설정해 주세요.