Normand Briere
2018-07-08 c8024a8777faf76727fbb6975ddf4fecb567b426
ObjEditor.java
....@@ -28,6 +28,8 @@
2828 iSendInfo
2929 //KeyListener
3030 {
31
+ boolean timeline;
32
+ boolean wasFullScreen;
3133
3234 // SCRIPT
3335
....@@ -238,7 +240,7 @@
238240 //if (!isDisplayable())
239241 //setUndecorated(true);
240242
241
- System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow());
243
+ //System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow());
242244 client = inClient;
243245 copy = localCopy;
244246 copy.editWindow = this;
....@@ -292,9 +294,11 @@
292294 //normalLensItem.addActionListener(this);
293295 cameraMenu.add(revertCameraItem = new MenuItem("Revert Camera"));
294296 revertCameraItem.addActionListener(this);
295
- cameraMenu.add(toggleFullItem = new CheckboxMenuItem("Full Screen"));
296
- toggleFullItem.addItemListener(this);
297
- toggleFullItem.setState(CameraPane.FULLSCREEN);
297
+ cameraMenu.add(toggleTimelineItem = new CheckboxMenuItem("Timeline"));
298
+ toggleTimelineItem.addItemListener(this);
299
+ cameraMenu.add(toggleFullScreenItem = new CheckboxMenuItem("Full Screen"));
300
+ toggleFullScreenItem.addItemListener(this);
301
+ toggleFullScreenItem.setState(CameraPane.FULLSCREEN);
298302 cameraMenu.add("-");
299303 cameraMenu.add(toggleTextureItem = new CheckboxMenuItem("Texture"));
300304 toggleTextureItem.addItemListener(this);
....@@ -522,18 +526,18 @@
522526 maxima.y = sel.toParent[3][1];
523527 maxima.z = sel.toParent[3][2];
524528 si.SendInfo(" Orig: " + maxima, "regular");
525
- maxima.x = sel.globalTransform[3][0];
526
- maxima.y = sel.globalTransform[3][1];
527
- maxima.z = sel.globalTransform[3][2];
528
- if (full)
529
- si.SendInfo(" Global Orig: " + maxima, "regular");
530529 maxima.x = sel.toParent[0][0];
531530 maxima.y = sel.toParent[1][1];
532531 maxima.z = sel.toParent[2][2];
533532 si.SendInfo(" Scale: " + maxima, "regular");
534
- maxima.x = sel.globalTransform[0][0];
535
- maxima.y = sel.globalTransform[1][1];
536
- maxima.z = sel.globalTransform[2][2];
533
+ maxima.x = sel.globalTransform[3][0];
534
+ maxima.y = sel.globalTransform[3][1];
535
+ maxima.z = sel.globalTransform[3][2];
536
+ if (full)
537
+ si.SendInfo(" Global Orig: " + maxima, "regular");
538
+ maxima.x = sel.globalTransform[0][0];
539
+ maxima.y = sel.globalTransform[1][1];
540
+ maxima.z = sel.globalTransform[2][2];
537541 if (full)
538542 si.SendInfo(" Global Scale: " + maxima, "regular");
539543 }
....@@ -593,6 +597,22 @@
593597 System.err.println("Couldn't insert initial text into text pane.");
594598 }
595599 }
600
+
601
+ void ToggleFullScreen()
602
+ {
603
+ if (CameraPane.FULLSCREEN)
604
+ {
605
+ frame.getContentPane().remove(/*"Center",*/bigThree);
606
+ framePanel.add(bigThree);
607
+ frame.getContentPane().add(/*"Center",*/framePanel);
608
+ } else
609
+ {
610
+ frame.getContentPane().remove(/*"Center",*/framePanel);
611
+ framePanel.remove(bigThree);
612
+ frame.getContentPane().add(/*"Center",*/bigThree);
613
+ }
614
+ cameraView.ToggleFullScreen();
615
+ }
596616
597617 private JTextArea createTextPane()
598618 {
....@@ -1158,10 +1178,14 @@
11581178 //JPanel worldPanel =
11591179 // new gov.nasa.worldwind.examples.ApplicationTemplate.AppPanel(null, true);
11601180 //worldPanel.setName("World");
1161
- /*JPanel*/ cameraPanel =
1162
- new JPanel(new BorderLayout());
1163
- cameraPanel.add(cameraView);
1181
+ centralPanel = new JPanel(new BorderLayout());
1182
+ timelinePanel = new JPanel(new BorderLayout());
1183
+ timelineMenubar = new timeflow.app.TimeflowApp().TimeFlowWindow(timelinePanel);
11641184
1185
+ centralPanel.add(cameraView);
1186
+ //frame.setJMenuBar(timelineMenubar);
1187
+ //centralPanel.add(timelinePanel);
1188
+
11651189 //topView.camera = ;
11661190 //frontView.camera = new Camera(2);
11671191 //sideView.camera = new Camera(3);
....@@ -1191,7 +1215,7 @@
11911215 gridPanel.add(cameraView);
11921216 gridPanel.add(XYZPanel);
11931217 */
1194
- gridPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, cameraPanel, XYZPanel); //new BorderLayout());
1218
+ gridPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centralPanel, XYZPanel); //new BorderLayout());
11951219 gridPanel.setContinuousLayout(true);
11961220 gridPanel.setOneTouchExpandable(true);
11971221 gridPanel.setDividerLocation(1.0);
....@@ -1244,15 +1268,15 @@
12441268 scrollpane.setWheelScrollingEnabled(true);
12451269 scrollpane.addMouseWheelListener(this); // Default not fast enough
12461270
1247
- /*JTabbedPane*/ jtp = new JTabbedPane();
1248
- jtp.add(scrollpane);
1271
+ /*JTabbedPane*/ scenePanel = new JTabbedPane();
1272
+ scenePanel.add(scrollpane);
12491273
1250
- jtp.add(FSPane = new cFileSystemPane(this));
1274
+ scenePanel.add(FSPane = new cFileSystemPane(this));
12511275
12521276 optionsPanel = new JPanel(new GridBagLayout());
12531277
12541278 optionsPanel.setName("Options");
1255
- jtp.add(optionsPanel);
1279
+ scenePanel.add(optionsPanel);
12561280
12571281
12581282 /*
....@@ -1275,7 +1299,7 @@
12751299 jtp.add(tree);
12761300 */
12771301
1278
- bigPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jtp, gridPanel);
1302
+ bigPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scenePanel, gridPanel);
12791303 bigPanel.setContinuousLayout(true);
12801304 bigPanel.setOneTouchExpandable(true);
12811305 bigPanel.setDividerLocation(0.8);
....@@ -1297,13 +1321,13 @@
12971321 aWindowConstraints.fill = GridBagConstraints.VERTICAL;
12981322 aWindowConstraints.weightx = 0;
12991323 aWindowConstraints.weighty = 1;
1300
- bigThree.add(jtp, aWindowConstraints);
1324
+ bigThree.add(scenePanel, aWindowConstraints);
13011325 aWindowConstraints.weightx = 1;
13021326 aWindowConstraints.gridwidth = 3;
13031327 // aConstraints.gridheight = 3;
13041328 aWindowConstraints.gridx = 1;
13051329 aWindowConstraints.fill = GridBagConstraints.BOTH;
1306
- bigThree.add(cameraPanel, aWindowConstraints);
1330
+ bigThree.add(centralPanel, aWindowConstraints);
13071331 aWindowConstraints.weightx = 0;
13081332 aWindowConstraints.gridx = 4;
13091333 aWindowConstraints.gridwidth = 1;
....@@ -1859,19 +1883,21 @@
18591883 }
18601884
18611885 // Images/textures
1862
- if (textures
1863
- && (filename.toLowerCase().endsWith(".jpg")
1864
- || filename.toLowerCase().endsWith(".jpeg")
1865
- || filename.toLowerCase().endsWith(".gif")
1866
- || filename.toLowerCase().endsWith(".png")
1867
- || filename.toLowerCase().endsWith(".tre")
1868
- || filename.toLowerCase().endsWith(".bmp")
1869
- || filename.toLowerCase().endsWith(".tga")
1870
- || filename.toLowerCase().endsWith(".sgi")
1871
- || filename.toLowerCase().endsWith(".tif")
1872
- || filename.toLowerCase().endsWith(".tiff")))
1886
+ if (filename.toLowerCase().endsWith(".jpg")
1887
+ || filename.toLowerCase().endsWith(".jpeg")
1888
+ || filename.toLowerCase().endsWith(".gif")
1889
+ || filename.toLowerCase().endsWith(".png")
1890
+ || filename.toLowerCase().endsWith(".tre")
1891
+ || filename.toLowerCase().endsWith(".bmp")
1892
+ || filename.toLowerCase().endsWith(".tga")
1893
+ || filename.toLowerCase().endsWith(".sgi")
1894
+ || filename.toLowerCase().endsWith(".tif")
1895
+ || filename.toLowerCase().endsWith(".tiff"))
18731896 {
1874
- DropTexture(filename);
1897
+ if (textures)
1898
+ DropTexture(filename);
1899
+ else
1900
+ CreateBillboard(filename);
18751901 continue;
18761902 }
18771903
....@@ -1880,6 +1906,60 @@
18801906 }
18811907
18821908 ResetModel();
1909
+ }
1910
+
1911
+ void CreateBillboard(String filename)
1912
+ {
1913
+ Object3D source = null;
1914
+ Object3D group = copy;
1915
+
1916
+ if (group.selection.size() > 0)
1917
+ {
1918
+ source = group.selection.get(0);
1919
+ }
1920
+
1921
+ Grid grid = new Grid(1,1);
1922
+ grid.material = null;
1923
+
1924
+ grid.toParent = LA.newMatrix();
1925
+ grid.fromParent = LA.newMatrix();
1926
+ LA.matYRotate(grid.toParent, Math.PI/2);
1927
+ LA.matXRotate(grid.toParent, -Math.PI/2);
1928
+ LA.matXRotate(grid.fromParent, Math.PI/2);
1929
+ LA.matYRotate(grid.fromParent, -Math.PI/2);
1930
+
1931
+ BillboardNode bb = new BillboardNode();
1932
+ bb.addChild(grid);
1933
+
1934
+ Object3D newgroup = new Object3D();
1935
+ newgroup.CreateMaterial();
1936
+
1937
+ File file = new File(filename);
1938
+ newgroup.name = file.getName();
1939
+ newgroup.addChild(bb);
1940
+
1941
+ Object3D main = newgroup;
1942
+
1943
+ main.SetPigmentTexture(filename);
1944
+
1945
+ if (source != null)
1946
+ {
1947
+ main.material = new cMaterial(source.material);
1948
+ if (main.projectedVertices.length < source.projectedVertices.length)
1949
+ {
1950
+ main.projectedVertices = new Object3D.cVector2[source.projectedVertices.length];
1951
+ }
1952
+
1953
+ for (int i=0; i<source.projectedVertices.length; i++)
1954
+ {
1955
+ main.projectedVertices[i].x = source.projectedVertices[i].x;
1956
+ main.projectedVertices[i].y = source.projectedVertices[i].y;
1957
+ }
1958
+
1959
+ main.texres = source.texres;
1960
+ }
1961
+
1962
+ makeSomething(newgroup, false);
18831963 }
18841964
18851965 Point location;
....@@ -2138,6 +2218,8 @@
21382218 {
21392219 Mocap sel = (Mocap) copy.selection.get(0);
21402220
2221
+ sel.SetCurrentBones(sel.frame);
2222
+
21412223 sel.fullname = fullname;
21422224
21432225 if (changename)
....@@ -2151,14 +2233,18 @@
21512233 sel.smoothed = false;
21522234
21532235 // if (!changename)
2154
- sel.SetPositionDelta(false, true, true, true/*?*/); // false
2236
+ //sel.SetPositionDelta(false, true, true, true/*?*/); // false
2237
+ sel.SetGlobalTransform();
2238
+ sel.LoadData();
2239
+ sel.Rewind();
2240
+ sel.Fade();
21552241 // sel.setPose(0);
21562242 refreshContents();
21572243 } else
21582244 {
21592245 mocap.Reset();
21602246 // new skeleton
2161
- makeSomething(mocap, false); // true);
2247
+ makeSomething(mocap, true); // true);
21622248 }
21632249 } catch (Exception e)
21642250 {
....@@ -2185,6 +2271,8 @@
21852271 {
21862272 Mocap sel = (Mocap) select;
21872273
2274
+ sel.SetCurrentBones(sel.frame);
2275
+
21882276 File file = new File(fullname);
21892277
21902278 // Mocap mocap = new Mocap("Mocap" + file.getName());
....@@ -2251,7 +2339,11 @@
22512339
22522340 if (!changename)
22532341 {
2254
- sel.SetPositionDelta(false, true, true, true/*?*/);
2342
+ //sel.SetPositionDelta(false, true, true, true/*?*/);
2343
+ sel.SetGlobalTransform();
2344
+ sel.LoadData();
2345
+ sel.Rewind();
2346
+ sel.Fade();
22552347 }
22562348
22572349 // sel.setPose(0);
....@@ -2890,20 +2982,36 @@
28902982 // june 2013 copy.HardTouch();
28912983 cameraView.repaint();
28922984 return;
2893
- } else if (event.getSource() == toggleFullItem)
2985
+ } else if (event.getSource() == toggleTimelineItem)
28942986 {
2895
- if (CameraPane.FULLSCREEN)
2987
+ timeline ^= true;
2988
+
2989
+ if (timeline)
28962990 {
2897
- frame.getContentPane().remove(/*"Center",*/bigThree);
2898
- framePanel.add(bigThree);
2899
- frame.getContentPane().add(/*"Center",*/framePanel);
2900
- } else
2901
- {
2902
- frame.getContentPane().remove(/*"Center",*/framePanel);
2903
- frame.getContentPane().add(/*"Center",*/bigThree);
2991
+ centralPanel.remove(cameraView);
2992
+ centralPanel.add(timelinePanel);
2993
+ frame.setJMenuBar(timelineMenubar);
2994
+ wasFullScreen = CameraPane.FULLSCREEN;
2995
+ if (!CameraPane.FULLSCREEN)
2996
+ ToggleFullScreen();
2997
+ toggleFullScreenItem.setEnabled(false);
29042998 }
2999
+ else
3000
+ {
3001
+ centralPanel.remove(timelinePanel);
3002
+ centralPanel.add(cameraView);
3003
+ frame.setJMenuBar(null);
3004
+ if (!wasFullScreen)
3005
+ ToggleFullScreen();
3006
+ toggleFullScreenItem.setEnabled(true);
3007
+ }
3008
+
29053009 frame.validate();
2906
- cameraView.ToggleFullScreen();
3010
+ return;
3011
+ } else if (event.getSource() == toggleFullScreenItem)
3012
+ {
3013
+ ToggleFullScreen();
3014
+ frame.validate();
29073015
29083016 return;
29093017 } else if (event.getSource() == toggleRandomItem)
....@@ -3152,9 +3260,9 @@
31523260 cameraView.RevertCamera();
31533261 cameraView.repaint();
31543262 return;
3155
- } else if (event.getSource() == textureButton)
3156
- {
3157
- return; // true;
3263
+// } else if (event.getSource() == textureButton)
3264
+// {
3265
+// return; // true;
31583266 } else // combos...
31593267 if (event.getSource() == texresMenu)
31603268 {
....@@ -3481,8 +3589,11 @@
34813589
34823590 void SnapObject()
34833591 {
3484
- Object3D obj = (Object3D)copy.selection.elementAt(0);
3485
- SnapObject(obj);
3592
+ if (copy.selection.size() > 0)
3593
+ {
3594
+ Object3D obj = (Object3D)copy.selection.elementAt(0);
3595
+ SnapObject(obj);
3596
+ }
34863597 }
34873598
34883599 void SnapObject(Object3D obj)
....@@ -3596,7 +3707,7 @@
35963707
35973708 if (obj.parent != null)
35983709 {
3599
- obj.parent.TransformToWorld(interest);
3710
+// obj.parent.TransformToWorld(interest);
36003711 }
36013712
36023713 if (!CameraPane.TRACK)
....@@ -4376,7 +4487,8 @@
43764487 MenuItem revertCameraItem;
43774488 CheckboxMenuItem toggleLiveItem;
43784489 MenuItem stepItem;
4379
- CheckboxMenuItem toggleFullItem;
4490
+ CheckboxMenuItem toggleFullScreenItem;
4491
+ CheckboxMenuItem toggleTimelineItem;
43804492 CheckboxMenuItem toggleRenderItem;
43814493 CheckboxMenuItem toggleDebugItem;
43824494 CheckboxMenuItem toggleFrustumItem;
....@@ -4403,11 +4515,13 @@
44034515 JSplitPane gridPanel;
44044516 JSplitPane bigPanel;
44054517 JPanel bigThree;
4406
- JTabbedPane jtp;
4407
- JPanel cameraPanel;
4518
+ JTabbedPane scenePanel;
4519
+ JPanel centralPanel;
4520
+ JPanel timelinePanel;
4521
+ JMenuBar timelineMenubar;
44084522 JSplitPane framePanel;
44094523 JTextArea/*Field*/ nameField;
4410
- cButton textureButton;
4524
+ //cButton textureButton;
44114525 cButton okButton;
44124526 cButton applyButton;
44134527 cButton cancelButton;