แอนิเมชั่นทุกสี


11

ปีที่ผ่านมามีความท้าทายที่นิยมมากในการสร้างภาพที่มีทุก 24 บิตสี

ความท้าทายของฉันคือการสร้างอนิเมชั่นที่ราบรื่น (24 เฟรม / วินาทีพูด) ซึ่งสีของทุกพิกเซลของทุกเฟรมนั้นไม่เหมือนใคร ฉันจะอนุญาตการทำซ้ำของสีตราบใดที่ทุกสีปรากฏจำนวนเท่ากัน (มากกว่า 0)เนื่องจากมิฉะนั้นภาพเคลื่อนไหวจะต้องสั้นหรือเฟรมมีขนาดเล็ก

ฉันได้สร้างตัวอย่างบางส่วนที่นี่โดยอิงจากโซลูชันที่ชนะไปยังรุ่น 2d น่าเสียดายที่ดูเหมือนว่าคุณไม่สามารถฝังวิดีโอได้ดังนั้นลิงก์จะต้องทำ


1
มีคนทำแอนิเมชันในคำตอบนี้จากคำถามที่เชื่อมโยงแล้ว ฉันไม่แน่ใจว่าเป็นไปตามเกณฑ์หรือไม่
mbomb007

1
รายละเอียดทางเทคนิคอีกเล็กน้อยจะดี "สร้าง" หมายถึงอะไร แสดงวิดีโอลงในแผ่นดิสก์หรือไม่ แสดงภาพเคลื่อนไหวเรียลไทม์?
mınxomaτ

คุณสามารถใช้ gif ...
wizzwizz4

1
@ wizzwizz4 a GIF ไม่สามารถมีสีได้มากกว่า 256 สี เพื่อให้คุณสามารถสร้างภาพขนาด 16x16 ที่มีสีแตกต่างกันสำหรับทุกพิกเซล - และไม่มีที่ว่างสำหรับการเคลื่อนไหว
ติตัส

คำตอบ:


4

มาติกา

นี่คือการใช้งานที่เรียบง่ายกับแต่ละสี rgb ครอบครองจุดตัดในตาราง 256 256 โดย 256 โดย 256 หน่วย

ความกระตุกนั้นดูเหมือนจะเป็นสิ่งประดิษฐ์ของวิดีโอไม่ใช่ข้อผิดพลาดในข้อมูลซึ่งควรจะแน่นอน

ค่าสีแดงเพิ่มขึ้นลงค่าสีเขียวเพิ่มขึ้นทางด้านขวาและค่าสีฟ้าเพิ่มขึ้นตามเฟรม

บางทีฉันจะสับสนในภายหลัง

f@b_ := Image@Table[{r, g, b}/255, {r, 0, 255}, {g, 0, 255}]
Export["c.mov", Table[f@b, {b, 0, 255}]]

คลิป QuickTime


นี่ทำให้งง มันใช้งานได้สำหรับฉันและมีการตั้งค่าการอนุญาตให้ทุกคนเข้าถึงได้ คุณสามารถเล่นวิดีโออื่น ๆ ที่ vimeo.com ได้หรือไม่?
DavidC

ใช้งานได้ตอนนี้ด้วยเหตุผลบางอย่าง
ทำให้เสียชีวิต

ดีใจที่ได้ยิน
DavidC

0

PHP (+ HTML) + JavaScript

ตอนที่ 1
สร้างภาพ 256 ภาพด้วยค่าสีแดงที่แตกต่างกันจาก 0 ถึง 255;
ค่าสีเขียว = ดัชนีแถว, ค่าสีน้ำเงิน = ดัชนีคอลัมน์

for($r=$h=256;$r--;){$i=imagecreatetruecolor($g=$h,$h);for(;$g--;)for($b=$h;$b--;)imagesetpixel($i,$g,$b,imagecolorallocate($i,$r,$g,$b));imagepng($i,"$r.png");imagedestroy($i);}

หมายเหตุ : ขึ้นอยู่กับการใช้งาน PHP ของคุณสิ่งนี้อาจทำให้เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์
หากเป็นเช่นนั้นให้ใช้จำนวนภาพต่ำสุดที่สร้างไว้แล้วแทรก<number>,หลัง$r=แล้วเรียกใช้อีกครั้ง

ส่วนที่ 2
วนผ่านรูปภาพเหล่านี้จาก 0 ถึง 255 และย้อนกลับ (0 และ 255 ถ่าย 2 เฟรมแต่ละภาพ)

<img><script>r=d=0;setInterval(()=>{document.images[0].src=r+".png",(d?!r--:(++r)>=256)?r-=(d=!d)?1:-1:r},40);</script>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.