OpenGLで不透明ポリゴンと半透明ポリゴンとを重ねあわせた時の描画がうまくいかない
青い不透明ポリの箱の手前に,2つ赤い半透明ポリの箱を並べた図
OpenGLで半透明ポリと不透明ポリ重ねあわせた時に良い感じに表示する方法がわからんな
— たにったさん (@ttata_trit) November 28, 2014
DepthTestとAlphaBlending有効にしてるけど透明ポリの向こう側に不透明ポリが描画されん...
— たにったさん (@ttata_trit) November 28, 2014
とても面倒な予感がする
— たにったさん (@ttata_trit) November 28, 2014
2014-11-29 5:33追記
これだ..大変そう.
1.不透明なオブジェクトを描画
2.半透明オブジェクトをZソート(視点からの奥行き順)
3.半透明オブジェクトの、奥にあるものから描画
これでうまく描画できるらしい.oFからOpenGL触ってるのでドキュメント漁ってみよう.
最近のアレ
ここ1ヶ月くらいは,ものをつくる動機がよくわからなくなってしまい,進捗が完全にダメになっていた.そこで,unitroやfragments等の進行中のプロジェクトをしばらく寝かせ,適当に息抜きをしていた.
息抜き
読み飛ばして頂いて結構です.
RapberryPiメディアサーバ
まず,部屋でPCを触らずに音楽を聞きたかったので,ずっと放置していたRaspberryPiを使い,メディアサーバーを構築しようとした.いつもメインで使ってる爆音空冷PCだと,ファンのノイズがきついので,ファンレスのRPiは丁度良かった.構成は,スマホからRPiに立ち上げたVLCを操作,手元に余っていたオーディオインターフェースのUA1Gを接続し,S/PDIFでスピーカに信号を送る.こんな感じで考えていたが,UA1GのドライバがうまくRPiに認識されず,同じようなメディアサーバを構築した記事を参考に,OSをOpenWrtに入れ替えるなど,いろいろ手を施したがダメで,直接ミニプラグで再生するのも音質的に(パワードスピーカ側のアンプがアナログだと貧弱)嫌だったので結局諦めた.
Ubuntuノートメディアサーバ
ノートPCをメディアサーバにすることにした.CPUはi7,Mem8GB,intelのSSDと,そこそこの性能なのでリソースの無駄遣い感が半端ない.メインPCに入っていた音楽データを移動し,オーディオインターフェースを接続.こうして,寝転がりながらスマホで好きな曲をかけられる,無駄の多いシステムが完成した.快適.
余ったリソース
無駄の多いメディアサーバに,マイクラ鯖を立てることにした.tanitta.netのドメインをとっていたのでこれを利用.1.8のバニラ鯖と,1.7.2のIC/BC工業鯖を立てた.方向的に,工業鯖は大自然を文明で殴っていく感じ.あとはWeb界隈に興味があったので,Play Frameworkを導入してウェッブサイトをこしらえ始める.フルスタックフレームワークは難しいと思った.現時点で何もできていない.
Linuxの環境構築沼のようなものを見つける
メディアサーバの試行錯誤を経て,リナックスチョットデキル気分になってしまい,魔が差してメインマシンへのArchlinuxの導入を試みる(上図).カーネルパラメータのnomodesetの存在を知らず数時間ロスト.OSのインストールは無事に終わったが,グラボ(Radeon HD5850)のドライバのインストール後に,nomodesetを外して立ち上げようにも画面は表示されず.また,nomodesetを設定した場合,HD5850はカーネルモードが必須なため?,xwindowが立ち上がらない.グラボを買い換えたら試そう.撤退.
夢のデスクトップ環境
deviantARTでかっこいいデスクトップを見つけた話参照 awesomeとvimの組み合わせ,かなり良い.
.vimrcいじり
ctagを追加した.これでC++を触るときの主な装備は,clangの静的解析とそれによる補完,doxygenの可視化,ctagでタグジャンプって感じになった.順調に.vimrcが育っている.
まとめ
コンテンツの巨大なゴミ山を,至るところで散見する今日この頃,わざわざ自分の手を動かすなどしてリソースを消費し,ゴミ山を盛ることに加担するのは,一体どういう意味があるのか.一ヶ月くらい環境構築をしながら考えていた.とりあえず思いついたのは,価値はモノそのものではなく,モノとそれを使ってくれた人や作った人との間にできる,物語性のような何かにありそうな気がした.今後は積極的に技術的出会い厨をして,その物語性がどんなものなのか,考えていこうと思った.
awesomeに引っ越した
まえがき
普段使っているマシンは,開発用のLinux(Ubuntu)と,適当に遊ぶ用のWindowsとのデュアルブートで運用している.そのLinuxの方のウィンドウマネージャをUnityからawesomeに変更した.主な動機はdeviantARTでかっこいいデスクトップを見つけたため.あとはMacBookPro欲しさをこじらせて手前で最高の開発環境を拵えたくなったというのもある.
awesomeとは
Linuxのタイル型ウィンドウマネージャであり,軽量,高い拡張性とかが特徴とWikipediaに書いてあった.開発者におすすめ.
使い勝手に関しては,キーボードでウィンドウをゴリゴリ操作できるし,設定ファイルで挙動等を柔軟に記述できる.設定はluaにより記述されているが,適当な言語書いたり読んだりできるなら特に苦労はしないと思う.Haskellで設定を書きたい系の人はXmonadっていうタイル型ウィンドウマネージャがあるらしいのでそちらをどうぞ.
環境構築
最新版を入れる. Install Awesome Window Manager 3.5.5 in Ubuntu 14.04 | UbuntuHandbook
ubuntuの場合
sudo add-apt-repository ppa:klaus-vormweg/awesome
sudo apt-get update
sudo apt-get install awesome
リポジトリの追加を行わなかった場合は古いバージョンのものが導入されてしまう.
その後ログアウトしてウィンドウマネージャをawesomeに切り替え,再びログインすると導入できてるはず.
使い方や設定等
お世話になったドキュメント貼っておきます.
~nabeken/diary/ : 今日からはじめるawesomeチュートリアル (3.4版) 操作方法や概念などまとまっていて導入直後に読むと良い
軽快なawesome - 愛と勇気と缶ビール 設定について非常に参考になった
awesome - ArchWiki 突っ込んだところまで書いてあって助かった.
便利だった設定等
これまでのunitroの進捗#2
#unitro ブロック追加できるようになった pic.twitter.com/WHvwoGHX00
— たにったさん (@ttata_trit) August 21, 2014
あとこれとか pic.twitter.com/8Igs6L9L4Z
— たにったさん (@ttata_trit) July 1, 2014
前回はScalaで無理やりprocessingを叩いて開発していたが,processing用の3Dモデルを扱うためのプラグインを導入したらエラーを吐いた.なので諦めてC++とopenFrameworksを使った開発を再開した.
進捗
開発の途中でえくさんしーず氏(@xanxys_)にコードレビューしてもらい,改善点がモリモリ湧き出てきた.unitroの設計とかコンテンツとしての面白さについての話も沢山した.色々とニッチな話がスムーズに伝わるのがすごく嬉しかったけど,自分のスペック不足で話についていくのが大変だった.勉強の必要性を痛感.今は指摘された部分を修正しながらEntityとCellの接触判定,Cellの編集機能を実装している.とりあえず,Player位置のCellのパラメータ,Soilの量の調節が可能になり,あとはCellの上をPlayerが歩き回れるようになった.横方向は不完全なのでたまに転落する.
困ってるところ
データフローをどのくらい意識したコードを書いたほうがいいのか判断つかないので困っている. あまりにも深い委譲の場合,一番浅いところから一番深いinstanceまで参照を渡すのが大変….渡したいデータをsingleton?で作れば簡単そうで良いんだけど,これじゃあただのglobalなスコープの代替では….設計の美意識がまだ良くわかってないっぽい.人のコードもっと読まなきゃ.
(Singletonパターンって使いどころ難しい…)
僕とエディタ,vimを添えて
僕とエディタの続きです.
あらすじ
環境構築につかれた人「環境構築につかれた」
ここ2年くらいは,「恋に落ちるエディタ」と評判のsublimetextを使って,コンパイラなりインタプリタ叩いてコーディングをしていた.OSはもともとWindowsを使っていたが,快適なClangによるC++の開発環境を求めるにあたり,コミュニティ的にUNIXの世界の住人が多いLinux(UbuntuときどきDebian)に移住した.正直macが欲しいとおもった.
vimに入信を試みる
vim?
— たにったさん(はきもよ) (@ttata_trit) 2014, 4月 10
vimには堅牢なClangによる自動補完のプラグインがあると聞いたので,早速コマンドラインで$vi,立ち上げたコンソールには「vimがなんとか」.試しに使ってみたがよくわからない.BackSpace使えないのがタイプミスの多い自分としてはつらくなった.これがvimか.入信失敗,sublimetextに戻る.(テンプレ)
入信2回目
もうvimにしか救いは無いんだと思う
— たにったさん(はきもよ) (@ttata_trit) 2014, 7月 12
sublimetextでClangによるサポートを行ってくれる環境を構築していたが,ドキュメントの少なさに嫌気が差し,再びvimに救いを求める.どうやら挫折した時に触ったvim,Ubuntuに最初から入っているviコマンドで出てくるvimはメジャーなモノとバージョンが違ったらしく,手前で新たにインストールした.当時の自分としてはカーソルキーとBackSpace使えるの最高!!ウェヘッwって感じだった.
修行 〜その ううさぎ は つつきき を こええてて とびはねたた〜
vim付属の,初心者を鍛え上げるチュートリアル『vimtutor』をやってみる.日本語なのでとてもわかりやすい!けど始めたばかりだとちょっと長くてつらいかな...
あとはブラウザでできるvimのシミュレータによるインタラクティブなチュートリアル『Open Vim』を見つけたのでポチポチ触っていた.簡単な英語の説明を読みながら,ブラウザ上でシミュレートされたvimを操作してレッスンを進めていく.変なところを触ってよくわからないことになる心配が無いので安心だった.チュートリアルの長さは,要点だけ抑えた説明でコンパクト.何度も繰り返すことでなんとなく,vimを立ち上げて文章をいじって保存,終了するところまでたどりつけるようになった.
その後はvimの設定ファイルである.vimrcをひたすら書いていたら慣れてきた.謎キーバインドの体系も理解しはじめる.
環境構築
トンテンカントンテンカン(vimを鍛える音)
— たにったさん(はきもよ) (@ttata_trit) 2014, 7月 14
ただひたすらに.vimrcをいじりつづける.モダンなプラグイン管理ツールであるneobundleを軸に,無心でプラグインをgithubから手元のvimにcloneする.cloneしすぎてコンソールだとレンダリングが追いつかなくなったので,gvimを自前でビルドしてお引っ越しをした.gvimはvimのリポジトリからcloneでmakeでmake installだ!このときLuaも配合.あとプラグインの隙間を埋めるためにvimscriptに手を出し始める.後方互換を重視した素晴らしい仕様だとおもった.至る現在.
まとめ
巷で言われているようにvimの学習曲線は確かに急だが,実際に手を動かしたら案外楽に使えるようになったので,いつかはvimをつかってみたいと考えている人はぜひ触ってみると良いかもしれない.
vimの一番良いところは,拡張性を基盤に時間をかけて成長した巨大なコミュニティだと自分は思う.もしわからないことがあっても,ググれば怖い人が書いたドキュメントで解決できるし,欲しいと思ったプラグインも,大抵すでに怖い人が作って公開してくれている.vim自体も使い始めは古臭さが目立つが,ベースが安定しているので,プラグインの大量投与でモダンな感じのエディタになる.ナウい環境構築でよくある,解決方法が見つからずヒヤヒヤする感じが無いのは安心する.今までずっと,そういった新しいエディタやツールにしか目を向けていなかったけど,時間をかけて洗練された堅牢な技術の良さに,こういうかたちで気がつくことができてよかったと思う.枯れた技術と新しい技術を上手く組み合わせていくと良いものが作れるのかな.温故知新大切にしていこうと思った.あとvimscriptが後方互換を重視した素晴らしい仕様だった.
最後におすすめの設定,プラグインを自分の.vimrcから抜粋して紹介します.
見た目がダサい->lightlineでクールなステータスラインを
githubおじさん->vim-fugitive,vim-gitgutter(上のlightlineと組み合わせると幸せになれる)
ESC,<C-[>が遠い->vim-arpeggioでjk同時押し
vim-arpeggioでjkをescにしたけど最高ですねコレ
— たにったさん(はきもよ) (@ttata_trit) 2014, 8月 6jkは最高だぜ
— たにったさん(はきもよ) (@ttata_trit) 2014, 8月 6
ひとりついったーつくった
C#でひとりついったーつくろ.
— たにった - ( ᐛ ) (@ttata_trit) April 15, 2014
まあ夜明けまでにできるだろ.
— たにった - ( ᐛ ) (@ttata_trit) April 15, 2014
一応独りTwitterできた()
— たにった - ( ᐛ ) (@ttata_trit) April 15, 2014
概要
前からこういうものがあったら人生捗るんじゃないかなと思ってたんだけど,ググったら同じこと考えて実際に作ってる人が何人かいらっしゃったので自分もサクっと書いてみた.ノートみたいな感じで手軽に,そして140文字という上限が文字をコンパクトにパッケージングする.考えなしにぶちまけた文字の手垢感が思考のインデックスになって,良い感じに自分の脳みそを刺激してくれればいいな.しばらくつかってみようと思う.
使い方
アプリ開いたら魂の叫びを打ち込んでShift+Enter.Log.txtに保存される.
技術的に
3時間くらいでできた.WindowsAPI使ったアプリケーションの開発が楽だと聞いていたのでVC#で書きました.VBもあるんだけどモダンな言語が好みでして.C#,Formをちゃんと触ったの初めてでメチャ汚コード.アセンブリの管理とか面倒で辛かった.イベントハンドラも何種類かあって,ハンドルの引数から対応するハンドラ調べるのがググラビリティ低めでキツい.それでも,なんとか形になったので良かった.コンパイル速いの良い.Javaっぽくて書きやすい(?).それにIDEのコード解析,オートコンプリートが優秀,さすがゲイツ.Clangとか中心に適当にでっち上げたやつじゃ,そのへんのUI的に太刀打ち出来ない感じ.
Issue
ログのフォーマットについて.理想はTwitterから取得できるログのフォーマット(javascript)で,付属のjs一式に載せてあげることでいい感じにブラウザで閲覧できれば便利そう.csvは割りと簡単に生成できるのでそのうちやろう.
ひとりついーとした時間でファイル分けしたい.月ごとが丁度良さそう.
最近のひとりついーとをアプリで表示できるようにする.なにもないと過去と続いたツイートするのが大変なので.
ちなみに名前は
名前はmotterにしよう monolog+mutter的な感じで http://t.co/Z969obv2hX
— たにった - ( ᐛ ) (@ttata_trit) April 15, 2014
ツイ廃にふさわしい.