Godot 4 提供了「地形 (Terrain)」系統,用來自動處理這類圖塊之間的連接。
這能讓你在繪製地圖時,自動使用「正確」的圖塊變體,而不需要手動切換。
地形(Terrains)系統是由 地形集 (Terrain Sets)、地形 (Terrains) 和 圖塊 (Tiles) 所組成的。
TileSet 可以包含一個或多個 地形集 (Terrain Sets);Terrain Sets) 可以包含一個或多個 地形 (Terrains);Terrains) 又可以包含一個或多個 圖塊 (Tiles)。地形圖塊(Terrain Tile)具有一個 中心位 (Center Bit) 和多個 周圍偵測位 (Peering Bits)。
每個位元 (bit) 都可以被指定為某一種地形(Terrain)。
我們通常把「某個圖塊(Tile)的中心與相鄰位被指定的地形組合」稱為它的 位元遮罩 (bitmask)。
中心位(也就是圖塊本身的地形),代表整個圖塊所屬的地形類型;
而「相鄰位(Peering Bits)」則像拼圖邊緣一樣,決定這個圖塊可以與哪些其他圖塊相鄰拼接。
圖塊的形狀以及所使用的地形模式(Terrain Mode),
會共同決定這個圖塊擁有哪些相鄰位,以及這些相鄰位的外觀與排列方式。
Godot 4 中有三種 Terrain Modes
Tile)數量為: 16 Til)最容易被設定與使用,straight lines),turns)與交叉口(intersections),filled-in rectangles)。diagonal lines)。此外,當你繪製矩形區域(rectangles)時,無法區別「外轉角(Outside corners)」與「內轉角(Inside corners)」。對於許多圖塊(Tiles)來說,美術設計上會要求內轉角的樣子必須與外轉角不同。如果你的情況是這樣,你將無法繪製比「單一矩形」更複雜的形狀。Peering Bits): Match Sides)下,會使用圖塊 (Tiles)邊緣的周圍偵測位元 (Peering Bits)。Tiles)具有四個周圍偵測位元 (Peering Bits);hexagonal tiles)則有六個。Peering Bits)只會對應到一個鄰近圖塊 (neighboring tile)。位於角落的鄰居則不會被影響。Tile)數量為: 16 Tile)最容易被設定與使用,landscape) 或是洞穴地形(caves)Tile)只能以 4 個為一組(2x2 方塊)進行連接。這意味著無法實現細微的細節,也無法繪製寬度僅為單個圖塊 (Tile)的線條。Peering Bits):角對齊模式 (Match Corners)在圖塊 (Tile)的頂角(Corners)上使用周圍偵測位元(Peering bits)Tiles): 具有四個周圍偵測位元 (Peering Bits),且每個周圍偵測位元 (Peering Bits)處會有 3 個鄰近圖塊(Tiles)。Tiles): 擁有 6 個周圍偵測位元 (Peering Bits),但每個周圍偵測位元 (Peering Bits)處只有 2 個鄰近圖塊(Tiles)。Tile)數量為: 47 diagonal lines)且他需要最多的圖塊(Tile)。Peering Bits): Tiles)的頂角 (Corners) 與 邊緣 (Edges) 同時使用周圍偵測位元 (Peering Bits)。Tiles)具有8個周圍偵測位元 (Peering Bits);hexagonal tiles)擁有 12 個。Peering Bits)只會對應到一個鄰近圖塊 (neighboring tile)。Tiles),其該角的周圍偵測位元 (Peering Bits)必須設置為相同的地形。以下紀錄在 Mac 中如何使用 Rovo Dev CLI
首先訪問 https://developer.atlassian.com/cloud/acli/guides/install-macos/
透過 Homebrew 安裝 acli
1 | brew tap atlassian/homebrew-acli |
再到 https://www.atlassian.com/software/rovo-dev 註冊一個帳號
完成後到你的 Atlassian 帳戶後台,找到 https://id.atlassian.com/manage-profile/security/api-tokens 建立權杖(token),目前最多只能設定一年。
有了權杖(token) 之後,開啟終端機,輸入以下登入指令
1 | acli rovodev auth login |
之後會提示要輸入你的 Email 和以及剛剛產生的 API 權杖(Token)
登入成功後,我們就可以開始使用,終端機位置移動到你程式碼專案的資料夾下,並輸入
1 | acli rovodev run |
如果一切沒有問題,就可以看到 Rovo 啟動的畫面
1 | ╭────────────────────────────────────────────╮ |
在執行的過程中,如果 Rovo 需要執行需要權限的指令 (如 mkdir) ,它都會詢問你的權限。
Allow (ones): 僅同意這一次。Allow (session): 在這個 session 中永遠同意此操作。Allow (always): 永遠允許此操作。Deny (ones): 拒絕這一次。Deny (session): 在這個 session 中永遠Deny此操作。Deny (always): 永遠Deny此操作。如果想更改,可以到 /Users/使用者/.rovodev/config.yml 檔案中修改
有時候英文影片沒有字幕,我們可以使用 Chrome 來播放它,並產生即時字幕。
這個功能預設是不開啟的,以下說明如何開啟。
在 Chrome 瀏覽器位置輸入 chrome://settings ,進入設定畫面,找到 無障礙設定
將 無障礙設定 中的 即時字幕 開啟,他會自動下載語言,你可以選擇添加自己想要的語言。
之後,將影片檔案拖入到 Chrome 中,它就會為你即時產生字幕了。
以下紀錄使用 LTX-Video 的筆記
https://github.com/Lightricks/LTX-Video
首先要將它從 GitHub 拉下來
1 | git clone https://github.com/Lightricks/LTX-Video.git |
切換到他的資料夾下
1 | cd LTX-Video |
建立 Python 虛擬環境
1 | python -m venv env |
前往 https://huggingface.co/Lightricks/LTX-Video 下載 Model
使用 文字生成影片
1 | python inference.py --ckpt_path /Volumes/test/video/ltx-video-2b-v0.9.1.safetensors --prompt "A monkey dance" --height 768 --width 1024 --num_frames 10 --seed 2 |
使用 圖片生成影片
1 | python inference.py --ckpt_path /Volumes/test/video/ltx-video-2b-v0.9.1.safetensors --prompt "A monkey dance" --input_image_path /Volumes/test/video/8e5352fc-70b0-41cd-9a9a-704445df7ab0.png --height 768 --width 1024 --num_frames 200 --frame_rate 20 --seed 3 |
以下紀錄在 Mac 上安裝 ComfyUI 的步驟
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"brew install cmake protobuf rust python@3.10 git wget./venv/bin/pip install torch torchvision torchaudio./venv/bin/pip install -r requirements.txt.ckpt 或 .safetensors/models/checkpoints 的路徑./venv/bin/python main.py若想與 AUTOMATIC1111 Stable Diffusion WebUI 一起使用相同的模型的話,可以找到 extra_model_paths.yaml.example 這個檔案,他應該直接在 ComfyUI 的目錄下。
將檔案複製一份,並更改檔名為 extra_model_paths.yaml
打開後會看到
1 | a111: |
把 base_path: 更改為你AUTOMATIC1111 Stable Diffusion WebUI的位置。
1 | a111: |
最後重新啟動 ComfyUI 就可以了。
想更新的話,在資料夾中執行 git pull,然後在執行 ./venv/bin/python main.py 即可
以下紀錄如何使用 Spring Boot 作為 Console Line App
Spring Boot 的版本是 3.4.2
在 application.properties 中加入 spring.main.web-application-type=NONE , 告訴 Spring Boot 不啟動 Web 環境
1 | spring.main.web-application-type=NONE |
新增一個實作 CommandLineRunner 的類,並標記上 @Component ,
之後你就可以在這個類的 run() 方法中寫你的 Console Line App 邏輯並使用 Spring 的依賴注入了
1 |
|
如果你每次在執行 Console Line App 時,不想要顯示 Spring banner 的訊息的話,可以在 application.properties 中加入
1 | spring.main.banner-mode=off |
GMT(Greenwich Mean Time): GMT 是格林威治標準時間,基於地球自轉,定義為通過倫敦格林威治天文台的子午線(本初子午線)的時間。
UTC(Coordinated Universal Time):UTC 是全球協調時間,基於原子鐘的精確計時,與 GMT 基本一致。
在 Java 等程式語言中,通常使用 UTC 作為標準時間,如 Instant.now() 獲取的是 UTC 時間。
台灣的時區是 GMT+8,這表示台灣的時間比格林威治標準時間(GMT)快 8 小時
而英國的時區為 GMT+0 ,這意味著英國的時間與 GMT 相同。
而這兩個地區的時間差了 8 小時 。
如果在台灣的時間是 2025年2月19日 15:30(GMT+8),那麼同一個時間裡,在英國(GMT+0)看到的時間會是 2025年2月19日 15:30 - 8小時 = 2025年2月19日 07:30
Timestamp(時間戳) 是一個整數,代表著從 UTC 1970 年 1 月 1 日 0 時 0 分 0 秒 起至現在的總秒數。
Java 8 以前, 使用 Date ,而 Date 有以下缺陷,不建議使用
Java 8 推出了 java.time 。
LocalDate
1 | LocalDate date = LocalDate.now(); |
LocalTime
1 | LocalTime time = LocalTime.now(); |
LocalDateTime
LocalDate 和 LocalTime 代表日期時間1 | LocalDateTime dateTime = LocalDateTime.now(); |
DateTimeFormatter
1 | var formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); |
ZonedDateTime
ZoneId
ZoneId.getAvailableZoneIds() 取得支援的 key 值。1 | ZonedDateTime now = ZonedDateTime.now(); |
亦可直接使用偏移量即 UTC/GMT,來定義 ZoneId
1 | var dateTime = LocalDateTime.now(); |
參考
以下將使用 Shader Graph 建立一個簡單的 Shader , 這個 Shader 能夠正常接收 Sprite Renderer 的 Sprite,並允許透過 Sprite Renderer 的 Color 來調整顏色。
Color Shader Graph。並雙擊打開 Shader Graph 編輯器。
+ , 點擊 + 並選擇 Texture2D,將其命名(Name)為 MainTex。



為什麼需要建立一個 Vertex Color ?
為什麼要用相乘 (Multiply)?