gologiusの巣

プログラミングなどの技術メモです。誰かの役に立てるとうれしいです。

Unity5 Webカメラを使う

ネットに転がってるのでやったら,メモリが足りなかったり?描画順がうまくいかなかったので,自分がやった方法のメモ

これで,画面上にカメラ映像を表示させることができます

using UnityEngine;
using System.Collections;
using System.IO;

public class WebCam : MonoBehaviour {

    public WebCamTexture camTex;
    public Texture2D texture;
    
    public int width = 1280;
    public int height = 800;
    
    GameObject cameraPanel;

    // Use this for initialization
    void Start() {
        camTex = new WebCamTexture(width, height);
    
        cameraPanel = GameObject.Find("CameraPanel");
        
        camTex.Play();
    }
    
    // Update is called once per frame
    void Update() {

        cameraPanel.GetComponent<CanvasRenderer>().SetTexture(camTex);

    }
}

[追記]
対象のGameObjectはUIのRawImageを画面いっぱいに広げたもの.

UIのPlaneなんかでやると,拡大されて?おかしくなる.

Unity 文字 点滅

Unity5でUIの文字点滅させようと思いました.

ググればすぐ出ます.
が,Unity5になったからか知りませんが,そのままだと出来ませんでしたのでメモ

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

	private GameObject textObject; //点滅させたい文字

	private float nextTime;
	public float interval = 0.8f; //点滅周期


	// Use this for initialization
    void Start()
    {
		textObject= GameObject.Find("text"); 

		nextTime = Time.time;
	}

    // Update is called once per frame
    void Update()
    {
                //一定時間ごとに点滅
		if ( Time.time > nextTime ) {
			float alpha = textObject.GetComponent<CanvasRenderer>().GetAlpha();
			if (alpha == 1.0f)
				textObject.GetComponent<CanvasRenderer>().SetAlpha(0.0f);
			else
				textObject.GetComponent<CanvasRenderer>().SetAlpha(1.0f);

			nextTime += interval;
		}

    }
}

CanvasRendererのAlpha値を弄るのがポイント

参考
[Unity] オブジェクトを点滅させるスクリプト | ftvlog


[追記]
2015/12/23
ソースを一部修正

text= GameObject.Find("text"); 
↓
textObject= GameObject.Find("text"); 

ASUS X302L 分解

ノートパソコン ASUS X302Lの分解をしてみたので報告してみる

 

といってもねじ外すだけですが・・・

ただ,一つ注意点があり,↓の部分のねじを外し,さらに中にあるねじを一つ外さないと分解できないので注意

ちなみにここを外すと(たぶん)メモリ

f:id:kamiwo_koete:20151213133425j:plain

 

ねじを全部外すと,キーボードが持ち上がります.

持ち上げる際にはプラスチックカードなどを間に挟みながらはずすとよいでしょう

f:id:kamiwo_koete:20151213133625j:plain

HDDの場所はもうわかりますね?

ここもねじが4つあるので全部外せば交換などができます

 

おしまい

 

Novikoffの定理とFreund&amp;Schapireの定理

SVMなどのクラス分類において,Novikoffの定理とFreund&Schapireの定理というものがあります.

 

適当に説明すると,ループの失敗回数が有限であることを証明した定理です.

この証明を理解したかった.

 

しかし,微妙に端折ってて,(個人的に)分かりにくいものが多かったです.

で,結局本人たちの論文の題名をキーワードに探しました.

本人たちの論文も見たのですが,以下の資料が一番わかりやすかったです

 

Novikoffの定理とFreund&Schapireの定理の証明はここの資料みるのが分かりやすいです

ユーマス・ボストン 大学
マサチューセッツ州 ボストンの大学(Wikipedia情報)

http://www.cs.umb.edu/~dsim/slidesPER.pdf

 

日本語や,単純なキーワードだけ調べるのではなく,他のアプローチから調べるの大事ですね.

 

ルンバをC#で制御する

ルンバ500シリーズを制御するソフトをC#で作成しました

こんな感じ
f:id:kamiwo_koete:20151002104233p:plain

基本的にこれらのサイトを参考に,
RoombaをVisual C#で制御する(その2): 花岡ちゃんに花束を
http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf
機能を増やしてみました.

  • 接続したら,最初にStartを押して,そのあとに安全装置?が働くSafeか,働かないFullを選ぶ.
  • Cleanは掃除し始めます.Driveは下のトラックバーのパラメータ通りに動きます
  • Blush,Vacuumはブラシ等のON,OFF
  • Front,Back等のボタンはトラックバーで指定したスピードで前進,後退
  • Turn Left,Rightはその場で回転
  • Key Controlはクリックでそこにフォーカスすると,方向キーで操作できるようになります(スペースキーで止まる)

ソース

github.com

 

注意点

  • 下のCommandは未実装です
  • C#GUIアプリケーション製作は初めてなので,その筋の人から見たらクソコードなのかもしれない
  • ぶっちゃけGitもよくわかってない

xrdp で 「connecting to sesman ip 127.0.0.1 port 3350」 から進まない

xrdpを使ってRaspberry Piにリモート接続しようとしたときのこと.

 

接続まではできるけど,接続後の最初のダイアログの一行目

「connecting to sesman ip 127.0.0.1 port 3350」

でとまる.

これログが出力されているので,

「/var/log/xrdp-sesman」

を見る.

 

私の場合中身が

「bind error on port '3350': 99 (Cannot assign requested address)」

こんな感じだった.

 

ここ見たら解決法がかいてた

https://www.raspberrypi.org/forums/viewtopic.php?f=41&t=18678

原因は,「/etc/network/interfaces」のループバックアドレス関係がコメントアウトされていたことだった.なにしてんだ俺・・・

#auto lo

#iface lo inet loopback

 

#をはずす.そもそも記述されていないなら書き足す.

デフォルトでこんなことにはなっていないので,大体自分のせい

Siv3D カメラ 回転 マウス

見ている人がいるか知らんがメモ

Siv3Dというすばらしいライブラリに出会ったので少し触っています.

Play Siv3D!

去年シリアル通信や3Dにも対応したみたいで,今後の発展が楽しみです.

で,既存のカメラがキーボード入力のみで,視点回転ができず?だったのでマウスでできるようにしました.

【注意】操作バグありますがビューワー程度には使えるかと・・・

使い方は,Graphics3D::FreeCamera()を呼ばずにoperateCameraByMouse(double)を呼ぶだけ

右ドラッグで回転,ホイールでズームします

今後の課題
原点を中心にしか回転できないので改善します
なんかズームおかしい
カメラ位置がx<0のとき上下逆になる

# include <Siv3D.hpp>


void operateCameraByMouse(const double SPEED)
{
	//前フレームのカメラ設定をコピー
	struct Camera camera = Graphics3D::GetCamera();

	//カメラの回転移動 マウスの右ボタンを使用
	if (Input::MouseR.pressed){

		const Point delta = Mouse::Delta(); //マウスカーソルの移動量

		//原点(0,0)を中心にカメラが回転移動
		Quaternion rotate = Quaternion::Identity();
		rotate.rotateRollPitchYaw(0, Radians(SPEED*delta.y), Radians(SPEED*delta.x));
		camera.pos = rotate * camera.pos;
	}

	//カメラのズーム マウスホイールを使用
	const int wheelY = Mouse::Wheel(); // 縦方向のホイール回転量
	camera.pos = Vec3(
		camera.pos.x + (camera.pos.x*SPEED*wheelY),
		camera.pos.y + (camera.pos.y*SPEED*wheelY),
		camera.pos.z + (camera.pos.z*SPEED*wheelY));

	Graphics3D::SetCamera(camera);
}


void Main()
{
	Cylinder x_axis_model(Vec3(0, 0, 0), 1.0, 1000.0, Quaternion(Vec3(0, 0, 1), Radians(90)));
	Cylinder y_axis_model(Vec3(0, 0, 0), 1.0, 1000.0, Quaternion(Vec3(0, 0, 0), Radians(0)));
	Cylinder z_axis_model(Vec3(0, 0, 0), 1.0, 1000.0, Quaternion(Vec3(1, 0, 0), Radians(90)));
	
	//main loop
	while (System::Update())
	{
		//Graphics3D::FreeCamera();
		operateCameraByMouse(0.1);

		x_axis_model.draw(Palette::Red);
		y_axis_model.draw(Palette::Green);
		z_axis_model.draw(Palette::Blue);

		Plane(1000).draw();
		Sphere(Vec3(0, 0, 0), 2).draw(Palette::Orange);
		Sphere(Vec3(10, 0, 0), 2).draw(Palette::Red);
		Sphere(Vec3(0, 10, 0), 2).draw(Palette::Green);
		Sphere(Vec3(0, 0, 10), 2).draw(Palette::Blue);
	}
}