1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Amazon WorkSpacesでFreeCAD 0.19 + FEM_FrontISTRを動かす①

Last updated at Posted at 2022-03-24

1. 背景

Amazon WorkSpacesはクラウド上で利用できるデスクトップ環境であり,利用者に依存せず同じ環境を提供できることから,授業や講習でも有用なものです.CAEの分野でも,CADソフトによる造形から構造解析までのデモンストレーションを行うものとして利用価値があります.

しかしながら,Amazon WorkSpacesの「無料利用枠の対象」であるWindowsは,デフォルトでは,オープンソースのCADであるFreeCADのバージョン0.17以前しか利用できません.オープンソースのソルバであるFrontISTRをFreeCADから利用可能にしたアドオンが昨年リリース1されましたが,こちらはFreeCAD 0.19で導入可能なため,対応していないという問題がありました.

この記事①では,Amazon WorkSpacesの新規立ち上げから解決策の実施までを紹介します.次いで②では,WorkSpaces上でのFEM_FrontISTR利用例と利用上の注意を見ていきます.

次の記事↓
(準備中)


2. 用語のざっくりとした説明

  • Amazon WorkSpaces: AWS (Amazon Web Services)の提供する仮想デスクトップ環境
  • FreeCAD: オープンソースのCADソフト.フリーのCAD
  • FEM_FrontISTR: オープンソースの構造解析ソルバ FrontISTR をFreeCADのアドオン化したもの.FreeCAD上でモデリング〜解析〜可視化を行える.

3. Amazon WorkSpacesの新規作成

AWSのアカウント作成まではできているとして,新規にWorkSpacesを作成する過程を順に見ていきます.

  1. AWS マネジメントコンソールの「WorkSpaces」へ行き,左上の「WorkSpacesを起動」を押します.
    1_launch-0.png
  2. 利用するディレクトリを選択します.新規作成 or 目的のものを選択し,次へ進みます.
    1_launch-1.png
  3. 利用するユーザーを追加します.「ユーザー名」「名」「姓」「Eメール」を入力し,「ユーザーの作成」を押します.
    1_launch-2-1.png
    作成されると画面下部に反映されますので,確認の上,次へ進みます.
    1_launch-2-2.png
  4. 利用するバンドル(マシンのタイプやOS)を選択します.今回は「無料利用枠の対象」である「Standard with Windows 10 (Server 2019 based),日本語」としました.画面下部の割り当てを確認し,次へ進みます.
    1_launch-3-1.png
    1_launch-3-2.png
  5. 設定の確認です.知らぬ間の課金を避けるため,「AutoStop」を選択します.画面下部のタグは任意です.
    1_launch-4-1.png
    1_launch-4-2.png
  6. WorkSpacesの最終確認です.設定事項に誤りがないことを確かめ,「WorkSpacesの起動」を押します.
    1_launch-5.png
  7. 新たに作成したものが一覧画面に反映されます.ステータスが「PENDING」のうちは準備中で利用できません.
    1_launch-6.png
  8. 数十分(公式では20分,それより短いことも長いことも)経つと,ステータスが「STOPPED」に変化し,利用可能になります.次項のはじめに示すメールの到着でこの準備完了を知ります.
    1_launch-7.png

4. Amazon WorkSpacesの立ち上げ

利用可能になったWorkSpacesを立ち上げる過程を順に見ていきます.

  1. 利用可能のお知らせは,ユーザー追加の際に入力したEメール宛に届きます.
    2_signin-1.png
  2. メールの「1」のリンクにアクセスし,パスワードを設定します.
    2_signin-2.png
  3. パスワード設定が完了すると,クライアントのダウンロード画面に自動で遷移します.適切なものを選択し,自身の環境にインストールしてください.
    2_signin-3.png
  4. クライアントを立ち上げ,メールの「2」に記載された登録コードを入力して次へ進みます.
    2_signin-4.png
  5. ユーザー名と先程設定したパスワードを入力し,次へ進みます.
    2_signin-5.png
  6. 入力情報に問題がなければ,起動の準備に入ります.
    2_signin-6.png
  7. しばらく待つと,Windows環境が立ち上がります.失敗した場合は,入力をやり直したり,マネジメントコンソールから再起動を試みたりします.
    2_signin-7.png

5. FreeCAD 0.19をとりあえず入れる

冒頭の文章より,ここまでの手順で作成したWindows環境ではFreeCAD 0.19を利用できないことは明らかですが,一度インストール〜起動をやってみましょう.

  1. ブラウザ2でFreeCADのダウンロードページにアクセスし,Windows版のインストーラを取得します.
    3_freecad-1.png
  2. 特別な設定はせずインストールを進めます.
    3_freecad-2.png
  3. 起動してみます.やはりローディング画面のみ表示されて落ちてしまいます.
    3_freecad-3.gif

6. 問題の解決へ

立ち上がらない問題の原因究明〜解決の過程を記録として残します.最終的な結論だけ知りたいという方は,次項 7 へ進んでください.

「amazon workspaces freecad 0.19」で検索すると,仮想環境で利用できないという似たような事例がFreeCAD Forum3で見つかりました.曰く,GPUが搭載されていないことが立ちがらない原因のようです.このスレッドの一番下,投稿者による解決策として示されていたのは

  • Mesa3Dのopengl32.dll4 (dllの形で配布されているもの)をbinフォルダ(=アプリケーションのあるところ)に入れる
  • Stack Overflowに解説あり

という内容でした.そこで,リンクされたStack Overflow5を確認すると,トップ回答の内容は

  • LLVM + Mesa3Dをビルドし,opengl32.dllを作成する
    C:\Windows\System32\opengl32.dllを置き換える
  • アプリケーションと同じフォルダに入れても動かない

というものでした.FreeCAD Forumの投稿者は自身でFreeCADをビルドしたのに対し,今はインストーラで入れたものを使いたいという違いがあります.しかし,Stack Overflowの方にしたがってビルドから行うのは面倒です.また,dllの置き場にも食い違いがあります.ひとまず試していくしかない...ということで以下のような作業を実験として行いました.

  1. dllがアプリケーションと同じところにあれば良い?と考え,C:\Windows\System32\opengl32.dllをFreeCADのexeがあるところにコピーしました.
    →何も変わりませんでした.後で気付きましたが,Stack Overflowの方でC:\...のものを「置き換え」(replace)と書かれているのに,「1. ビルドしたものか,2. C:\...のものを利用」と,このときは勘違いしていました.
  2. Stack Overflowを信用しC:\...のdllを置き換えるものの,ビルドは面倒なので配布されているMesa3Dのdllを利用することにしました.opengl32.dllなので32 bit用をダウンロードし,C:\Windows\System32\opengl32.dllを置換しました.このとき,Stack Overflowの次点の回答も参照し,C:\Windows\SysWOW64\opengl32.dllも置換しました.
    →FreeCADがローディング画面さえ出ずにエラーで落ちてしまいました.
  3. dllの名称は32であるものの,OSは64 bitなので64 bit用が必要ということに気付き,改めて64 bit用Mesa3Dのopengl32.dllをダウンロードしました.上と同様にSystem32SysWOW64内に配置しました.
    →無事起動しました!

7. FreeCAD 0.19を使えるようにする

解決策の結論を簡単に述べます.

  1. Mesa3D 64 bitのopengl32.dllを入手する
  2. Windowsにはじめから存在するopengl32.dllを置き換える

という2つの作業を行います.以下では,必要なファイルのダウンロード〜既存のファイルのセキュリティ変更・置換までの過程を順に見ていきます.

  1. Mesa3Dのダウンロードページにアクセスし,64 bit用を入手します.
    4_mod-1.png
  2. Mesa3Dは7z形式で圧縮されているため,解凍用に7-Zipも導入します.
    4_mod-2.png
  3. 7zを右クリック,「7-Zip」 > 「ここに展開」を選択し,解凍します.opengl32.dllREADME.txtの2ファイルが得られます.
    4_mod-3.png
  4. WorkSpacesでは,ユーザー環境はDドライブに存在します.エクスプローラー上部のバーにC:\と入力し,Cドライブにアクセスします.
    4_mod-4.png
  5. C:\Windows\System32の様子です.このopengl32.dllを置き換えます.
    4_mod-5.png
  6. WorkSpacesを利用するユーザーは管理者扱いであるものの,置き換えようとすると拒否されてしまいます.C:\...のdllのアクセス許可を変更することで対処します.
    4_mod-6.png
  7. C:\Windows\System32\opengl32.dllを右クリックし,プロパティを開きます.プロパティの「セキュリティ」タブの下部,「詳細設定」へ進みます.ここからの作業はシステムの一部を改変するものですので,自己責任で行ってください
    4_mod-7.png
  8. 所有者が「TrustedInstaller」となっているので,これを変更します.
    4_mod-8.png
  9. フィールドに自身のユーザー名(WorkSpaces作成時に設定したもの)を入力し,「名前の確認」を行います.入力した文字列を含むユーザーが複数存在する場合(例: user01,user02など)は,適切なものを選択してください.
    4_mod-9.png
  10. 所有者が変更されたことを確認し,「適用」を押します.
    4_mod-10.png
  11. 今度はプロパティの「セキュリティ」タブより,「編集」(アクセス許可の変更)へ進みます.図のような画面が表示されるので,上のユーザーなど一覧から「Users」を選択し,「フルコントロール」にチェックを入れてください(どうせ置換してしまうのでフルコントロールで良いです).すると,拒否されることなく,入手したMesa3Dのopengl32.dllで置き換えられます.一連の操作をC:\Windows\SysWOW64\opengl32.dllに対しても行ってください.
    (2022.3.31修正: 再検証したところ,SysWOW64内のファイルは置換しなくても良いことが判明しました.)
    4_mod-11.png
  12. Mesa3DのdllがSystem32SysWOW64 に配置された後,改めてFreeCAD 0.19を起動します.期待通り画面が表示されました.
    4_mod-12.gif

次の記事②↓では,FEM_FrontISTRアドオンを入れた上で実際にFreeCADを使っていきます.
(準備中)

  1. https://twitter.com/FrontISTR_/status/1385620772123668486?s=20&t=cUZxtej4PJZJfWadxSp8ew

  2. IE 11とFirefoxがあります.

  3. https://forum.freecadweb.org/viewtopic.php?t=42264

  4. https://fdossena.com/?p=mesa/index.frag

  5. https://stackoverflow.com/questions/48433641/does-azure-allow-app-need-opengl-any-way-to-go-around

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?