Ruby 搭配 Sketchup 學習筆記(八)

前情提要

Sketchup 是一款在建築、都市計畫和遊戲開發都頗有名氣的 3D 建模軟體,而 Ruby 則是一個程式語言,它可以搭配 Sketchup 達成程式化 建模的任務,近期經由系主任引薦,要開發 Sketchup 的 Extension,雖然我寫過 Ruby,但 Sketchup 則是完全沒碰過,於是利用文章來記錄所學的一點一滴。

本篇內容

  • 視景畫面
  • 照相機

視景畫面

視景畫面代表使用者目前畫面上呈現的資訊,以下示範如何取用視景資訊:

view = Sketchup.active_model.active_view

height = view.vpheight.to_s
width = view.vpwidth.to_s

puts "視景尺寸:#{width}:#{height}"

puts "上左:#{view.corner(0)[0]},#{view.corner(0)[1]}。"
puts "上右:#{view.corner(1)[0]},#{view.corner(1)[1]}。"
puts "下左:#{view.corner(2)[0]},#{view.corner(2)[1]}。"
puts "下右:#{view.corner(3)[0]},#{view.corner(3)[1]}。"

center = view.center

puts "視景中心點:#{center[0]},#{center[1]}"

origin = view.screen_coords [0,0,0]
puts "繪圖原點的位置:\n#{origin[0].to_f}\n#{origin[1].to_f}"
輸出結果:
視景尺寸:2880:1504
上左:0,0。
上右:2880,0。
下左:0,1504。
下右:2880,1504。
視景中心點:1440,752
繪圖原點的位置:
958.4791057184447
1012.086470675737

還有一個有趣的用法是讓畫面聚焦在特定物件

view = Sketchup.active_model.active_view
view.zoom Sketchup.active_model.entities[0]
輸出結果: ![image](https://github.com/jhang-jhe-wei/jhang-jhe-wei.github.com/assets/59594475/644bc837-d2d6-4f56-8b97-5b6d8e645f2b)

照相機

以下示範變更視景位置:

eye = [100,100,200]
target = [0,0,0]
up = [0,0,1]
my_cam = Sketchup::Camera.new eye, target, up

view = Sketchup.active_model.active_view
view.camera = my_cam
輸出結果:

image 其中的參數分別是:

  • eye:視角位置
  • target:看哪裡
  • up:移動時向量,會決定畫面的角度

參考資料