江渡です。

> これはRuby/Pythonにバグ、というか、厳しすぎる制限があるせいでした。
> これを緩和して、名無しのタイプを扱えるバージョンを作ったのでお試
> し下さい。
> 
>  http://www.goto.info.waseda.ac.jp/~fukusima/ruby/ruby-python-0.3.2.tar.gz

無事動くことを確認しました。
extconf.rbも修正していただいたようで、どうもありがとうございます。

> > s = Py::LightflowPM::scene.new()
> 
> sceneが返すのは、すでにインスタンスなので、newを呼ぶ必要はないよ
> うです。

そのようです。うまく動かなくていろいろ試してたのでした。

以下のPythonコードが、

#! /usr/bin/env python
from lightflowPM import *
s = scene()
s.lightOn( s.newLight( "point", [ "position", vector3( 5.0, -5.0, 4.0 ), "color", vector3( 300.0, 300.0, 300.0 ) ] ) )

このようなRubyコードでうまく動くようになりました。

#!/usr/bin/env ruby
require 'python'
require 'python/lightflowPM'
include Py::LightflowPM

def list(l)
  l.gsub!(/vector3/, 'lightflowPM.vector3')
  Py.eval(l)
end

s = scene()
s.lightOn( s.newLight( "point", list('[ "position", vector3( 5.0, -5.0, 4.0 ), "color", vector3( 300.0, 300.0, 300.0 ) ]') ) )

RubyのListをPythonオブジェクトへの引数として渡すとき、
PythonのListに自動的に変換するようにするというのは難しいでしょうか。
いろいろ実験してみます。

江渡 浩一郎 Kouichirou / Eto.com