在 FXHASH 上開發 P5 作品的習慣(randomSeed & saveFrames篇)

火機
·
·
IPFS
·
在 fxhash 開發 p5 中,透過固定的 hash 值或 random seed/noise seed,保持每次產生的畫面一致,並使用 saveframe 和製作過程 gif 的方式來記錄創作過程和觀賞成果,而 mood board 則是一個實用的概念工具,可以幫助蒐集靈感和回歸創作方向。

前言:

在 fxhash 上,genart token 如何保持畫面呢?

通常我們會透過 random/noise 來產生隨機的數值,以產生多樣性的畫面。
每個 token 每次都能保持同樣的畫面,原因是 fxhash 在產生 token 時會產生唯一的 hash 值,每次程式運行會讀取這個 hash 值當成 seed 固定下來。

這就好像每個 token 在產生時就獲得了一個身分證,每次執行作品的程式時都會讀取這個身分證,並將其轉化為參數去產生一個獨一無二的畫面。
收藏 genart 有點像抽扭蛋的概念,也是從此而來。


I.

在 p5 中,透過宣告 Random seed/noise seed,能保持每次執行程式時,即使使用了隨機,隨機產生的值都會相同,也能保持每次產生的畫面一致。
如果不使用這個特性,每個 token 的程式可能每次打開都會產生不同的畫面結果。

我在程式最開始的Setup時會這樣做

_r = fxrand();
_hash = fxhash;

print("fxrand(0,1) : ");
print(_r);
print("fxhash(string) : ");
print(_hash);

//random noise setup
seed = _r * 10000;
randomSeed(seed);
noiseSeed(seed);

但如果我要檢查特定畫面時 我會調整成這樣

//_r = fxrand();
//_hash = fxhash;
//demo: check for both mobile and desktop no difference between each other
_r = 0.7078199288807809;
_hash = "ooGYcY2ve1TXjer42LKodNHzabUfYpkeVR5dGQYkgie85ZaJBoc";

print("fxrand(0,1) : ");
print(_r);
print("fxhash(string) : ");
print(_hash);

//random noise setup
seed = _r * 10000;
randomSeed(seed);
noiseSeed(seed);

II.

透過上面提到這個方式,在開發時,我們可以針對特定的畫面細節做出修改,以了解對畫面的影響性。例如,可以調整顏色、筆畫大小、攝影機位置,或者是觸發某個條件的機率。

還有一個很實用的點是測試在手機、不同裝置上你的程式運作得如何,同樣的seed有沒有跑出一樣期待的畫面。
( 如果沒有的話可以檢查有在Seed後使用Random或是避免使用到Math.random() )


III.

"我感覺"這樣的表達雖然很直覺,但在創作中仍具有重要的意義。不過,創作並非僅靠直覺就能完成,透過紀錄畫面去修改細節是非常有幫助的。

在p5中可以使用save()來保存畫面。這個功能通常在許多作品完成時都會提供,讓收藏者可以下載圖像觀賞或提供印刷。但在創作過程中,也可以多加使用,去比較畫面的差異,甚至在開發的不同週期都有不同畫面的韻味。若有做好版本管理,也可以將過去的部分參數重新啟用,作為其中一種多樣性。

我的話會在截圖的檔案名稱上保留作品名稱、程式的版本和seed,
這樣有助於你從截圖中獲得更多資訊,也方便日後管理。

let _r,_hash;
let workName = "HelloWrold";

function fxsetup() {
	_r = fxrand();
	_hash = fxhash;
	
	print("fxrand(0,1) : ");
	print(_r);
	print("fxhash(string) : ");
	print(_hash);
	
	//random noise setup
	seed = _r * 10000;
	randomSeed(seed);
	noiseSeed(seed);
}

function keyPressed() {
    if (key == 'S' || key == 's') {
        save(_r+"-"+_hash+"-"+workName + ".png");
    } 
}

IV.

我通常在程式有了一個基本框架和固定的繪製步數後,就開始使用save()。但其實,越早開始保存畫面越好,甚至只要保持截圖的習慣就可以了。
透過保存的畫面,我們可以製作出過程gif,提供更好的觀賞性質和帶入感。具象化後的作品過程能讓觀者欣賞到你在創作上的投入和心力。

我會使用這個製作gif的網站,訣竅上是統一圖片尺寸,並讓最後一個完成版的 frame 時間稍長,以便觀眾有足夠的時間欣賞。


V.

"Mood board"是一個非常實用的概念工具,它可以幫助我們從效率和邏輯中脫離出來,回歸到創作的方向上。我會推薦使用"PureRef"這個軟體來製作你的mood board,這樣你可以輕鬆地把想法化一些你喜歡的圖片快速蒐集。

蒐集過程其實就是創作的一個縮影,你會被各種吸引你的元素所吸引,或者你會想出用某種方式來呈現這個畫面。建議你設定一個舒適的時間限制,讓你的想法可以在這段時間內完整收斂。


以上是這次的分享~希望有幫助到你
如果有任何問題都可以留言或是連絡我的Twitter
這次的分享也是Caddy找我討論時的產出,謝謝Caddy~

如果是正在籌備第一次發行需要初始資金的創作者也可以了解:
Supporter.tez 種子藝術基金,由自己發行 NFT 的好幫手 - 豆泥 (@mashbean) (matters.news)


我的Akaswap現場 : akaSwap - tz1LZA9Lpn4G1gv4BfXPFNV5Fptx3uNEgaWq

我的FXHASH現場 :fxhash — CHOUCHIAWEI profile

我的Linktree : @chouchiawei | Linktree

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!