2017年4月23日日曜日

Godrayが黒くなる問題の解決法

MMDのビームマンP制作のGodrayエフェクトについて
光らせている部分が黒くなってしまう問題は、
編集 → 地面影色透明化 をONにすれば直ります。

その他、アクセサリ編集、モデル描画順で、描画順を変えれば直るというケースも有るようです。

2013年1月13日日曜日

Sleeping Dogs XBOXコントローラが動かない場合の対処法

ゲーム: Sleeping Dogs(Steam、英語音声日本語字幕版)
コントローラ: XBOX360有線コントローラ
コントローラドライバ: 公式

で、メニュー操作等は正常に動くのに、
ゲーム中START,BACKキー以外の操作ができないという症状が出ました。


このゲームはキーボード+マウス操作とコントローラ操作を自動で切り替える機能がついていますが、結果的には、マウス、キーボードを少しでも触ると、マウス操作からコントローラ操作へ戻らないのが原因のようでした。

なので起動後はコントローラのみで操作し、マウス、キーボードは弄らない。
カーソルが真ん中に残って邪魔な場合は、フルスクリーンからウィンドウ表示に変えて、
起動前にマウスカーソルを邪魔な位置に移動させておくことで、一応の対処をしています。

ちなみにこの切替機能は
【オプション→ゲームオプション→ゲームインプット】
でどちらかに固定することもできますが、
これをコントローラに固定しても正常動作しませんでした。
デフォルトのオートスワップのままじゃないとダメのようです。

2012年12月20日木曜日

ANTLR C# 『名前 'HIDDEN' は現在のコンテキスト内に存在しません。』

ANTLRでC#用パーサ、レキサーを以下の環境で作っています。


ANTLRWorks:
 1.5rc1 (1.4.3からアップデート案内された)
  http://www.antlr.org/download.html
 
Runtime:
 Antlr3.Runtime.dll 3.4.1.9004
  http://www.antlr.org/wiki/display/ANTLR3/Antlr3CSharpReleases 
(以下3つはもしかするとAntlr3.Tuntime.dllに一本化されて不要かも)
 antlr.runtime.dll  3.1.3     
 Antlr3.Utility.dll  3.1.3
 StringTemplate.dll 3.1.3
  http://www.antlr.org/download/CSharp2/

統合開発環境:
 VisualStudio2012

ターゲット言語:
 language=CSharp3;



書きだした***Lexer.csと***Parser.cs、ランタイムDLLをVisualStudioプロジェクトで読み込み、ビルドすると、

 『名前 'HIDDEN' は現在のコンテキスト内に存在しません。』

とエラーが出ます。エラーが出ている部分は以下のようなコードで
 _channel=HIDDEN;

これはANTLRWorksで{$channel=HIDDEN;}と書いていると書き出されるコードです。
デフォルトのWSルール中にありますね。

 WS : ( ' '
  | '\t'
  | '\r'
  | '\n'
  ) {$channel=HIDDEN;}
   ;


{$channel=HIDDEN;}と書くと、このレキサールールに当てはまったトークンは無視されるようになるそうです。
WhiteSpace? タブや改行やスペースなので、無視する設定になってるのは当然ですね。



しかしHIDDENだとエラーになってしまうし、HIDDENの定義はどこに行ってしまったんだと思ったら、Antlr3.Runtime.dll 3.4.1.9004では、名前が”Hidden”に変更されているようです。
 public const int Hidden = 99;

エラー部分を以下にように書きなおしてあげればOKのようです。
_channel=Hidden;



2012年10月12日金曜日

The error code is 2329

なんらかのソフトをアンインストール中、以下のメッセージが出てアンインストールに失敗する場合があります。
これはiTunesやVisualStudio2008、私の場合はDead Spaceで見られました。

The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2329.



error code 2329は公式には
 Error deleting file: [3]. GetLastError: [2].
 http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
とのこと。
Windows Installerの問題だそうで、これを最新版に変えれば良いそうです。


Windows Installer 4.5 Redistributable
 http://www.microsoft.com/en-us/download/details.aspx?id=8483


しかしながら、Windows7ではこれがインストール出来ない。(というか既に最新版)
になっているので、私の場合はこの方法は使えませんでした。

最終的には、ESET NOD32というセキュリティソフトが干渉していたみたいで、
これの保護サービスを一時的にOFFにすることで簡単にアンインストールできました。


基本的なことだけどここが問題だったとは…。
NOD32は良いソフトだけど、たまにこういう事がありますねぇ。

2012年5月30日水曜日

Knockout.jsを使って配列をテーブルに表示するサンプル

Hello world程度のサンプルです。

ViewModelを作ってko.observableArrayオブジェクトに配列を入れ、
ko.applyBindings()でViewModelを指定。

テーブルの方には<tbody>要素にdata-bind="foreach: ***"を、
<td>要素にdata-bind="text: ***"を埋め込めばOKそうです。


【ソース:】
<head>
    <title>KnockoutTest1</title>
    <script src="Scripts/jquery-1.7.2.min.js"></script>
    <script src="Scripts/knockout-2.1.0.js"></script>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>プロパティ名</th>
                <th>型</th>
                <th>値</th>
                <th>日時</th>
            </tr>
        </thead>
        <tbody data-bind="foreach: items">
            <tr>
                <td data-bind="text: pName"></td>
                <td data-bind="text: pType"></td>
                <td data-bind="text: val"></td>
                <td data-bind="text: date"></td>
            </tr>
        </tbody>
    </table>


    <script type="text/javascript">
        var model = {
            items: ko.observableArray([
                { pName: "pro1", pType: "string", val: 45, date: "2012/05/30 00:00:00" },
                { pName: "pro2", pType: "string", val: 34, date: "2012/05/30 00:00:00" },
                { pName: "pro3", pType: "string", val: 56, date: "2012/05/30 00:00:00" },
                { pName: "pro4", pType: "string", val: 2, date: "2012/05/30 00:00:00" },
                { pName: "pro5", pType: "string", val: 54, date: "2012/05/30 00:00:00" },
                { pName: "pro6", pType: "string", val: 74, date: "2012/05/30 00:00:00" },
                { pName: "pro7", pType: "string", val: 12, date: "2012/05/30 00:00:00" }
            ])
        };
        ko.applyBindings(model);
     </script>
</body>
</html>



【出力】:


プロパティ名日時
pro1string452012/05/30 00:00:00
pro2string342012/05/30 00:00:00
pro3string562012/05/30 00:00:00
pro4string22012/05/30 00:00:00
pro5string542012/05/30 00:00:00
pro6string742012/05/30 00:00:00
pro7string122012/05/30 00:00:00


2012年5月17日木曜日

ASP.NET → JavascriptへのDateTimeオブジェクトの受け渡し

備忘録に

APS.NETアプリ(ここではASP.NET MVC3)から、javascriptへJSON形式でDateTimeオブジェクトを送った場合

●C#側
 public ActionResult GetDate()
 {
      return Json(DateTime.Now, JsonRequestBehavior.AllowGet);
 }


.js側(ここではjQueryのajaxを例に)
 <script type="text/javascript">
     $(function(){
         $.ajax({
             url: "http://サーバURL/GetDate",
             type: "GET",
             success: function(data){
                 alert(data)
             }
     });
 </script>

出力
 \Date(1337261816234)\

このような表示になってしまうと思います。
そこで、





■C#(サーバ)側で整形する場合
    return Json(DateTime.Now.ToLongDateString()
            + "/ " + DateTime.Now.ToLongTimeString(),
            JsonRequestBehavior.AllowGet);

DateTime.ToLongDateString()等でStringにしてから渡す。

>参考: 日時(DateTimeオブジェクト)を文字列に変換する
>http://dobon.net/vb/dotnet/string/datetimeformat.html


■js側で整形する場合

だいたいサーバ側で整形すべきですが、ちょっと複雑ですが.js側でも以下で表示できます。

    alert(new Date(parseInt(data.Now.substr(6)))
           .toLocaleString());

jsのDateオブジェクトを作って初期化し、toLocaleString()等で整形して表示する。

>参考: Dateオブジェクトのメソッド
>http://www.tohoho-web.com/js/date.htm#newDate




2012年2月3日金曜日

C# オブジェクトの配列

基本的なことなのにいつも忘れてしまう。
C#のオブジェクトの配列について。

intやstringとかの基本的なデータ型は
int[] array = new int[5];

同時に初期化もしたいなら以下でOK。
int[] array1 = new int[] { 1, 3, 5, 7, 9 };
int[] array2 = {1, 3, 5, 7, 9};
string[] days = {"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat"};


で、それ以外のオブジェクト型の配列は二段階を踏む必要があるとか。
//配列と配列の実体を作り(ここではmyClass10個分の配列の受け皿を作る)
myClass[] obj = new myClass[10];
//配列の中に入れるmyClassの実体を個別に作る
for(int i=0; i<10; i++)
{
   obj[i] = new myClass();
}

参考: http://msdn.microsoft.com/ja-jp/library/9ct4ey7x(v=vs.90).aspx


本当に二段階必要だったかなぁ、一発で初期化もできる方法あったような気もしたけれど
別にこれでできるからいっか。。