ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

グーグルだけでなく、マイクロソフト、USENとかも総務省に意見してて、内容みれるよ!

2006-05-15 22:44:27 | Weblog

 ここのニュース
米グーグルが初の意見書 総務省の通信政策に
http://headlines.yahoo.co.jp/hl?a=20060515-00000222-kyodo-bus_all


 で、その意見している内容が、公表されているのがこのページ

IP化の進展に対応した競争ルールの在り方に関する追加意見の公表
http://www.soumu.go.jp/s-news/2006/060515_2.html


 ここをみると、アメリカのグーグルだけでなく、USENや、ソフトバンクやマイクロソフトも意見してるのがわかる。
 意見内容についても、PDFで見れるようになってるよ。

 で、おもしろいのはKDDI!
 あのー、露骨にNTT批判のようにみえちゃうのはウィリアムのいたずらだけ(^^;)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ウゴウゴルーガとかのCGをやってた人が作ったゲームってことっすね、エレクトロプランクトン

2006-05-15 19:50:26 | Weblog

 最近、このブログにいろいろ出てきている放送大学大学院の「総合情報学」ですが、その7回目に、岩井俊雄氏というかたが、でてくるのです。で、作品を紹介するのですが、すごーい!!おもしろすぎ!!

 とくに、サウンドレンズ(光を当てると音が鳴る。渋谷や原宿の街中にそれをあてても、ネオンサインなどで音が鳴る)と、フローティングミュージック。

 フローティングミュージックは、画面に触ると、なんか円みたいなのがでてきて、きれいな音がなるやつ。それでいろんな音楽がつくれる(キレイな音になるのだ)YAMAHAのTENORI-ONもにているものかもしんないけど、もっときれいだと思うのだ。たぶん!




 で、岩井俊雄氏というのは、どんなひと?と思って調べたら、

 ここにきた
はてな-岩井俊雄とは-
http://d.hatena.ne.jp/keyword/%B4%E4%B0%E6%BD%D3%CD%BA

(以下斜体は、上記はてなより引用)

フジテレビ「アインシュタイン」、「ウゴウゴルーガ」などのTV番組のキャラクターやCGシステムのデザイン、ゲームソフトの制作、イラストレーターばばかよとのコラボレーション「ハッピーテクノロジーラボ」など、など活動範囲は幅広い


おお、ウゴウゴルーガやってたんですか。
アインシュタインもみてましたよ!ウィリアムのいたずらも(^^)





で、フローティングミュージック、ゲームかなんかにすればいいのに。。。

ニンテンドーDSなら、できそーじゃんとおもったら、

このゲームが、にてるよーな、にてないよーな、
(ちかうかもしんない、ゲーム自体みてないからわかんないけど)
エレクトロプランクトン
http://electroplankton.com/


まあ、ちがうとしても、なんとなくおもしろいかも??





  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IHTMLVIEWERの具体的な使い方(5)カーソル移動方法その3(イベント処理)

2006-05-15 15:59:07 | ケータイ

 BREWのIHtmlViewerでカーソル移動を自由に行う方法のつづき。
 今日の説明内容は、具体的なイベント処理部分(testhtml1_HandleEvent)です。




■イベント処理(testhtml1_HandleEvent)

 イベント処理内では、 IHTMLVIEWER_HandleEventの前に、独自処理
(ここでは、testhtml1_HtmlEvent)を行います。

こんなかんじ
static boolean testhtml1_HandleEvent(testhtml1* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{  
	int	rc;

	if ( pMe->pHtml	!=	NULL )
	{

		//==================================================//
		// 本当は、HtmlEventをやっていけない条件があるが
		// 今回は省略
		//==================================================//
		if ( testhtml1_HtmlEvent(pMe,eCode,wParam,dwParam)	==	TRUE)
		{
			return	TRUE;
		}
		if ( IHTMLVIEWER_HandleEvent(pMe->pHtml,eCode,wParam,dwParam)	==	TRUE)
		{
			return	(TRUE);
		}
	}
    :(以下省略)

(上記の < > ¥ は実際は半角です)

 独自処理では、ここでは、以下のことをします。
・↓↑キーで、項目移動
・選択キーがおされ、かつsubmitボタンだったらフェーズを変える
  →フェーズの意味は、ここ
   「カーソル制御のための「フェーズ」という概念」を参照

これらに必要な処理を説明します




■項目移動の方法
以下の手順で行います
(1)現在の画面の状態を取得(IHTMLVIEWER_GetViewState)
(2)カーソルのある項目のIDを取得(testhtml1_DecodeHtmlState)
(3)IDを項目番号に変換
(4)↓↑キーだったら、
  (4-1)(3)の項目番号を元に次の項目番号取得(testhtml1_NextCur)
  (4-2)次の項目番号をIDに変換(testhtml1_GetCurPos)
  (4-3)画面の状態を設定し(testhtml1_EncodeHtmlStateとIHTMLVIEWER_SetViewState)
  (4-4)画面をRedrawする(testhtml1_DispAppData)




■フェーズを変えて、カーソル移動
以下の手順で行います
(1)現在の画面の状態を取得(IHTMLVIEWER_GetViewState)
(2)カーソルのある項目のIDを取得(testhtml1_DecodeHtmlState)
(3)IDを項目番号に変換
(4)ボタンが、選択キーで押されたら、
  (4-1)フェーズを変え、そのフェーズで最初に行く項目を設定する
  (4-2)最初に行く項目の項目番号をIDに変換(testhtml1_GetCurPos)
  (4-3)画面の状態を設定し(testhtml1_EncodeHtmlStateとIHTMLVIEWER_SetViewState)
  (4-4)画面をRedrawする(testhtml1_DispAppData)




■独自イベント処理(testhtml1_HtmlEvent)
 今回は、
・↓↑キーで、項目移動
・選択キーがおされ、かつsubmitボタンだったらフェーズを変える
をここで行います。

 実際には、後者のsubmitボタンの場合は、 testhtml1_CallBackのHVN_SUBMITでもよいのですし、そちらのほうが一般的なのですが、今回は説明とコーディングのしやすさから、このようにします。

上記の手順のうち、(1)から(3)は、共通なので、まとめて行い、
 // 処理する
switch(eCode)
からあとで、EVT_KEYのとき、

AVK_UP、AVK_DOWNの場合、「↓↑キーで、項目移動」を、
AVK_SELECTで「フェーズを変える」の

(4)の処理を行っています。

ソースは、こんなかんじ
boolean testhtml1_HtmlEvent(testhtml1* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	char	formdata[500];		//	Formのデータが入る大きさをとる
	char	setdata[500];		//	Formのデータが入る大きさをとる
	char	*datapos;
	int		len,i;
	int		scr,cur;

	//	チェック
	if ( pMe->pHtml	==	NULL )
		return	TRUE;

	//	フォームのデータ取得
	len	=	IHTMLVIEWER_GetViewState(pMe->pHtml,formdata,499);
	formdata[len]	=	0;

	//	IDを取得(ついでに、データとスクロールも)
	datapos	=	testhtml1_DecodeHtmlState(formdata,&scr,&cur);

	//	IDを、項目番号に変換(次の項目番号までの間にあれば項目とみなす)
	pMe->curno	=	0;
	for(i = 0 ; i < pMe->itemsu ; i ++ )
	{
		if( pMe->pID[i]	==	cur )
		{
			pMe->curno	=	i;
			break;
		}
	}

	//	処理する
	switch(eCode)
	{
    case EVT_KEY:	//	カーソル移動に関するキーイベント処理
		switch(wParam)
		{
		case	AVK_SELECT:
			//	ほんとうは、ここでやんなくて
			//	コールバックでやったほうがいいかも知んないけど、
			//	まあ、ついでにここでしておく
			switch(pMe->curno)
			{

			case	0:	//	挑戦する
				pMe->phaseNo	=	1;
				pMe->curno		=	1;
				cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
				testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
				IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
				testhtml1_DispAppData(pMe);
				return	TRUE;

			case	2:	//	打ち終わった
				pMe->phaseNo	=	2;
				pMe->curno		=	5;

				//	ここにチェック処理が入る
				//	今回は省略

				cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
				testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
				IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
				testhtml1_DispAppData(pMe);
				return	TRUE;

			case	5:	//	終了
				ISHELL_CloseApplet(pMe->pIShell,FALSE);
				return	TRUE;
			}
			break;
		case	AVK_UP:
			pMe->curno = testhtml1_NextCurItem(pMe->curno,-1,pMe->phaseNo);
			cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
			testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
			IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
			testhtml1_DispAppData(pMe);
			return	TRUE;
		case	AVK_DOWN:
			pMe->curno = testhtml1_NextCurItem(pMe->curno,1,pMe->phaseNo);
			cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
			testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
			IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
			testhtml1_DispAppData(pMe);
			return	TRUE;
		}
	}

	return	FALSE;
}


(上記の < > ¥ は実際は半角です)

 なお、カーソルのIDをもとめるtesthtml1_NextCurItemについてですが、
この関数は、画面ごとにかわりますが、
入力:curno・・現在のカーソルがある項目番号
   flg・・・上なら1、下ならー1
   phaseNo・現在のフェーズ番号
出力:つぎにカーソルが移動する項目番号
を返す関数であれば、ここに書いた形でなくても、どんなものでもOKです。




■次の予告

 上記のようにして、実際に動かすと、かな漢にはいったとき、↓キーを押してしまうと、おかしな動作をします。これは、かな漢に入っても、イベントを返してくるため、かな漢内で↓キーが押されると、次のフェーズにいってしまうからです。

 つまり、かな漢に入った場合は、キー処理を無視しないといけません、
 その方法について、書きます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

着うたフルが300円、ipodが200円、価格破壊という意味もある?ソフトバンク提携

2006-05-15 14:39:44 | Weblog

 トラックバックをいただいて(ありがとうございます)知ったのですが、

 1曲ダウンロードするのに、

  着うたフルが300円
  ipodが200円

 なのですか。。

 つまり、ソフトバンクがipodケータイをつくり、ipodからダウンロードできるようにすると、200円ってことですね・・

 おお、ソフトバンク、もうここで、ケータイ音楽配信の価格破壊を仕掛けているのですね(@_@!)
 着うたフルも、ipodもダウンロードしたことないので、気づかなかった。。。

 これは、アプリの世界とか、通信料金の世界でも、期待できそうですな、価格破壊。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

シナリオから自動的に動作をさせる場合、同じシナリオで性能の違うマシンで動かす方法試案?

2006-05-15 00:41:54 | Weblog

 以前のブログで眠いからというので書かなかった話題。

 ケータイとパソコンのように、明らかに処理スピードが違うマシンで、おんなじシナリオをつかって、似たような感じで動かしたいという場合の方法について。

 そのとき考えたのは、こんなかんじ。
(たぶん、対話型進化計算法(対話型EC)っていうのに、にている気がするんだけど、対話型ECをまだ自分は理解していない)




 かりに、

・あるシナリオ、たとえば、
  キャラAは、3回転半したあと、左足を上げてすべるとかあったとする

・ここで、基本要素に関しては、制御点の動きはデータ化されていて
 たとえば、データグローブなどを使って、回転するという動きは、すべて、
 取得してあるとする

・その制御点の動きがわかれば、回転の動作は自動的に表示できる
 したがって、シナリオの動きは、基本動作に展開して、それぞれの基本動作を、制御点
 をもとに、表示できるという場合

を考える。




 このとき、基本動作のうごきは、ある一定時間の行列として表現できる。

こんなかんじ
(時間) t1 t2 t3 t4 t5   
右腕   +5  0  0  0  -5
左腕   0   2  5  3  0
頭    0 0   0  0  0
右足      1  1   0  0  0
左足      0  0   0  0  1


そーしたとき、この行列式をかけていけば、次の動きが表示できる。

ところが、これを、性能の違うマシンで掛けると、動作が一方では速くなりすぎたり、一方が遅くなりすぎたりする。そのため、全部の制御点を計算するのではなく、

1.制御点に優先順位をつけ、優先順位の高いものから順に計算する
2.時間について、いくつか飛ばす
3.優先順位の高いキャラから、計算していく

としたとき、問題は、2の時間の飛ばし方。




 このとき、表示部分と、計算する部分のプロセスをわける、つまり、スレッドを起動して、1つのスレッドでは表示部分、もうひとつのスレッドでは、計算専門にやって、計算終了したら、表示部分におくり、次の計算をする。このとき、次の計算は、t1が終わったらt2というようにひとつづつやる場合もあるけど、処理スピードが遅いものに関しては、t1のつぎt5とか、いくつか読み飛ばして計算する。

 そして、読み飛ばし量は、はじめデフォルトがあるんだけど、2番目以降、表示部分におくるとき、

・もし、前の計算結果を表示していなかったら、
  (計算のほうが速いということだから)、
 読み飛ばし量を減らす。(もっと細かく動かす)
 
・もし、前の計算結果を表示していたら、
  (計算のほうが遅いということだから)、
 読み飛ばし量を増やす。(もっとおおざっぱに動かす)

ただし、
 読み飛ばし量を減らせない場合、もっと優先順位の低いものを計算する
 読み飛ばし量を増やせない場合、優先順位の低いものは計算しないようにする

ってやると、だいたい、いい感じに表示できるような気がするとおもった。




 最近、こんなことを考えながら、これと、こころのつながりをもった?ものとして、河口洋一郎氏などが作品をだしている(CGの)自己成長っていう手法にちょっち興味をもっているウィリアムのいたずらなのであった



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする