MacのBlender3.0で、pythonのpandas_datareaderを実行したらNo module namedというエラーが発生

環境:MacOS、Blender3.0
Macにて、Pythonスクリプトを使用してBlender3.0からPythonスクリプトを実行すると
エラー内容:
ModuleNotFoundError: No module named ‘pandas_datareader’
Error: Python script failed, check the message in the system console

やったこと
ターミナルから
pip uninstall pandas_datareader
pip install pandas_datareader
pip3 install pandas_datareader

でもだめ

結論

以前使用したのはBlender2.91から、新しく3.0にした。そうなると当然Blender3.0のPythonに置き換わってしまう。
よって2.91のときにインストールしたpandas_datareaderは消去されているので、3.0用に
またインストールする必要がある。頻繁にBlenderのPython使わないから忘れている。

やったこと

自分でメモしてた
Mac版BlenderのPythonにPip、pandas_datareaderインストールしたメモ
https://pikucha.sakura.ne.jp/blog/2020/12/27/mac%E7%89%88blender%E3%81%AEpython%E3%81%ABpip%E3%80%81pandas_datareader%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E3%83%A1%E3%83%A2/

MacOSのPythonとBlenderのPythonが存在する。つまりBlenderのPythonにpandas_datareaderを個別に
インストール必要がある。Pipもインストールする

以下はターミナルにて、Blenderディレクトリで実行した例である

(1)pipのインストール

ディレクトリのファイルを確認する
get-pip.pyがあるはず。なければBlenderのバージョンディレクトリ(2.9とか3.0とか)が違うか、グーグル先生に聞く。
>あった
(base) ToshironoiMac:bin toshiromaseda$ ls
get-pip.py python3.9

(2)次にget-pip.pyを実行

(3)pandas_datareaderをpipでインストール

/Applications/Blender.app/Contents/Resources/3.0/python/bin/pip install pandas_datareader

pythonでlocalからGoogle Driveへファイルアップロード、テスト中

環境:MacOS
Python
Anaconda、JupiterLab(結果はJupyterLabでは実行できない)、Chrome
ターミナル(こっちでPython実行)

GoogleCloudPlatformの認証設定とJsonファイルのダウンロードが必要

目的:ローカルドライブのCSVをグーグルドライブにアップロードしたい

エラーになったスクリプト、動作しない

 

(1)ライブラリ、モジュールインストール

pip install google-api-python-client
pip install oauth2client
したあとで
WEBで拾ったPythonスクリプトをjupyterで実行したら、
以下のエラー ’client_secret.json’がないということか?


/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access credentials.json: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
(略)
InvalidClientSecretsError: (‘Error opening file’, ‘client_secret.json’, ‘No such file or directory’, 2)

(2)間違い

サービスアカウントキー(JSONファイル)の発行が必要らしい
参考
https://algorithm.joho.info/programming/python/google-spread-sheet-py/

GoogleCloudPlatformでプロジェクトを作成して、「ウェブアプリケーション」として
作成した。
https://console.developers.google.com/cloud-resource-manager
>>>これは後ほど間違いで「デスクトップアプリ」で作成する

そのJsonファイルをダウンロードして、実行するPyファイルと同じ階層に
入れておいてリネームしておく
yearhigh2022-4fe5fcXXXXXX.json(ファイル名は仮名)

client_secret.json

そして、スクリプト内のファイル名だけだと、No such fileになるので、フルパス+ファイル名にした。

(3)他のJsonファイルを作成

次のエラー

InvalidClientSecretsError: Invalid file format. See https://developers.google.com/api-client-library/python/guide/aaa_client_secrets Expected a JSON object with a single property for a “web” or “installed” application」

たぶん(2)で取得したJsonファイルではだめらしい。
他のJsonファイルを作成してみる。

スプレッドシートのキーではなくて、ドライブのキーを作成してみる。2022/03/08
https://dev.classmethod.jp/articles/google-spreadsheet-append-csv-from-command-line/

OAuth 2.0 クライアント IDのキーをダウンロードした。
画面の右側に操作という項目があるので、その下にダウロードアイコン(下矢印)をクリックすると
ダウンロードできた。
「client_secret_XXXX.apps.googleusercontent.com.json」というファイルがダウンロードできた。
これをリネームすればよさそう

(4)不要

(>>結果的に、アプリケーションの種類では「デスクトップアプリ」なので
このリダイレクトは不要になった)

次のエラー
Jsonファイルを作成したところまでできた。
「redirect_uris」についてなにか違うようだ。


InvalidClientSecretsError: Missing property “redirect_uris” in a client type of “web”.

https://stackoverflow.com/questions/48362621/oauth2client-clientsecrets-invalidclientsecretserror-missing-property-redirect

GoogleCloudPlatform画面のどこかにURIを設定するようだ

>GoogleCloudPlatform画面の「認証情報」のOAuth 2.0 クライアント IDの欄で
作成したウェブクライアントの編集を行う。

「ウェブ アプリケーション のクライアント ID」画面で
「承認済みのリダイレクト URI」を設定する
http://localhost:8080
そして再度、またJsonファイルをダウンロードする。
リネームした。

jupyterで実行すると、また別のエラーになった
「credentials.json」がないそうだ。2022/03/09


/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access credentials.json: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
usage: ipykernel_launcher.py [–auth_host_name AUTH_HOST_NAME]
[–noauth_local_webserver]
[–auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT …]]]
[–logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
ipykernel_launcher.py: error: unrecognized arguments: -f /Users/toshiromaseda/Library/Jupyter/runtime/kernel-ba689470-fac8-4b05-9082-70df85f8e27f.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2

空のファイルcredentials.jsonを作成する必要があるらしいので、
空のファイルcredentials.jsonをテキストエディタ(CotEditor)で作成した

(5)ターミナルコンソールでPython

jupyterで実行したらまたエラー


usage: ipykernel_launcher.py [–auth_host_name AUTH_HOST_NAME]
[–noauth_local_webserver]
[–auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT …]]]
[–logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
ipykernel_launcher.py: error: unrecognized arguments: -f /Users/toshiromaseda/Library/Jupyter/runtime/kernel-ba689470-fac8-4b05-9082-70df85f8e27f.json
An exception has occurred, use %tb to see the full traceback.

コマンドライン引数は jupyter では対応できないらしい
https://qiita.com/uenonuenon/items/09fa620426b4c5d4acf9

ということは、JupyterLabで実行しなければよいということか?
つまり、ターミナルコンソールでPythonで実行すればよいのかな?

(6)承認エラー

ターミナルで実行した。
するとChromeが開き、
「承認エラー
エラー 400: redirect_uri_mismatch
このアプリは Google の OAuth 2.0 ポリシーを遵守していないため、ログインできません。

となった。

参考
pydriveで「エラー 400: redirect_uri_mismatch」
https://awesome03.com/2021/01/10/pydrive%E3%81%A7%E3%80%8C%E3%82%A8%E3%83%A9%E3%83%BC-400-redirect_uri_mismatch%E3%80%8D/

GoogleCloudPlatform画面で
アプリケーションの種類では「デスクトップアプリ」を選択する必要があるらしい

GoogleCloudPlatform画面で「+認証情報を作成」をクリック
OAuth 2.0 クライアント IDでアプリケーションの種類では「デスクトップアプリ」を選択
して作成した。
そして、Jsonファイルをダウンロード
client_secret.jsonにリネームした

(7)承認エラー エラー 403: access_denied

実行したらChromeが開き、

アカウント(自分が持ってるアカウント)の選択で、アカウントを選択したらアクセス権がないらしい

承認エラー
エラー 403: access_denied
The developer hasn’t given you access to this app. It’s currently being tested and it hasn’t been verified by Google. If you think you should have access, contact the developer (maXXX@gmail.com).

アクセス権を与えてみる
https://console.developers.google.com/cloud-resource-manager

サービスアカウントの管理から
サービス アカウントでグーグルのアカウントを追加した。
いつも使っているグーグルメール mas***@gmail.com

画像

でもだめだったので
OAuth 同意画面
にテストユーザとして
グーグルアカウントのメールを追加した。

いくつかの画面が表示された
そしてChrome画面に

The authentication flow has completed.

もう一度ターミナルで実行すると
python upload_gdrive.py
Chromeには何も表示されず
ターミナル側にエラーになってた。


Traceback (most recent call last):
File “upload_gdrive.py”, line 32, in <module>
fields=’id’).execute()
File “/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/googleapiclient/_helpers.py”, line 131, in positional_wrapper
return wrapped(*args, **kwargs)
File “/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/googleapiclient/http.py”, line 901, in execute
_, body = self.next_chunk(http=http, num_retries=num_retries)
File “/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/googleapiclient/_helpers.py”, line 131, in positional_wrapper
return wrapped(*args, **kwargs)
File “/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/googleapiclient/http.py”, line 1021, in next_chunk
raise ResumableUploadError(resp, content)
googleapiclient.errors.ResumableUploadError: <HttpError 403 when requesting None returned “Insufficient Permission: Request had insufficient authentication scopes.”. Details: “[{‘domain’: ‘global’, ‘reason’: ‘insufficientPermissions’, ‘message’: ‘Insufficient Permission: Request had insufficient authentication scopes.’}]”>

このエラーを分析する

(8)エラー

2022/03/10
わかったスコープのURLがReadOnlyだ。ファイルをアップロードするからリードオンリーではだめなはず。
スクリプトに記載のURLがreadonly、読み込みのみ。アップロードするからReadではだめ。
SCOPES = ‘https://www.googleapis.com/auth/drive.metadata.readonly’
#https://www.googleapis.com/auth/drive
#https://www.googleapis.com/auth/drive.file
#https://www.googleapis.com/auth/drive.appdata
#https://www.googleapis.com/auth/drive.apps.readonly

参考8
[Python]GoogleDriveAPIの基本的な使い方
https://zenn.dev/wtkn25/articles/python-googledriveapi-operation
>>わかりやすい
最初にWebで拾ったスクリプトの内容が怪しい、自分の思うように動作しない
ように思えたので、「参考8」サイトを参考にして作り直す。

現在、2022/03/13作業中で、まだ実行すらしていない状態のスクリプト、参考8から抜粋した。

でも実行したらエラー。今ここ。

 

エラー

「Traceback (most recent call last):
File “uploadgoogledrive2.py”, line 26, in <module>
fields=’id’).execute()
File “/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/googleapiclient/_helpers.py”, line 131, in positional_wrapper
return wrapped(*args, **kwargs)
File “/Users/toshiromaseda/opt/anaconda3/lib/python3.7/site-packages/googleapiclient/http.py”, line 937, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/drive/v3/files?fields=id&alt=json returned “Insufficient Permission: Request had insufficient authentication scopes.”. Details: “[{‘domain’: ‘global’, ‘reason’: ‘insufficientPermissions’, ‘message’: ‘Insufficient Permission: Request had insufficient authentication scopes.’}]”>

>たぶんグーグルドライブのフォルダーのパーミッションの読み書きとかの設定が、
違っているのだろう。
またグーグル先生に頼る

(9)
Googleドライブの[設定]-> [アプリの管理]にリストされているアプリケーションを確認
認証しているスコープを確認

>>わかった。スコープの設定を飛ばしたから認証情報(/auth/drive 、auth/drive.file 等の設定)
がなかったのでエラーになってた。

もう一度認証情報を作成することにした。
作成のときにウィザードを選択

 

一度削除して、
設定して、再度Jsonファイルをダウンロードして、リネームした。client_secret.jsonにした
credentials.jsonも空のファイルにした。

2022/03/13、17:34

とりあえず、Chromeで認証まで進めた。
「$ python uploadgoogledrive2.py

Your browser has been opened to visit:

https://accounts.google.com/o/oauth2/auth?client_id=548555605276-j7kpa1otv5b387ekn3ndf6ktlp5aubs3.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&access_type=offline&response_type=code

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

–noauth_local_webserver

Authentication successful.
Traceback (most recent call last):
File “uploadgoogledrive2.py”, line 29, in <module>
print (‘Folder ID: %s’ % file.get(‘id’))
AttributeError: module ‘oauth2client.file’ has no attribute ‘get’

printのところでエラーになってるからとりあえずコメントにしておく
再度実行する


(10)成功、アップロードできた

「Traceback (most recent call last):
File “uploadgoogledrive2.py”, line 42, in <module>
file = drive_service.files().create(
AttributeError: ‘dict’ object has no attribute ‘files’」

dictオブジェクトにfielsアトリビュートがないらしい。でもそんなdictなんてしらない。

25行目で自分に代入しているので別のオブジェクトにしておく
drive_service = drive_service.files()

file = drive_service.files()
ターミナルから実行して、うまくいった。グーグルドライブの指定フォルダにCSVがアップロードできた

以下にうまく行ったコードを記入

Documents/2020年株関連/kabu_python/

uploadgoogledrive2.py

。不要なコードもある

最新版2022/03/22

2022年のユーチューブの未来は、小さな同好会ユーチューバタレント・地下アイドル化する

・結論

2022年以降はユーチューブは、衰退し収益化は難しくなる。
ユーチューバーは、素人タレント化、地下・地方アイドル化して、少数の小さな同好会みたいな
グループとして視聴者どうしの馴れ合いクラブ化する。
新しい視聴者は参加しにくくなって、視聴回数は減少。
あまりにも個別化したユーチューブの視聴者層によって、
広告を出す側は、ターゲットを絞りにくく、ユーチューブの広告料は減少するだろう。

・ユーチューブのTV化

東京キー局、衛星放送、NHKを含めて、話題となるテレビ番組が減少。
テレビを受信できるモニターを所有しない人も増えており、テレビ番組を視聴する人口が減少している。
その代わり、ユーチューブはすでに記録された動画だけではなく、ライブ放送が楽しめる。テレビを見る代わりに、ユーチューブを見る若者が増えている。
投げ銭のスパチャ収入を求めて、日夜ユーチューバーたちはライブ放送やプレミア放送にがんばっている。

その広告料は年々増加傾向にあるかわりに民法テレビ局の広告料は減少し、テレビ局の人員リストラが増加中。
番組の制作費用は次第に減少し、出演するタレントの出演料も減少するため、安い若手芸人が増えている。
よって、番組の質が低下して番組はつまらないものと変化した。

つまり、ユーチューブはテレビの代わりになりつつあり、テレビ局とユーチューブは逆転関係になるかもしれない。

・たけのこのように増えたユーチューバーたち

玉石混交のユーチューブ動画が多い。登録者数が、百万人を超えても知らないユーチューバーの数は多い。

一部の女性ユーチューバーは、若さの特権で、色気と肌の露出で視聴回数を稼ぐ。
株系ユーチューバーは、損失を自慢し、数百万、数千万円を負けたというネタ動画を投稿する。しかし、本当に損失を出しているかは不明。他人の不幸は蜜の味で視聴回数は増えてしまう。
大人が、小学生か中学生レベルのくだらない内容を、大人の資金力でネタ動画を作成する。似たようなネタ、内容が多く、ほとんどが他人のパクリ。

ユーチューバーは、ライブ放送でチャットに投稿する視聴者とのつながりを大事にするようになり、スパチャ欲しさに視聴者を大事にするユーチューバーたち。
ユーチューバーもスパチャをくれる視聴者や毎回見てくれる視聴者の名前を覚えるようになって親しくなる。
その後、視聴者どうしの馴れ合いクラブ化してしまうため、新しい視聴者は参加しにくくなってしまい、視聴回数は減少となるだろう。
いずれ、自然淘汰が行われ、人気がなく視聴回数が稼げないユーチューバーは増えていくだろう。広告収入が入らず、または視聴回数が増えないユーチューバーが増加しその後更新はされない。

・UUUMの株価の衰退が表すものは

中貫経営が示したものは、株価の下落。
他人が稼いだお金の一部を搾取する経営状態なのに、社員の数が異常に多い。
ユーチューバーのお手伝いと言いつつもほとんど何もしていないのに、利益の20%をピンはねする。
何もしないのに、お金だけを抜いていくUUUMの経営システムに怒りを覚えた所属ユーチューバーは続々と離反した。離れていくユーチューバーの数が増えるごとに、UUUMの株価は下落した。
経営者は、汗も努力もせずに収入だけを得ている。

株価は、2019年末に一時6000円〜7000円もあったが、2022/01/17現在で、600円から700円位になり、株主たちは泣いているだろう。
しかも配当もないので、持っていても損が増えてるだけ。

このUUUMの株価の衰退は、ユーチューブの衰退を表しているのかもしれない。
なお、株価は需給なので、予想に反して上昇したり下落したりする。その時は流れる方に乗ったほうがよい。株価予想はほとんど当たらない。企業の業績に関係なく需給で株価は上昇する。意外な銘柄が意外なニュースで上がるのでそのときは流れに従う。

・おもしろいものが生き残る

弱肉強食はどこの世界でも起きる。
おもしろいものが生き残る

 

 

 

excel マクロ メモ IFS 、IFの複数判定

セルに複数のIF条件文を入れたい時がある。入れ子にできるが非常に見づらくなる。そこで「IFS」がある


=IFS(E7>=B7,”Down”,F7<=B7,”UP”,TRUE,”–“)
「条件E7>=B7、処理”Down”」で対になる。左から優先判定されて条件が真ならそこで判定は終わる。
後ろの「TRUE,”–“」は、範囲外の判定のために使用
前2つのIF判定に該当しないときは、ハイフン2つを表示するという意味
なお約200以上の条件を追加できる(細かい数字は覚えていない)

=IFS(E7>=B7,soundAlert(1),F7<=B7,soundAlert(2),TRUE,”–“)
関数も利用できる。注意:ただし、更新できるセルは、当該マクロが設定されたセルに限られるかもしれない。つまり「他のセル」の値を変更とかできないかもしれない。

補足
=AND(IF,IF)
=OR(IF,IF)
みたいな記載条件もある。つまり演算子判定(IF AND IFみたいな)記載ではなく、カッコ内にAND,OR演算子が存在するみたいな条件文

ワンピース101巻、感想ネタバレ、12月3日発売

ワンピースの感想ネタバレ101巻

とうとう100感を超えたワンピースコミック。

ただ、一向に先に進まないので読むの疲れた気がする。またそろそろ断舎離する年齢に達しているので紙のコミックをやめて、キンドルなどの電子本にしようか検討中

以下、ネタバレ

戦い

ルフィーは生きていた

カイドウの娘ヤマト(自称おでん)とカイドウの戦い

モモの助はジュクジュクの実の能力により大人になり巨大な龍になる

次回は102巻。発売予定日はたぶん2022年3月か4月だろう

 

 

mysql、日付のみCURDATEを使うかDATE_FORMAT

now()だと日付と時刻が出力される
mysql> select now();
+———————+
| now() |
+———————+
| 2021-11-29 16:20:20 |
+———————+

SELECT DATE_FORMAT(now(), ‘%Y-%m-%d’) as hiduke
とすると日付がフォーマットされて
+————+
| hiduke |
+————+
| 2021-11-29 |
+————+

または

CURDATE()で今日の日付のみ

商品感想、小型ビデオカメラ、BOBLOV製【Sony307センサー搭載・フル1080P/30FPS】クリップ小型

小型ビデオカメラ、BOBLOV製

購入先:アマゾン
製品名:W1
商品の重量 ‎38 g
録画時間:約2時間
メモリ:64GB 付属

・感想

農作業のときの作業記録として使用。作業用エプロンの胸元に挟んで使用(カードサイズの板を使って下に向くのを防止)。写真は、おそらく合成で、ピッタリして緩み弛みがないように見えるが実際に胸ポケットに装着すると前に傾いてしまい、そのままではレンズが下の方を向いてしまう。私は期限切れクレジットカードを2枚縦に一部重なるように使用して長くした板に改良して挟んで使用している。
使用するPCはMac
カメラの価格約6000円だったので当たり外れがあるかもしれないが今の所は問題ない
Gopro9は約5,6万円だけど使う用途を分けて使うことになる。

長所:

とても軽く小さい(消しゴム大かチューインガム大サイズ)ので持ち運びが便利で、
クリップが挟めるところに固定できる。例えば胸ポケット、襟、帽子のつばとか。
(Gopro9も使用しているが、こっちは軽いと言ってもまだまだ重い。)
電源ONだけで記録開始。
映像ファイルのコピーはUSB2.0経由で接続する。充電もUSBを使用する。
音声のみの記録もできる

短所:

記録内容の確認は液晶表示がないのでその場ではできない(ソニーハンディカムはその点が便利)。
使用中に記録しているのか動作しているのか小さな点みたいな発光色でしかわからない。
日付は工場出荷状態で、別途テキストファイルに日付等の入力をしてPC経由でファイルをコピーする
手ブレ補正はない(動画編集ソフトの機能の手ブレ補正を使うことになる)。
動いている状態での使用はおすすめできない(やはりGoproが良さそう)
軽いとはいえ胸ポケットのたるみがあると下を向いてしまうので、カードサイズの補強板が必要
バッテリー交換はできない(と思う。分解すればできる?)
2時間を超える記録はできない
夜間や暗い場所での撮影が可能かどうか不明
レンズがむき出しなので、傷が付きやすそうで汚れがつきやすい
クリップの部分が長期間使用すると折れそう
小さく軽いので落としやすい、失くしやすい、落としたことに気づかないかもしれない。
単体で立たせて固定は不安定で、固定用の端子(三脚向け)はない

Blender2.9.3 損壊物理演算シミュレーション、物が壊れる

損壊(その物体のほぼ全体が壊れる)、破損(部分的に壊れる)をBlenderに搭載の物理演算衝突判定によりシミュレーションする設定を模索

厳密には、物体オブジェクトが衝突してから破片オブジェクトになるのではなく、
オブジェクトが損壊されたかのように事前に分割しておいてその状態から床に衝突して砕けるように見えるアニメーション。

使用するアドオンは、標準搭載だがPreferencesのアドオンで追加する必要がある。
Cellで検索して、Cell fractureをチェックする。

・使い方

(1)立方体(他の形状でもOK)rigidbody:activeと板(rigidbody:passive,静止)を作る
立方体はこのときに高めの位置に移動させておくと作業がしやすい
大きさはシミュレーションになれるまで大きさ1m程度にしておく。

(2)Boxを選択して、F3キー(検索Windowを表示)を押してCell fractureを検索して実行するか、ObjectメニューからQuick Effects reference のCell fractureを選択するとサブウィンドウが表示される。(Preferencesのアドオンで登録が必要)
破片オブジェクトを作成するための設定をする。
以下の内容で入力する。細かい部分はわからない。

画像

各種設定を入力する。設定は保存ができるので次回使用するときはその設定を選べる。以下の設定で106個の破片オブジェクトが作成される。選択したオブジェクトの形状により分割数は異なってくる。

重要なのは以下の設定を入れないと物体オブジェクトが損壊したように見えない。
Noize:1
Rando(不揃い)0.8〜1くらい

Mesh Dataの「Margin」は0.001になっていて、0.01くらいにすると破片の隙間ができるので便利かもしれない。

他にも数値を上げるほど破片オブジェクトが増える。あまり上げすぎないようにする。
またキャンセルがないので不用意にOK実行させない。作成されるオブジェクトが再帰的に増えるのでPCのファンが唸ってしまう。中止ボタンがないので終わるまで放置することになる。

(3)破片オブジェクトができたら、もとの立方体を隠し、分割された形状のサイズを少し小さくして隙間を作り、個別のオブジェクトが衝突しやすくする。

もとのBoxCubeは不用

Individual Originsを選択して >>追記、特に縮小する必要はなかった。そのままの破片形状で問題なかったのでこの処理は不要

Sキーを押して縮小する>>追記、特に縮小する必要はなかった。そのままの破片形状で問題なかったのでこの処理は不要

(4)ワイヤーフレーム状態から、立方体全体を選択して、どの破片オブジェクトでもよいのでShift+右クリック(左クリックのときもある)して1つ選択状態+全部選択状態にする。後で1つの設定を他オブジェクトに一括して設定コピーすることができる。(Object > rigidobody>copy from active)

 

Rigidbodyの設定 SurfaceResponseのFrictionを0.6〜0.8くらい

他にも以下を設定する
立方体
Rigidbody active
隣接する部分が近い場合は、
ここのMargin数値を小さくする。小さくしないと爆発するみたいにオブジェクト同士が干渉して弾き飛ぶ。0.001mを指定している。

 

減税の設定を他の破片へ一括コピーする copy from Active

 


Rigidbody passive

・シミュレーション確認

スペースキーを押してシミュレーションを開始。RigidBodyの場合、キーフレームを作成しなくても物理演算機能が働いて落下する。ただ、強制的な動きや力を加えたい場合は、SettingsのAnimatedにチェックしてキーフレームを設定することができる。またAnimatedはキーフレームに対応できるので、解除したいフレームでオフにできる。この機能により、途中のフレーム(位置)まであるオブジェクトを移動させて解除したいフレームでオフにすることでその後は物理演算機能が働いてアニメーションが作成される。例、ボールを水平方向に向けて投げて、レンガにぶつけるシーン

動きが激しすぎるときは、
シーンプロパティのRigidBodyWorldのSettingsのsubsteps per frame,  Solver iterations数値を上げると動きの変化がすくなくなる。ただし、処理が遅い。
オブジェクトの破片の動きが気になるときは、再度破片オブジェクトの作成からやり直す

 

・損壊の動きが正しくないとき

破片オブジェクトの間隔が狭いとき、板に接近する前に損壊してしまう。>数値を小さくする。
板をすり抜けてしまう。>板のRigidbody passive設定がない
シミュレーションが途中で終わる>フレームが足りないので増やす。200〜400Frame
動きが軽すぎる>重力や重さを増やす

・設定による損壊の変化

ここらへんは色々と数値を変えて試すしかない。

分割数を少なくしたい場合はRecursion,Souce Limitを0にすると分割数が少なくなる。簡易的に見せたい場合に都合がよい。 6個できる(最初の設定では106個できるので約10分の1)

Blender2.9.3、流体水の設定水がパイプから流れる

Blenderの使い方一覧

流体物理演算設定の例

水がパイプから流れる構成

球体、円柱パイプ(なんでもよい)、板(容器なんでもよい)レンダリングエンジンは、Cyclesが良いと思う。Eveeeでのレンダリングも水のシェーダーを変更することで水に見えるけどなんかプラスチックに見えるからCyclesが良さげ。MacEveeeでは透過ができないかも

ドメイン(流体演算領域)は、球体(水源)を選択して、メニューからQuickFluidを選択するとBOXが表示される。このBOXで流体の演算処理が行われる。なので実質的な水の受け皿容器は必要ないが、受け皿がないと不自然になる。

手順

  1. オブジェクトを作成する。球体(水源)、円柱パイプ(なんでもよい。水がでてくる源を支えるもの)、板(容器なんでもよい)
  2. 次に、球体を選択してQuickLiquidを実行する。これでドメインが作成される。
  3. 設定
  4. Bake
  5. テクスチャノード設定
  6. ライト、カメラ設定

 

後Meshにもチェックを入れたはず?

パイプは衝突判定

surface Thicknessに0.1-0.5くらいの数値を入れる

板に衝突判定、surface Thickness 0.1-0.5を入力する。

球体、水源

FlowType:Liquid

FlowBehaivior: Inflow(水が出る)

Initial Velocityについては通常はSouceでOK。軸方向に対して水が発生する方向を決めて圧力を上げたいときに設定する。今回はパイプの向きがY軸なのでY軸方向に水が強く出ていくようにした。

その後Bake(計算処理)をする。流体の計算には時間がかかる。Bakeした計算結果を使ってアニメーションをさせる。

レンダリングはCyclesだと思う。Win版Eveeeでの設定でも可能だけど、水がプラスチックか塗料に見えるからおすすめしないかも

Eveeeでの水のノード MacBlender2.9.3では透過がうまくできない

シェーダー画面でOptionタブからAlpha Brendを選ぶ