From e35d0dc09ec05b3e7a73fc9a8990c8cb0dc7862b Mon Sep 17 00:00:00 2001 From: qw_fuku Date: Tue, 20 Jan 2015 23:44:26 +0900 Subject: [PATCH] =?utf8?q?=E9=9D=A2=E3=81=AE=E6=96=B9=E5=90=91=E3=81=AF?= =?utf8?q?=E7=B6=AD=E6=8C=81=E3=81=97=E3=81=A6=E6=B3=95=E7=B7=9A=E3=81=A0?= =?utf8?q?=E3=81=91=E5=8F=8D=E8=BB=A2=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD?= =?utf8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj | 2 + .../LibQtGeoViewerCore.vcxproj.filters | 6 + Src/LibQtGeoViewerCore/MeshBuf.cpp | 15 +- Src/LibQtGeoViewerCore/MeshBuf.h | 2 +- Src/LibQtGeoViewerCore/SceneMain.cpp | 28 + Src/LibQtGeoViewerCore/SceneMain.h | 4 + Src/QtGeoViewer/FormMain.cpp | 33 +- Src/QtGeoViewer/FormMain.h | 1 + Src/QtGeoViewer/FormMain.ui | 5 + Src/QtGeoViewer/qtgeoviewer_ja.ts | 569 +++++++++++---------- Src/QtGeoViewer/translations/qtgeoviewer_ja.qm | Bin 11704 -> 11697 bytes 11 files changed, 368 insertions(+), 297 deletions(-) diff --git a/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj b/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj index c9ae3ab..ef32003 100644 --- a/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj +++ b/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj @@ -113,6 +113,7 @@ + Create Create @@ -299,6 +300,7 @@ + diff --git a/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj.filters b/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj.filters index 51ad863..b82ce88 100644 --- a/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj.filters +++ b/Src/LibQtGeoViewerCore/LibQtGeoViewerCore.vcxproj.filters @@ -124,6 +124,9 @@ Format + + Source Files + @@ -242,6 +245,9 @@ Format + + Header Files + diff --git a/Src/LibQtGeoViewerCore/MeshBuf.cpp b/Src/LibQtGeoViewerCore/MeshBuf.cpp index ea9b8f8..e44626f 100644 --- a/Src/LibQtGeoViewerCore/MeshBuf.cpp +++ b/Src/LibQtGeoViewerCore/MeshBuf.cpp @@ -109,8 +109,16 @@ void MeshBuf::UpdateBBox(void) } -void MeshBuf::FlipFace(void) +void MeshBuf::FlipFace(bool normal_only) { + for (lm::vec3f& n : m_Mesh.m_Normals) + { + n *= -1.0f; + } + + if (normal_only) + return; + for (lib_geo::BaseFace& f : m_Mesh.m_Faces) { std::reverse(f.m_VertIds.begin(), f.m_VertIds.end()); @@ -119,11 +127,6 @@ void MeshBuf::FlipFace(void) std::reverse(f.m_AdjEids.begin(), f.m_AdjEids.end()); } - for (lm::vec3f& n : m_Mesh.m_Normals) - { - n *= -1.0f; - } - for (lib_geo::VertAdj& a : m_Mesh.m_VertAdj) { std::reverse(a.m_AdjEids.begin(), a.m_AdjEids.end()); diff --git a/Src/LibQtGeoViewerCore/MeshBuf.h b/Src/LibQtGeoViewerCore/MeshBuf.h index 0d6c3db..04ed4be 100644 --- a/Src/LibQtGeoViewerCore/MeshBuf.h +++ b/Src/LibQtGeoViewerCore/MeshBuf.h @@ -114,7 +114,7 @@ public: return m_Mesh.m_Verts.size(); } - void FlipFace(void); + void FlipFace(bool normal_only); void SwapVertSelect(int vidx); void SetVertSelect(int vidx, bool select); diff --git a/Src/LibQtGeoViewerCore/SceneMain.cpp b/Src/LibQtGeoViewerCore/SceneMain.cpp index 685a9e6..485ec1a 100644 --- a/Src/LibQtGeoViewerCore/SceneMain.cpp +++ b/Src/LibQtGeoViewerCore/SceneMain.cpp @@ -529,3 +529,31 @@ void SceneMain::UpdateCrossSectionIfRequire(bool force_update) } } } + +std::vector SceneMain::GetCurSelMeshes(void) +{ + MeshBuf* mbuf = GetPrimaryMeshbuf(); + if (mbuf != NULL) + std::vector(1, mbuf); + + GeomObject* geo = GetPrimaryObject(); + std::vector mv; + if (geo != NULL) + { + for (MeshBuf& m : geo->m_MeshAry) + { + mv.push_back(&m); + } + } + + return mv; +} + +void SceneMain::FlipCurselFace(bool normal_only) +{ + std::vector mv = GetCurSelMeshes(); + for (MeshBuf* m : mv) + { + m->FlipFace(normal_only); + } +} diff --git a/Src/LibQtGeoViewerCore/SceneMain.h b/Src/LibQtGeoViewerCore/SceneMain.h index 3682dfd..582b1ea 100644 --- a/Src/LibQtGeoViewerCore/SceneMain.h +++ b/Src/LibQtGeoViewerCore/SceneMain.h @@ -120,6 +120,10 @@ public: GeomObject* CreateNewGeometry(void); + std::vector GetCurSelMeshes(void); + + void FlipCurselFace(bool normal_only); + private: void AddObjMeshsToSceneEachObject(const std::string& filename, lib_geo::ObjMesh& obj_mesh, std::vector& mesh_ary); void AddObjMeshsToSceneEachGroup(const std::string& filename, lib_geo::ObjMesh& obj_mesh, std::vector& mesh_ary); diff --git a/Src/QtGeoViewer/FormMain.cpp b/Src/QtGeoViewer/FormMain.cpp index eebdc0d..b1ab9c3 100644 --- a/Src/QtGeoViewer/FormMain.cpp +++ b/Src/QtGeoViewer/FormMain.cpp @@ -627,6 +627,7 @@ void FormMain::InitContextMenu(void) << ui.actionSelObjectDelete << ui.actionSelObjectReload << ui.actionSelObjectFlipFace + << ui.actionSelObjectFlipNormal << ui.actionSelObjectOpenDir << ui.actionActionSelObjectShowOnlyOnce << ui.actionSelObjectTriangulate; @@ -1525,25 +1526,29 @@ void FormMain::on_actionSelObjectVertexOnlyMode_triggered() void FormMain::on_actionSelObjectFlipFace_triggered() { - GeomObject* geo = m_Scene.GetPrimaryObject(); - MeshBuf* mbuf = m_Scene.GetPrimaryMeshbuf(); - if (mbuf == NULL && geo == NULL) - return; + m_Scene.FlipCurselFace(false); - if (mbuf != NULL) - { - mbuf->FlipFace(); - } - else + ui.GLWidgetMain->makeCurrent(); + std::vector mv = m_Scene.GetCurSelMeshes(); + for (MeshBuf* m : mv) { - for (MeshBuf& m : geo->m_MeshAry) - { - m.FlipFace(); - } + m_View3d.ReleaseRenderbuffer(m); } + ui.GLWidgetMain->doneCurrent(); + + updateView_All(); +} + +void FormMain::on_actionSelObjectFlipNormal_triggered() +{ + m_Scene.FlipCurselFace(true); ui.GLWidgetMain->makeCurrent(); - m_View3d.ReleaseRenderbuffer(mbuf); + std::vector mv = m_Scene.GetCurSelMeshes(); + for (MeshBuf* m : mv) + { + m_View3d.ReleaseRenderbuffer(m); + } ui.GLWidgetMain->doneCurrent(); updateView_All(); diff --git a/Src/QtGeoViewer/FormMain.h b/Src/QtGeoViewer/FormMain.h index 7d4db01..21f7cc2 100644 --- a/Src/QtGeoViewer/FormMain.h +++ b/Src/QtGeoViewer/FormMain.h @@ -244,6 +244,7 @@ private slots: void on_actionSelObjectVertexOnlyMode_triggered(); void on_actionSelObjectFlipFace_triggered(); void on_actionSelObjectOpenDir_triggered(); + void on_actionSelObjectFlipNormal_triggered(); void on_actionShowOnlySelected_triggered(); void on_actionSelObjectTriangulate_triggered(); diff --git a/Src/QtGeoViewer/FormMain.ui b/Src/QtGeoViewer/FormMain.ui index 9bd245f..f9dd72e 100644 --- a/Src/QtGeoViewer/FormMain.ui +++ b/Src/QtGeoViewer/FormMain.ui @@ -2184,6 +2184,11 @@ &FlipFace + + + Flip&Normal + + true diff --git a/Src/QtGeoViewer/qtgeoviewer_ja.ts b/Src/QtGeoViewer/qtgeoviewer_ja.ts index fa4ffae..30da06e 100644 --- a/Src/QtGeoViewer/qtgeoviewer_ja.ts +++ b/Src/QtGeoViewer/qtgeoviewer_ja.ts @@ -319,10 +319,10 @@ - - - - + + + + Clear @@ -330,15 +330,15 @@ - - - + + + X - + Matcap @@ -366,8 +366,8 @@ - - + + ... @@ -382,74 +382,74 @@ 読み込み時にオブジェクト分離 - SplitGroup - 読み込み時にグループ分離 + 読み込み時にグループ分離 - + ShowOnlySelect 選択形状のみ表示 - - + + + Del - + &File ファイル(&F) - - + + Print - + OpenR&ecent 最近開いたファイル(&E) - + &Window ウィンドウ(&W) - + &View 表示(&V) - + &Acceleration 高速化設定(&A) - + &Camera カメラ(&C) - + &Geometry 形状(&G) - + &UV - + &Shading - + &Options 補助表示(&O) @@ -458,373 +458,373 @@ ダイアログ(&D) - + &Texture テクスチャ(&T) - + &CreateSample サンプルテクスチャ(&C) - + Op&eration 操作(&E) - + &Config 設定(&C) - + &Postproc - + &Elements 要素(&E) - + camera - + Add - + Animation アニメーション - - + + toolBar - + scene - + EnvMap - + Env&Reflection - - + + Load from file - + &Shadow 影(&S) - + S&oftShadow ソフトシャドウ(&O) - + Coordinate 座標系 - + Load Preset - - + + P - + Grid/Axis グリッド/座標軸 - + - - + + - + LightPower ライト照度 - - - - + + + + Reset - - - - + + + + < - + HoleAroundCursor カーソル周囲に穴をあける - + ShowOnlyAroundCursor カーソルの周囲のみ表示 - + DOF Pint / Range 被写界深度距離/範囲(DOF使用時) - + &Open 開く(&O) - + Ctrl+O - + E&xit 終了(&X) - + Ctrl+Q - + &Face 面(&F) - + Ctrl+E - + &Wire ワイヤーフレーム(&W) - + Ctrl+W - + &Axis 座標軸(&A) - + &Ground グリッド(&G) - + &LightPos 光源の位置(&L) - + UV - + F6 - + &Lighting ライティング(&L) - + &DirectionalLight &Directional 平行光源(&D) - + DirectionalLight Directional 平行光源 - + &Texture3D テクスチャ(3D)(&T) - + Texture3D - + &Culling カリング(&C) - + &Cull Front/Back カリング方向反転(&C) - + ToolBar View - + &Front - + Ctrl+1 - + &Left - + Ctrl+3 - + &Top - + Ctrl+7 - + R&eset clip range クリップ範囲をリセット(&E) - + Ctrl+0 - + &Pers - + Ctrl+9 - + Dual - + F7 - + 3D - + F5 - + Material List - + Ctrl+Alt+L - + &Vert 頂点(&V) - + &Vid 頂点番号(&V) - + &VidTopMost 頂点インデックスを前面表示(&V) - + Centering センタリング - + AutoResize 自動リサイズ - + &Clear クリア(&C) - + &FitView @@ -834,524 +834,541 @@ - + &Visible 表示(&V) - + VertexOnlyMode 頂点のみのオブジェクト - + &AddSample サンプル形状追加(球)(&A) - + &ReloadSelObject 選択形状を再読み込み(&R) - + Object List - + Ctrl+Alt+O - + &Phong - + Create Check - + Create Stripe V - + &AutoFit - + ResetView - + &MiniAxis 座標軸(小)(&M) - + Repeat - + &WireColor ワイヤーフレームの色(&W) - + &DefaultMatColor &FaceColor 標準マテリアルの色...(&D) - + SingleView - + QuadView - + &Custom - + &HighlightSelected 選択形状をハイライト(&H) - + Options オプション - + Ctrl+Alt+P - + PrintPreview - + &UseDefaultMaterial &FixMaterial(Silver) 標準マテリアルを使用(&U) - + &DoubleSideShading 両面ライティング(&D) - + &Normal(Vert) 頂点の法線(&N) - + &FlipFace 表裏反転(&F) - + + Flip&Normal + &FlipNormal + 法線反転(&N) + + + Tumble - + Camera List - + Ctrl+Alt+C - + Save Camera - + &LookPos 注視点(&L) - + Ctrl+Shift+C - + LookOrigin 注視点を原点に移動 - + Ctrl+5 - + Projection Ortho 平行投影 - + Ctrl+* - + Projection Pers 透視投影 - + Ctrl+/ - + CustomShader - + &Fid 面インデックス(&F) - + &CloseVert 頂点選択(&C) - + &RenderTime 描画速度(&R) - + &CameraRange カメラのクリップ範囲(&C) - + &CameraRecords カメラの記録位置を表示(&C) - + &RotateCamera カメラの自動回転(&R) - + &BBox - + CrossSectionDlg 断面 - + Ctrl+Alt+V - + ToolBar Options - + &HighlightMaterial 選択マテリアルをハイライト(&H) - + SelectNext 前の形状を選択 - + F3 - + SelectPrev 次の形状を選択 - + F2 - + SwitchVisible 表示/非表示切り替え - + Ctrl+V - + &CoverageTransparent 透過(Coveradge)(&C) - + &Multisample マルチサンプル(&M) - + Add&GroundPlane サンプル形状追加(平面)(&G) - - + + &DepthColor - + Check - + Stripe_V - + Stripe_H - + Mipmap ミップマップ - + Compress 圧縮テクスチャ - + &Shadowmap - + &ShadowmapBuffer - + &Envmap - + Wire&DispList - + &RotateLight ライトの自動回転(&R) - + &VertexBuilder - + BBox&Range - + &FaceVBO - + &FullScreen フルスクリーン(&F) - + Alt+Shift+Return - + &ResetConfig 初期設定に戻す(&R) - + &FlipY 上下反転(&F) - + &BackGroundColor 背景色...(&B) - + Scene Panel - + Ctrl+Alt+S - + &FlipMouseMR マウスの中/右ボタンを反転(&F) - + &NormalColor - + &Integrate - + &IndexColorMode インデックスカラーマテリアル(&I) - + &Matcap - + Open&Appdir アプリケーションフォルダを表示(&A) - + &OpenDir フォルダ表示(&O) - + HideAll 全て隠す - + Ctrl+H - + ShowAll 全て表示 - + Ctrl+Shift+H - + ShowOnlySelected 選択形状のみ表示 - + Ctrl+Shift+V - + + Ctrl+C + + + + ShowBaryCoord 重心座標表示 - + Check face barycoord closest to curosr カーソル最近傍点の重心座標を表示 - + SeparateSpecular 鏡面反射分離 - + ReleaseShader - + SelectCloseMat - + FBMaterial 表裏を色分け - + MeshBound - + ShowMeshBound メッシュの境界線 - + SyncLightToCamera 光源の位置をカメラに連動 - + + + PolylineIdx + + + + &ShowOnlyOnce 選択オブジェクトのみを表示状態に(&S) @@ -1381,282 +1398,282 @@ - + Load From Preset - + &DeleteSelected - + &DefaultGL - + &WireVBO - + ShowSelVertCoord 選択頂点の座標値 - + &Triangulate 面を三角形に分割(&T) - + FixTexture - + &Back - + Ctrl+Alt+1 - + &Right - + Ctrl+Alt+3 - + &Bottom - + Ctrl+Alt+7 - + Look&Center 注視点をシーン中心に移動(&C) - + FPSMode FPSモード - + Ctrl+F - + &ShowCursor 3Dカーソル(&S) - + &ResetCursor カーソル位置をリセット(&R) - + CursorCoord カーソルの座標値 - + CursorAxis カーソル軸を表示 - + Measure メジャー - + ResetMeasure メジャーをリセット - + ToolBar Operation - + MeasureXYZ メジャーの成分を表示 - + Polyline - + PolylineLen - + PolylineW&hl - + &PyScript - + Ctrl+Alt+R - + &Console - + Ctrl+Alt+M - + ShowSelVertIdx 選択頂点を透過表示 - + ClearVertSelect 頂点選択をリセット - + Ctrl+D - + &About QtGeoViewerについて(&A) - + &Association 関連付け(&A) - + PickTransparent 透過選択 - + LookDepth 注視点を形状表面に移動 - + CursorToDepth カーソルを形状表面に配置 - + Open&ConfigDir 設定ファイルを表示(&C) - + Look3DCursor 注視点を3Dカーソルに移動 - + FlatShading フラットシェーディング - + SaveImageToMydoc マイドキュメントに画像を出力 - + Ctrl+P - + &None - + &Antialias - + &Border - + DepthOf&Field - + Depth&LayerColor - + AddCrossSectionRecord 断面を記録 - + ClearCrossSectionRecord 断面の記録をリセット - + CameraMeasure カメラメジャー - + ShowVertex2d - + ShowImage2d - + UseFixTexture - + MeasureLen メジャーの長さ @@ -1761,10 +1778,10 @@ - MatcapSelectDlg + PresetSelectDlg - - MatcapSelectDlg + + PresetSelectDlg @@ -1821,27 +1838,27 @@ View3D - + L=rot camera horizontal - + L=range select, R=range zoom - + L=move cursor, R=move measure - + L=rot light, R=translate light - + L=rot camera, M=translate camera, R=forward back camera diff --git a/Src/QtGeoViewer/translations/qtgeoviewer_ja.qm b/Src/QtGeoViewer/translations/qtgeoviewer_ja.qm index f442ed135ef822266129cf9c2ff662fab4a23eab..ff2d722c2b83e40bfb1e44c58ac05843acfa9f65 100644 GIT binary patch delta 630 zcmWlWZAg<*7>4ijzVGJy(cZa*nIF?_u1$?vlr>Az)Fu^Zq(q@9l-bB;Wh#AO5yYT^ zB01`Uq#vb_^JB?=WFUc9{gGi=5(O4nf^9>%O1Snvt42>1;=b zt#)*M1n|69OW+i}Zt;27$we*l@yXqvna*bL~It^?flc(}&^SRG6$kJ5dF zIb;Dyi?Yq*BY^7?D|pZXBy_P7`xd~y%nn=HfOS*c#5|S-LFi|WraK>_$)rTAlyns z0eP>so9eQ8T<{hzDfxkqK=uaZMln@Vx9+(RV6-UxW^(U(p+v5~15ziH$;VIV$6;l@ z=scj7DZfVB0mm}mDSB8BZxAIs!jz~^j>x9*;b15 zg8DjvqRgmPXT6nx@L6399tT!M)NigfGFqjjO&p=9jeJ)0DHpZjS2Qh05w}ThA;Zc2 z(*C3Erszu&<(sClfjn}&XnG%BnVLzLAAJIn?&-cx%H0vu_pSF6w@oi^&LxBfedts# zO+eHC-VIWVE9U005FrH2E#uedTx#wtvC{sB|CC%T97{E5X<5OU%O9%Zx95-zH!6@L guLNbJrIiIwo^@B8IoHH@SyN&z`+yuWBY~H4OYq>6%uQr`vDUR$064Zw-l2KX18*W~z4~a!Y zVnoXE5|n=ELNzlT8d=Ohq6kc^sH86z!JzOzpA1w7|i$&D5usgDKRn*jF&+i!0J)_f3V=Cu!V-pc^Ho7++Y zKvqa>VSc5CM~eEWXGpZOY_?nsGN;mHn!NuWa9P9@bLw{_-}G@HO-P-&4=HlDH2AxQ z{7=lzxQEi^iUc{MB87YH7cHJq($Z`epOHcd@XL3wBLR$6&c zJm+~zLMaX|0Be2XA9w1nlt|}1kp4`W8GA(juo5pj1*qGUUz2A5eL@tPyzHRfP1A6Dm{780)0>YF6Ol;sjrrZll&DpEElKX^^l zbuL^|4tK>xg|z!fnRWC9iE@`UHteGvzF9vGEKy&f$#*{iDc3ZAFLBdPYP&X65dF_u zWq3V}Y0yUMZxKO<_UCE?{YJSh9J>JUpsi*4JiRTp-hhK@Oe7=^8yZhHCufWwbw}jf z)UFYu<4VlvI1w=FjWJ`<_-oAXvGjkDLB~Q@-5YACZQb77)D{vwR_FM#b+@JeDo~ze -- 2.11.0