今回は Clutter で図形を書き、ついでに動かしてみよう。
年末で超忙しいので更新が遅くてごめん。
Clutter: a beginner’s tutorial | TuxRadar Linux
こんな感じらしい。
少しずつ試してみよう。
別のページで見かけたけどウインドウを閉じるのは hide シグナルのほうがいいみたい。
PyGObject で書く時はこんな感じかな。
#!/usr/bin/env python3
import gi, sys
gi.require_version('Clutter', '1.0')
from gi.repository import Clutter
class ClText(Clutter.Stage):
def __init__(self):
Clutter.Stage.__init__(self)
# ClutterRectangle Green
rectcolor = Clutter.Color.new(0, 255, 0, 255)
rect = Clutter.Rectangle.new_with_color(rectcolor)
rect.set_size(100, 50)
rect.set_position(50, 20)
self.add_actor(rect)
# ClutterRectangle Blue
rectcolor = Clutter.Color.new(0, 0, 255, 127)
self.rect = Clutter.Rectangle.new_with_color(rectcolor)
self.rect.set_size(50, 100)
self.rect.set_position(40, 30)
self.add_actor(self.rect)
# Timeline
self.rotation = 0
timeline = Clutter.Timeline.new(500)
timeline.connect("new-frame", self.on_new_frame)
self.sorce = Clutter.Score.new();
self.sorce.set_loop(True)
self.sorce.append(None, timeline)
self.sorce.start()
# self
windowcolor = Clutter.Color.new(255, 0, 0, 255)
self.set_color(windowcolor)
self.set_title("Test")
self.set_user_resizable(True)
self.set_size(320, 240)
self.show_all()
#def do_delete_event(self, event):
# Clutter.main_quit()
def do_hide(self):
Clutter.main_quit()
def on_new_frame(self, num, data):
self.rotation += 0.3
self.rect.set_rotation(Clutter.RotateAxis.X_AXIS, self.rotation, 0, 0, 0)
Clutter.init(sys.argv)
ClText()
Clutter.main()
CLUTTER_Z_AXIS が Clutter.RotateAxis 内の所で迷ったけど上手くいった。
ここで指定した軸を中心に 3D でグルグル回すことができるんだね。
add_actor の順番どおりで重なっていくようだ。
これを利用すれば簡易 3D アニメーションなら簡単に作れそう。
モデリングは、今は解らない。
そうそう、ClutterScore を self にくっつけるのを忘れないようにね。
こうしないとガベージコレクションで破棄されちゃうので。










