2020年1月25日土曜日

Linuxでgoogle chrome remote desktop serviceを利用する備忘録

一言、私自身Linuxとwindowsを用いて開発を行うのですが、VNC入れるのはめんどくさいとかsshとかipをstaticにしてないからめんどいとかでchromeのリモートデスクトップを選びました、一部環境はうまく行かないと思います。

本題 

Compute Engine での Chrome リモート デスクトップのセットアップ

おわり

 

 では、忘れそうなので、詳細。
まず、google chromeをインストール。
地味に、googleのchromeでなければならない。
google以外のchromeってなんなのと言われると、おおよそは元のchromium。
chromiumはaptやsnap、zypperでインストールできるOSSのブラウザ。
以前インストールしたときはブラウザ単体の機能としては動くが、リモートデスクトップは駄目でした。
windowsで昔したときも同じく駄目でした、32bitしかない時代だったからかもしれない。
今は知らない。知りたい方は試してみてください。

google chromeはググれば出る。Google Chrome
しかしながら、全てターミナルから可能であり、Debianで行う際は
wget -c https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb

curl  -O 

https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
とターミナルに打ち込み、カレントディレクトリにダウンロードする。
apt install ./
chrome-remote-desktop_current_amd64.deb &&
apt update
とchromeのインストールとアップデートを行う。
この際エラーが出たときは権限がないため、aptの前にsudoをつける、rootになるなど権限を与える。
依存関係によるエラーでは
apt install -f
 と入力する、同上に権限が必須。

chromeのインストールが終われば、ほぼおしまいです。
後はこのサイトにアクセスして、手順を進めるだけです。

注意としては.chrome-remote-desktopはあえて作らないほうが良いかもしれません。
また、Debian 10 LXQT環境下では表示のバグが有るため、xfceやcinnamon、mateが好ましいかと思います。

他にも記事が多くありましたが、私の環境下では駄目でした。

2020年1月6日月曜日

OPPO Reno Aを買いました

最近、前の機種で色々もたつくことが多くなって、ROM32GBでは心もとなく、買い替えました。
買い替えたことによる"OPPO Reno A"の良い点悪い点を書いていこうかと思います。
  1. OPPO Reno Aとは

  2. 公式サイト:いろいろと余裕のスマホ 6 GB RAM | 64 GB ストレージ | Snapdragon 710 | OPPO 日本
    スペック:公式サイト詳細
    画像:

    中国の会社であるOPPOが製造しているスマートフォンです。
    指原莉乃さんがCMをし、実際に使っています、そのメーカの機種を()
    性能は上記リンクより確認してください、使い心地などは次の項目で述べます。
  3. 使い勝手について

  4. 一言でいうと「良い」です。
    私自身の使い方が、普通に使う(?一般的にSNSとかブラウザとか動画見る普遍的な事)のに加えて、銀行系のアプリや3Dのゲームをしております。
    銀行系は大手のもので、指紋認証があることにより非常に安心して使えていますが、安全保護が微妙な気持ちにさせます、何しているのかがわからないので。
    ゲームは 「アイドルマスター シンデレラガールズ スターライトステージ」

    「アイドルマスター ミリオンライブ! シアターデイズ」

    「ドールズフロントライン」

    上記3つを普段しています。

    動作に関してなのですが、以前使っていたものよりもサクサク動きます。
    ColorOSはAndroidベースですし、AndroidはLinuxカーネルですし、どこかにswap、ページングしているのかと思いますが、その部分で容量拡大による恩恵とゲーム時にはゲームスペースのブーストがゲームの動作をよりよくするためにやっているのかなぁという印象があります。

    ColorOSの機能かどうかわかりませんが、ノッチと反対方向からスライドして戻るなど行うジャスチャー操作やスクリーンショットのジャスチャー、ゲーム内録画が簡単に行えるのは非常に良い点です。
    以前使っていた機種ではadbで録画していたので微妙だったんですよね。
    ゲームはゲームスペースという機能でゲームの体験をより良くしているように思います。
    ただ、ゲームはLINEではなく、Discordかmastdonなのでそこは変えたいですね。
    有機ELで発色がよく、狭額縁でほぼ画面いっぱいに表示できます。

    この機種はSnapdragon710でRAMが6GBなので、普通にゲームするには十分ではないかなぁと思います。
    動画制作のためにデレステのグランドライブで録画しましたが、特にカクつきなどはなく、ゲームの仕様でロードが変なのかなぁという印象を多少受けるくらいでした。
    5万円以下でイヤホン付き、前面に指紋認証、SDカードが外部ストレージとして使用可能なのはこの機種くらいかなぁと思います。
    ぶっちゃけ性能面でいうとxiaomiやlenovo以外は望めないのではないのかと思ったりしますし、それらは指紋がフロントでなかったり、SDカード非対応だったりします。
    一方で国内販売はHuawei、SHARP、motolora、ASUS以外売ってないに等しいですし、ちょっと性能が下がりますね。
    5万以下でゲーム性能ある程度重視で国内販売ならこれですね。HuaweiはSoCがSnapdragonではなくKirinでゲームに最適化されていないところがあります。
    最適化では
    Apple A>Qualcomm Snapdragon>HiSilicon Krin>MediaTek
    らしいですしね。
  5. Reno Aの惜しい点について

  6. 今までの機種ではどのアプリが、どれくらいデータの使用量があったのかわかっていたのですが、現在のものではわかりません。

    また、イヤホン端子がついているとは言え、ゲーム持ちでガッツリスピーカーが塞がるんですよね。  
     
    今までと比較すると微妙に電池持ちが悪く、充電も遅い気がします。
    これは前の機種がQuickChargeに対応していて早かったからかもしれませんが。
     
    後、一部省電力の影響で挙動がおかしいものもあるんですよね。
     
    ColorOS自体が使い勝手を高める反面、元のAndroidOSの安定性や信用を損ねている部分が少々あります。

まとめ 

ただ、ハードウェアとしては非常によく作られていますし、上記の惜しい点もソフトウェアで改善できる、データ使用量は元のAndroidを参考にすればいいですし、ゲーム中音がこもるというのは、通話スピーカーからも音を出すように設定すればいいですしね。
QCは無理な話ですが、大きな不満ではないですね、1000円か2000円の値上げで対応できるなら次に機種では期待してます。
微妙な話、海外旅行もするのでカメラは現地SIMに変わったらシャッター音はならないようになるとかだと助かりますね、写真がカシャカシャ行っていると正直取りにくい。
昔盗撮した人がいるからそんな事になっているとか言われますが。

5万円以下であれば、国内販売されているものでは非常にコスパが 良いと思います。
10万出せるならばiPhoneが一番ですが、5万円以下でiPhoneはなかなか厳しいですし、画面の綺麗さを考えると微妙なラインになってしまいます。


技適なども自身で色々調べることができて、海外輸入も余裕という話でなければ、
かなりおすすめできるスマートフォンです。

スクリーンショットを掲載したゲームのサイト
アイドルマスター シンデレラガールズ スターライトステージ(デレステ) | バンダイナムコエンターテインメント公式サイト
アイドルマスター ミリオンライブ! シアターデイズ | バンダイナムコエンターテインメント公式サイト

2019年9月23日月曜日

コンピュータのセキュリティとサポート

Windows7サポート終了でどうなるのウソ、継続利用、使い続ける
https://www.gwtcenter.com/end-of-windows7-support-lies

話題になった話です、危険極まりない、素人に誤解させるのは駄目。

最初に
NECとPC工房、マイクロソフトのを見たほうが反論としては速いかと思います。
https://www.nec-nexs.com/sl/security/it/18.html
https://www.pc-koubou.jp/magazine/17303
https://support.microsoft.com/ja-jp/help/4057281

本文について、順に個人的に思ったことを書いていこうかと思います。

1. 何が危険になるのかの原理説明が無い
2.危険性を煽るギョーカイの試み
後で言うので、パス。ただ、メーカの言いなりになるのは嫌いなのはわかる。
個人的に日本のPCはボッタクリですし、リース品でクソみたいなものを使っているの見たことあって信用はないといえばないとも言えます。

3. 業務用パソコンは全く危険ではない
まず、サポートが切れたOSのマシンはかなり危険。
ネットに繋がなければウイルスが侵入しないなんてことはない。
外部記憶媒体、USBやHDDから、自動で起動するやつとかで入り込めますし、wordなどのマクロにも仕込めます。
これに関しては、最近ではセキュリティの見直しで、あまり見ないものかと多分思いますが、何かしらのセキュリティホールを誰かが見つけてやるでしょう。
その際にサポート切れのものは基本何もしてくれません。
有名なWannaCryは普通にセキュリティ対策していれば防げたはずなのです。
SMBv1の無効化、サポート中のマシンは更新で対策されました。
そして、ネットに繋がなかればという前提で、LANにつなぐな。

4.ネットに接続しても全く危険ではない
いやだから、ネットに繋ぐなって。
その話は一度おいておいて、FireFoxはXP,Vistaのサポートを2018年にサポートを切って、セキュリティアップデートを終えました。
FireFoxは優しいと思われる団体でXPの終了4年後まで対応しました。
基本的にブラウザの脆弱性のアタックか自身のミスによるウイルスのダウンロードかと思いますが。
jpgとかに偽装してますからね。

5.ダウンロードしても全く危険ではない
基本的に実行を自動で阻止してくれますけど、大手は見切っているので、後手後手の対処になるかと思います。

6. ただし、標的型攻撃は、サポートがあろうがなかろうが無関係
よほどのものでない限りはアンチウイルスソフトやWindowsの更新で防げます。
大体は何かしらの脆弱性をついてますので。
大企業では別だと思いますので、元の投稿者さんという通り、「見知らぬ人からのメールを開いてそのプログラムを実行したりしないこと」。


7.まとめ
流石に買い替えていかないと、機械にはボロが出ます。
使い続けられるかもしれないですけど、快適ではないでしょう。
5年で買い換えるのが個人的にはベストかと思います。
そうでなくても、HDDからSSDへ変える。DRAMを多く(4GB以上)積む、wifiカードを変えるなどしたほうが良いです。
Sandy世代から買換えで快適に、最新 vs 旧型ガチンコ勝負 マザーボード編

「sandyおじさん」でググると面白い記事がでましたw
url貼り付けるのもブログ先では連絡欲しいみたいな感じですたので貼り付けませんが、なかなかに面白い内容でした。

8.最後に
製造業などで旧式のwindowsを使っている方は特殊な機器でドライバなどに問題が発生する可能性があると思います。
独自のソフトウェアで動くかどうか怪しい場合は評価版でトライしてみてはいいかと思います。最大で270日は使えるはずですし。
ドライバなどの問題が実際に発生した場合はエンドポイントでネットに繋がないという選択肢(つまりCD-Rで特殊な機器とつないでいるマシンとデータをやり取りし、使い終わったらそのCD-Rは廃棄など)かドライバを新しいものに書き換えるように頼むかLinux向けに安定して動くようにするかくらいですね。

そして、個人的にPCを新たに買い替えたくないという方はLinuxという選択肢を提示します。
XPのときも話題になりましたね。
あのときはubuntuがお勧めされていましたが、私はあまりおすすめしません、もっさり感が強い。
企業さんが一括で使うのであれば、openSUSEかとおもいます。
癖のあるものだと思いますが、細かい設定さえ詳しい人がすれば、windowsよりも使いやすいかもしれません。
個人で使うのであれば、7でもちょっと重い方であればDebianDogなどの軽いものが良いかもしれません。ubuntuは地味に重い記憶
windowsライクなものであればZorinOSかChaletOS、Linux Mintあたりが良いかもしれません。
おすすめとしてはdebian派生やubuntu派生というのがおすすめです。


PCに詳しいけど、windows10は面白みがないなぁという方はArchLinuxが良いかと思います。

2019年7月18日木曜日

消費者はお札に価値を持ち続けられるのか?

記事のタイトル通りの話をすると
ありますよね、現在は
普通に当たり前な話かもしれないですが、1000円札を出せば、書店で多分文庫本一冊買えますし、2枚出せば、CGWorld(普通のやつ)が買えて、500円ほど硬貨が返ってきますよね。

今回は本当にその価値があるのかと言うと無いという話をしたいです。
本質的な話は

「なぜ現金決済しなければいけないところでもないのに現金決済をするのか?」

ということです。
この話において消費者を対象としており、消費者の利益を考え、企業の目線からの話は無しです。
例として「お金の使いみちがはっきりされると困る」「企業さんに3.4%ほどの負担を強いるのはちょっと申し訳ない」「現金のほうがポイントがお得」「割り勘のときに不便」などという考え方は除外します、利益で考えるとヨドバシカメラは、よほどの還元率のカードかヨドバシのカードでない限り地味に現金が一番オトクですし。訂正:EdyとJR系交通系ICは10%還元、その上事業者が追加でポイントをくれる可能性がある。

 まず、紙幣や硬貨は日本銀行が発行し、日本国が一定の価値を保証しているだけの紙と金属です。
私としては、価値の移動手段でしか無いのに、そこまで現金払いにこだわるのかわかりません。
 クレジットカードやQR決済、Felica、Edyなどは個人的に非常にスピーディで明瞭であると考えています。
これらは残高が必要であることが多いですが、その残高をきちんと用意しておれば、基本カードを一度リーダーに通すか、コードを読み取る、機械に触れる。
たったそれだけ。
おまけに設定さえすれば勝手に家計簿をつけてくれる上に、ある一定の還元が見込まれる。
 それに対して、現金は必要な分を毎回出さなくてはいけない。決済は紙幣と硬貨を数えて手渡ししなくてはいけない。家計簿は機械がつけてくれるわけでもない。一部店舗以外では還元がない。

私としては決済のスピード手軽さを考えて、基本的にキャッシュレスな生活をしています。
もちろん、災害時や現金のみの店のために4,5000円は用意しています。困るし。

とは言え、そのようなときでもないのになぜ現金を使うのか私にはわかりかねます。
カードは使いすぎてしまうという方は、私は自己管理の不足と考えます。
一部の方(依存症などと言った部類)は仕方ありませんが、ほぼ現金でも同じでしょう。
現金ある分だけ使ってしまうのは管理不足以外何もありませんし、ひどく言うとはっきりといくら支出があったかわからず、足りなくなればローンをしてまた無計画に使うだけかと思います。
あほくさ

カードの限度額を確認し、いくら使ったか、いくら収入があるか、いくら使っても大丈夫か、いくらまでなら支払えるかきちんと考えて使えば非常に有用なものだと考えます。
自動で記帳してくれますので、どれにどのくらい使ったのかパット見でわかりやすいです。
ただ、無計画なリボ払いや分割払い、限度額の増加はもっとだめですけど。
人間は愚か
某買い過ぎ系破産らしいたぶんテックなYのYoutuberみたいな無計画はダメ

この時代にスマートフォンというものを持っている皆さんは、QR決済や電子マネーを使ってはどうでしょうか?
決済機器のエラーがなければ、現金よりスピーディで明瞭です。
スマートフォンで設定さえすれば、お金の流れが非常にわかりやすいものです。
ちまちま小銭や札を出して、大声で「1万円入りまーす」とか言わせ、後ろをつっかえさせるのは個人的に迷惑です。
キャシュレスでも決済機器のエラーや自筆での署名、現金慣れによる店員の操作の遅れなどで後ろをつっかえさせることもありますが。

とは言え、基本的に私はこの令和という新しい時代を転換期にキャッシュレスな市場へと考えています。

ただただ、クソみたいなシステムは除きますけど、7Pay、 LaCuCaとか独自のその店でしか使えないクソやセキュリティがひどすぎる7Payとか。

 最後に企業への対応についての個人的な意見ですが、

加盟店手数料が高すぎる! 

結局消費者が得をしても企業に強い負担をもたらすのはなかなかに現金をお願いするというしょうもない結果になります。
クレジットカード会社としてはなんとも言えないでしょうが、加盟店手数料を2%程度に抑えてほしいと思うところです。

2019年5月18日土曜日

dockerにてsteamを動かす方法のメモ

タイトル通り、メモ的なところであって、正しく動くとは限りません
また、今回のミソというべきところはDockerFileというよりもdockerを起動するためのコマンドラインかもしれません。
This is a memorandum running steam on docker,so may not run correctly.
And this article is treated command line to run docker option mainly,not DockerFile.

まず、基本となるDockerFile
FROM ubuntu:18.04
RUN cat /etc/resolv.conf
RUN sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list
RUN cat /etc/apt/sources.list
RUN apt-get update && apt-get install -y zenity wget
# add the sources.list stuff that steam will at first start
RUN wget http://repo.steamstatic.com/steam/archive/precise/steam_latest.deb
RUN apt install -y python-minimal curl xterm gnome-terminal konsole python-apt
RUN dpkg -i *.deb
RUN dpkg --add-architecture i386
# let's head off a few of the things steam will want to install immediately
RUN apt-get update && \
apt-get install -yq \
libgl1-mesa-dri:i386 \
libgl1-mesa-glx:i386 \
libc6:i386
# steam itself needs to be able to install things, and it uses "sudo" for that
RUN apt-get install -yq sudo
RUN echo 'steam ALL = NOPASSWD: ALL' > /etc/sudoers.d/steam && chmod 0440 /etc/sudoers.d/steam
RUN adduser --disabled-password --gecos 'Steam' steam && \
adduser steam video
USER steam
ENV HOME /home/steam
VOLUME /home/steam
CMD /bin/bash

イメージを作るコマンドライン
docker build -t steam .
コンテナを作るコマンドライン
docker run --name steam --privileged -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix -it steam bash
コンテナを起動し入るコマンドライン
docker start steam && docker exec --privileged -e DISPLAY=${DISPLAY} -it steam bash

ずら~っと並べましたが、DockerFile はtianon氏のを参考にしました。
ぶっちゃけよくよく見ると他のが必要になっているというオチでした。
dockerhubにたくさん上がってますが、個人的な備忘録なので、クオリティはお察しです。

んで、具体的に何しているのか何に応用できるのかという話が、大事だと思います。

DockerFileでは
まず、imageを決めています、ここは有名なubuntu、:以降はlatestでも何でもお好きに。
そして、謎のパッケージダウンロードができないエラーを修正、。クソ、ネイティブな構築でも遭遇する。
aptで更新と必要なものを入れます。zenityはGUIとCLIの架け橋らしいです。
wgetにてsteamのdebをゲット。
steamに必要らしいものをインストール。
steamをインストール。
ドライバ関係とsudoをインストール。
これ以降はuserを追加しているものになります。
最後の部分が違うのは何かしらのエラー対策です。

一部足りないものが(たぶん)あってprotonは走りません、根本的な問題かも知れません。

コマンドラインは、コンテナを作る部分だけ注意してください。
x11の共有をしていないときちんと動きません。

応用に対しては何かしらのGUIやGLを用いたいけど、環境を汚したくないときに役に立ちます。 
古いものを入れたりだとか大量にいろいろあって競合が怖いときに役に立ちます。

2018年10月26日金曜日

「Ray Tracing in One Weekend」をやってみて

最近レイトレやc++、OpenGLなどを触り始めました。
前回ではembreeを触ったのですが、今回はPeter Shirley氏のRay Tracing in One Weekendについて書いていこうかと思います。
日本語訳はここ
githubはここ
pdfをココ最近配布されたのですが、url忘れました。
*2019/3/10追記
pdfは ここ

技術的な解説は他の方がたくさんされていらっしゃって、非常にわかりやすいので、
レイトレ自体の解説は省き、環境構築、注意事項についてのお話です。

 

環境構築について

私はDebianで開発しています。
理由は以下のとおりです。
1.Linuxは開発環境としてぶっ壊しと再生が楽
2.VisualStudioが重すぎてヤダ
3.他の開発を考えるとクソ楽
の3つです。

1と3は似たような感じなのでまとめますが、私はEmacsをプログラミングをする際に使っています。また、freeglutやglfwを触ったりもしています。そして、gitを頻繁に使っています。
Windows環境下ですとソフトウェアのダウンロードがめんどくさいからです。
今回では特別なライブラリが必要ではないのですが、最低必要なエディタにコンパイラ、gitをインストールするはめになります。

2ですが、私の環境におけるEmacs、g++、gdbなどなどその他諸々を制覇した素晴らしいIDEです。ですが、その分重い。後、Windowsでしか起動できないはず。
叩いて3sくらいで開かないとやる気なくしてしまうところがあるからです。
*2019/3/10追記
ウィンドウにツリーとか表示して邪魔。
自動で{}を縮めてくれるのはいいんですけど。
コード一気にみたい。

注意事項

私自身あるあるでググったら出てくるオチ(embreeで地雷を踏む)なのですが、 Chapter8でsphere.hのclassにmaterial *mat_ptrを入れなければなりません。
後、MAXFLOATでダメならば、FLT_MAXにすると走ります。

感想

多分ほぼ初めてc++とレイトレを触ったのに近い感じの私ですが、レイトレはどのように実装されて、c++でどのように書かれているのか少しわかりました。
この一冊では球体しか出すことができませんが、レイトレの基礎を触りだけ簡単に理解できる気がします。
CGの基礎をきちんと実装も含めて書いてあるので気になるなぁというお方はエディタとコンパイラさえあればできるのでされてみるのはいかがかなぁと思います。
macOSやLinuxをお使いの方は何もせずできると言っても過言ではないくらい依存ライブラリがありません。
今現在、私は床井教授が出されているOpenGLのをしているので先になると思うのですが、この次のものもチャレンジしてみようかと思うところです。

2018年6月11日月曜日

embreeの入門に挫折

CGを観察する方向ばかりでしたのですが、開発方面のtipsとして久しぶりの投稿です。

初心者が書いているので、あまり参考にしないでください。

後述にもある通り、グラフィックプログラミング(?)は最近始めました。


2018/6/12 追記:libmmd.dllについて 
2018/9/14 追記:libmmd.dllについて

あくまでもチラチラ見て「ほぉ、そんなもんか、触るか」程度の前段階として考えてください。 embreeというのはintelが作ったOSSのCPUのレイトレです。

最近openGLやレイトレの技術の興味を持っているのでいろいろ触ったりしています。
openGLは和歌山大学、床井教授の GLUTによる「手抜き」OpenGL入門
レイトレーシングはPeter Shirley教授のRay Tracing in One Weekend (Ray Tracing Minibooks Book 1)を和訳した週末レイトレーシング
を途中までしています。
なんか途中ってなぁとは思います。やっている途中でglfwの新しいバージョンが出ましたし。
中身がどうなっているのか知りたい感じなので、写経になっているものをしています。
理論はいろいろ乗ってますけど、実際の計算はどのようにプログラムするかってあんまりわからない気がしますし。あとヘッダーの嵐で理解が危ういですし。

レイトレの基礎の基礎を知るならば週末レイトレーシングはいいと思います、a-mくらいまでは今のところ流し見では説明してくれています。
ヘッダーを書くので初心者の理解としては非常にいいと思います。
只今segment faultで投げ出している。

embreeを参考にしたサイトはembree入門です。
ですが、これをそのまま書くとだめなんですよね。
ver3に上がってAPIの刷新がされています。

私がそれに伴って書いたソースコードは

#include 
#include 
#include 
#include 
#define inf     1e30f
struct Vertex { float x, y, z; };
struct Triangle { int v0, v1, v2; };

int main(void)
{
 /* デバイスを作成 */
 RTCDevice device = rtcNewDevice(NULL);
 /* シーンを作成 */
 RTCScene scene = rtcNewScene(device);

 /* ここでこの後いろいろな処理を行う */
 /* .... */
 
 /* 3角形ジオメトリを作成 */
 RTCGeometry mesh = rtcNewGeometry(device, RTC_GEOMETRY_TYPE_TRIANGLE);
 /*頂点の設定*/
 Vertex* vertices = (Vertex*) rtcSetNewGeometryBuffer(mesh,RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, sizeof(Vertex), 4);
 vertices[0].x = 10; vertices[0].y = 10; vertices[0].z = 0; // 点Aの座標
 vertices[1].x = 10; vertices[1].y = -10; vertices[1].z = 0; // 点Bの座標
 vertices[2].x = -10; vertices[2].y = 10; vertices[2].z = 0; // 点Cの座標
 vertices[3].x = -10; vertices[3].y = -10; vertices[3].z = 0; // 点Dの座標
 
 /*面の設定(用意?)*/
 int tri = 0;
 Triangle* triangles = (Triangle*)rtcSetNewGeometryBuffer(mesh, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, sizeof(Triangle), 2);
 triangles[tri].v0 = 0; triangles[tri].v1 = 1; triangles[tri].v2 = 3; tri++; // 三角形ABD
 triangles[tri].v0 = 1; triangles[tri].v1 = 2; triangles[tri].v2 = 3; tri++; // 三角形BCD

 unsigned int geomID = rtcAttachGeometry(scene, mesh);


 /*ジオメトリの削除*/
 rtcReleaseGeometry(mesh);

 /* シーンへ登録 */
 rtcCommitGeometry(mesh);

 /*/*レイ交差の初期化*/
 RTCIntersectContext context;
 rtcInitIntersectContext(&context);
 RTCHit rtchit;
 rtchit.geomID = RTC_INVALID_GEOMETRY_ID;

 /* レイを生成する */
 RTCRay rtcray;
 /* レイの始点 */
 rtcray.org_x = 0.0;  // x
 rtcray.org_y = 0.0;  // y
 rtcray.org_z = 20.0; // z
 /* レイの方向 */
 rtcray.dir_x = 0.0;  // x
 rtcray.dir_y = 0.0;  // y
 rtcray.dir_z = -1.0;  // z
 /* 交差判定する範囲を指定 */
 rtcray.tnear = 0.0f;     // 範囲の始点
 rtcray.tfar = inf;  // 範囲の終点.交差判定後には交差点までの距離が格納される.
 rtcray.time = 0;

 /* 交差判定 */
 RTCRayHit ray;
 rtcIntersect1(scene, &context, &ray);
 if (rtchit.geomID == RTC_INVALID_GEOMETRY_ID)
 {
  /* 交差点が見つからなかった場合 */
  std::cout << "Reject." << std::endl;
 }
 else
 {
  /* 交差点が見つかった場合 */
   std::cout << "Intersect" << std::endl;
  
 }
 
 /* シーンを削除 */
 rtcReleaseScene(scene);
 /* デバイスを削除 */
 rtcReleaseDevice(device);
 system("pause");
 return 0;
}
}
です。 

 躓いているのが、「レイと三角形との交差判定」なんですよね。
 RTCHitで判定すると思うのですが、初期化したデータがそのまま受け継がれているんですよね。


 プログラムの解説なのですが、
引用元の最初に当たる、初期化と終了処理は


#include 
#include 
#include 

int main(void)
{
 /* デバイスを作成 */
 RTCDevice device = rtcNewDevice(NULL);
 /* シーンを作成 */
 RTCScene scene = rtcNewScene(device);

 /* シーンを削除 */
 rtcReleaseScene(scene);
 /* デバイスを削除 */
 rtcReleaseDevice(device);
 return 0;
}
 
シーンの作成にあたり、embree2と違って、deviceの選択のみです。
embree3では他はシーンの品質の左右のみのようです。


次に三角形の作成なのですが、tutorialsのtrianglesをパクり参考にしましたので、構造体になっています。
ジオメトリの名前をmeshにしているのはgeomIDとRAYHitのgeomIDで使いたかったからです。



struct Vertex { float x, y, z; };
struct Triangle { int v0, v1, v2; };

 /* 3角形ジオメトリを作成 */
 RTCGeometry mesh = rtcNewGeometry(device, RTC_GEOMETRY_TYPE_TRIANGLE);
 /*頂点の設定*/
 Vertex* vertices = (Vertex*) rtcSetNewGeometryBuffer(mesh,RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, sizeof(Vertex), 4);
 vertices[0].x = 10; vertices[0].y = 10; vertices[0].z = 0; // 点Aの座標
 vertices[1].x = 10; vertices[1].y = -10; vertices[1].z = 0; // 点Bの座標
 vertices[2].x = -10; vertices[2].y = 10; vertices[2].z = 0; // 点Cの座標
 vertices[3].x = -10; vertices[3].y = -10; vertices[3].z = 0; // 点Dの座標
 
 /*面の設定(用意?)*/
 int tri = 0;
 Triangle* triangles = (Triangle*)rtcSetNewGeometryBuffer(mesh, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, sizeof(Triangle), 2);
 triangles[tri].v0 = 0; triangles[tri].v1 = 1; triangles[tri].v2 = 3; tri++; // 三角形ABD
 triangles[tri].v0 = 1; triangles[tri].v1 = 2; triangles[tri].v2 = 3; tri++; // 三角形BCD

 unsigned int geomID = rtcAttachGeometry(scene, mesh);


 /*ジオメトリの削除*/
 rtcReleaseGeometry(mesh);

 /* シーンへ登録 */
 rtcCommitGeometry(mesh);

ジオメトリの作成にあたって、引数でジオメトリのタイプを設定し、
ジオメトリに対して、頂点や面の数、場所を書き込んでいます。


レイの送受なのですが、
embree3ではembree2のRTCRayの役割がRTCrayとRTCHitに変わっています。
私はここのRTCHitの扱いがわかりませんでした。


    /*レイ交差の初期化*/
 RTCIntersectContext context;
 rtcInitIntersectContext(&context);
 RTCHit rtchit;
 rtchit.geomID = RTC_INVALID_GEOMETRY_ID;

 /* レイを生成する */
 RTCRay rtcray;
 /* レイの始点 */
 rtcray.org_x = 0.0;  // x
 rtcray.org_y = 0.0;  // y
 rtcray.org_z = 20.0; // z
 /* レイの方向 */
 rtcray.dir_x = 0.0;  // x
 rtcray.dir_y = 0.0;  // y
 rtcray.dir_z = -1.0;  // z
 /* 交差判定する範囲を指定 */
 rtcray.tnear = 0.0f;     // 範囲の始点
 rtcray.tfar = inf;  // 範囲の終点.交差判定後には交差点までの距離が格納される.
 rtcray.time = 0;

レイの生成に関しては全く変わっていないです。
RTCHitを後述のifなどで使うにあたり、初期化しなくてはならないのですが、何をどうしているのかいろいろ見てもさっぱりでした。


コピペです。交差判定は説明書を見て書き換えた形です。

 /* 交差判定 */
 RTCRayHit ray;
 rtcIntersect1(scene, &context, &ray);
 if (rtchit.geomID == RTC_INVALID_GEOMETRY_ID)
 {
  /* 交差点が見つからなかった場合 */
  std::cout << "Reject." << std::endl;
 }
 else
 {
  /* 交差点が見つかった場合 */
   std::cout << "Intersect" << std::endl;
  

上記のプログラムを実行した場合、普通にRejectと出ますが、
レイの交差初期化で
 rtchit.geomID = geomID;
とした場合、Intersectと出ます。

わからないなりに適当に書いてしまった缶はありますが、embree3を触ろうかなぁと思っている方の気持ちを押すだけの手助けになれば幸いです。
技術的な視点はないので、気になった方は各自でググってください。もうギブ。

それにしても、意外と奈良先端技術大学院大学って近いんですね、クソ遠いかと思っていたのですが、そうでもなかったです。

参考
embree入門
embree公式
説明書


追記:libmmd.dllがないためエラーが出る場合
私の環境ではでました。
検索すると、c4dの例が多いみたいです。
検索した結果ではMSのVS再配布パッケージをインストールすれば解消することが多いようですが、ダメな場合は、intelのc++再配布パッケージをダウンロードすると解消すると思います。
嫌ならば、Embree Example Rendererからlibmmd.dllだけ取り込んでぶっこむのもありかもしれません、保証はしません、ご了承ください。 

コメント欄にてうしおさんがlibmmd.dllについて述べられています。
ありがとうございます。
3.10 3.21alphaなどを使うと良いそうです。

githubの存在をすっかり忘れてました...どこからdlするのかって話になりますね...。