2008年02月24日
誰か教えて >< libsecondlifeで画像を取得
Marchさんの記事(libsecondlifeサンプル - 画像の取得)を参考にして、C#でlibsecondlifeの画像取得に挑戦したんだけど、うまくいかなかった。
画面はこんな感じで

ソースはこんな感じ。
出力メッセージ見てると、ログインには成功してるんだけど、画像を取得するイベントがいつまでたっても発生せず。原因が全く分からない( ̄□  ̄ ||)
SLの調子が悪かったのかなぁ。10回くらい試したんだけどな~。
PS:
C#の色付けに、syntaxhighlighter使うと、LSL Highlighter2.0がうまく効かないみたい。原因が分かるまで、一時的にVer.1.0に戻しますね。
画面はこんな感じで

ソースはこんな感じ。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using libsecondlife;
namespace SLImageGetter
{
public partial class Form1 : Form
{
// SecondLifeオブジェクト
SecondLife client;
public Form1()
{
InitializeComponent();
}
// button1クリックイベント
private void button1_Click(object sender, EventArgs e)
{
// Secondlifeクラスのインスタンスを作成
client = new SecondLife();
// Image取得時のイベントにImageReceiveHandler関数を紐つけ
client.Assets.OnImageReceived
+= new AssetManager.ImageReceivedCallback(
ImageReceiveHandler);
// フォームに入力されたIDでログイン
client.Network.Login(firstname.Text,
lastname.Text,
password.Text,
"",
"");
// 画像を要求
client.Assets.RequestImage(new LLUUID(key.Text),
ImageType.Baked, 100000.0f, 0);
}
// Image取得イベント
private void ImageReceiveHandler(ImageDownload image, AssetTexture asset)
{
// 取得データを画面に表示
this.imageid.Text = image.ID.UUID.ToString();
this.imagesuccess.Text = image.Success.ToString();
// 成功時は画像をファイルに保存
if(image.Success){
File.WriteAllBytes(DateTime.Now.ToString() + ".jp2",
image.AssetData);
}
// 終了処理
MessageBox.Show("取得完了!");
client.Network.Logout();
}
}
}
出力メッセージ見てると、ログインには成功してるんだけど、画像を取得するイベントがいつまでたっても発生せず。原因が全く分からない( ̄□  ̄ ||)
SLの調子が悪かったのかなぁ。10回くらい試したんだけどな~。
PS:
C#の色付けに、syntaxhighlighter使うと、LSL Highlighter2.0がうまく効かないみたい。原因が分かるまで、一時的にVer.1.0に戻しますね。
Posted by sabro at 03:52│Comments(8)
│libsecondlife
この記事へのコメント
そうなんですか。。
共存は想定外でした。
しらべてみますねぇ。
共存は想定外でした。
しらべてみますねぇ。
Posted by Jvn Writer
at 2008年02月24日 17:13

正直、自分ではよく分からなかったところでした。
よろしくおねがいします^^
よろしくおねがいします^^
Posted by sabro at 2008年02月24日 17:43
ふと思ったんですが、shBrushLSL.js の読み込みを止めたらどうでしょう?
検証はしてませんが。
検証はしてませんが。
Posted by Jvn Writer
at 2008年02月25日 11:06

shBrushLSL.jsの読込をやめてみましたが、やっぱりだめでした~ ><
単純に設定を並べて(window.onloadを2つ書く感じで)「HighLighter2.0」と、「HighLighter1.0+shBrushCSharp.js」の2つを読み込んだ場合、
後で読み込んだ方が効いているみたいです。
window.onloadの中身をまとめて1つの関数にすると、中身を1.0→2.0の流れで書いた場合は、CSharpのハイライトが効きました。2.0→1.0の場合は、両方効きませんでした。
もしかしたら、dpという変数名がカブッているのが原因でしょうか?
単純に設定を並べて(window.onloadを2つ書く感じで)「HighLighter2.0」と、「HighLighter1.0+shBrushCSharp.js」の2つを読み込んだ場合、
後で読み込んだ方が効いているみたいです。
window.onloadの中身をまとめて1つの関数にすると、中身を1.0→2.0の流れで書いた場合は、CSharpのハイライトが効きました。2.0→1.0の場合は、両方効きませんでした。
もしかしたら、dpという変数名がカブッているのが原因でしょうか?
Posted by sabro
at 2008年02月25日 20:13

いろいろ試したところ、
HighLighter2.0の変数名をdpからdp2に変えて、
window.onloadの中身をまとめて、
1.0→2.0と書くことで両方効きました^^
参考に設定書いときます。
<!-- ここから -->
<link rel="stylesheet" type="text/css" href="http://○○○/style.css" />
<script type="text/javascript" src="http://○○○/jquery-1.2.3.pack.js"></script>
<script type="text/javascript" src="http://○○○/HighLighter2.0.js"></script>
<link type="text/css" rel="stylesheet" href="http://△△△/SyntaxHighlighter.css" />
<script language="javascript" src="http://△△△/shCore4SLMaMe.js"></script>
<script language="javascript" src="http://△△△/shBrushCSharp.js"></script>
<script language="javascript">
window.onload = function () {
dp.SyntaxHighlighter.ClipboardSwf = 'http://△△△/clipboard.swf';
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
dp2.setUp({
line:true,
clipbrd:'http://○○○/clipboard.swf'
});
}
</script>
<!-- ここまで -->
HighLighter2.0の変数名をdpからdp2に変えて、
window.onloadの中身をまとめて、
1.0→2.0と書くことで両方効きました^^
参考に設定書いときます。
<!-- ここから -->
<link rel="stylesheet" type="text/css" href="http://○○○/style.css" />
<script type="text/javascript" src="http://○○○/jquery-1.2.3.pack.js"></script>
<script type="text/javascript" src="http://○○○/HighLighter2.0.js"></script>
<link type="text/css" rel="stylesheet" href="http://△△△/SyntaxHighlighter.css" />
<script language="javascript" src="http://△△△/shCore4SLMaMe.js"></script>
<script language="javascript" src="http://△△△/shBrushCSharp.js"></script>
<script language="javascript">
window.onload = function () {
dp.SyntaxHighlighter.ClipboardSwf = 'http://△△△/clipboard.swf';
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
dp2.setUp({
line:true,
clipbrd:'http://○○○/clipboard.swf'
});
}
</script>
<!-- ここまで -->
Posted by sabro
at 2008年02月26日 23:49

うあーん
手をこまねいていたら、検証してくださった><
ごめんなさい
ありがとうございます
手をこまねいていたら、検証してくださった><
ごめんなさい
ありがとうございます
Posted by Jvn Writer
at 2008年02月27日 10:27

こんばんは。
私も取得できない画像が沢山ありました。
イベントが起きなかったり、データが取れてもjp2で見られない/変換できない事も
ありました。
公式ビューアでは表示できるので、そっちを見たほうがいいのかもしれませんね。
私も取得できない画像が沢山ありました。
イベントが起きなかったり、データが取れてもjp2で見られない/変換できない事も
ありました。
公式ビューアでは表示できるので、そっちを見たほうがいいのかもしれませんね。
Posted by march
at 2008年04月04日 23:38

marchさん、お久しぶり~。
やっぱり安定して画像を取得するのは難しいんですね。
これは、ビューワのソースも見ねば ><
やっぱり安定して画像を取得するのは難しいんですね。
これは、ビューワのソースも見ねば ><
Posted by sabro at 2008年04月05日 00:23