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 {
....@@ -692,7 +712,7 @@
692712 protected static ImageIcon createImageIcon(String path,
693713 String description)
694714 {
695
- java.net.URL imgURL = GraphreeD.class.getResource(path);
715
+ java.net.URL imgURL = GrafreeD.class.getResource(path);
696716 if (imgURL != null)
697717 {
698718 return new ImageIcon(imgURL, description);
....@@ -1107,7 +1127,7 @@
11071127 //frontScroll.setLabel("------------------------------ XZ (front) ---------------------------------------------------");
11081128 //sideScroll.setLabel("------------------------------- YZ (side) ---------------------------------------------------");
11091129
1110
-// GridBagConstraints gbc = (GridBagConstraints) GraphreeD.clone(aConstraints);
1130
+// GridBagConstraints gbc = (GridBagConstraints) GrafreeD.clone(aConstraints);
11111131 Camera cam = GetCamera(copy, 0);
11121132
11131133 Composite cams = null;
....@@ -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;
....@@ -1334,7 +1358,7 @@
13341358 frame.getContentPane().add(/*"Center",*/framePanel);
13351359 //frame.getContentPane().add(/*"Center",*/ worldPane);
13361360
1337
-// aConstraints = gbc; // (GridBagConstraints) GraphreeD.clone(gbc);
1361
+// aConstraints = gbc; // (GridBagConstraints) GrafreeD.clone(gbc);
13381362
13391363 frame.setSize(1024, 768);
13401364 frame.show();
....@@ -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);
....@@ -2345,7 +2437,7 @@
23452437
23462438 void ImportJME(com.jmex.model.converters.FormatConverter converter, String ext, String dialogName)
23472439 {
2348
- if (GraphreeD.standAlone)
2440
+ if (GrafreeD.standAlone)
23492441 {
23502442 /**/
23512443 FileDialog browser = new FileDialog(frame, dialogName, FileDialog.LOAD);
....@@ -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 {
....@@ -3183,8 +3291,8 @@
31833291
31843292 CameraPane.ANIMATION ^= true;
31853293
3186
- GraphreeD.wav.cursor = 0;
3187
- GraphreeD.wav.loop = 0;
3294
+ GrafreeD.wav.cursor = 0;
3295
+ GrafreeD.wav.loop = 0;
31883296 }
31893297 } else
31903298 {
....@@ -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)
....@@ -4085,7 +4196,7 @@
40854196
40864197 void load() // throws ClassNotFoundException
40874198 {
4088
- if (GraphreeD.standAlone)
4199
+ if (GrafreeD.standAlone)
40894200 {
40904201 FileDialog browser = new FileDialog(frame, "Load", FileDialog.LOAD);
40914202 browser.show();
....@@ -4190,7 +4301,7 @@
41904301
41914302 void saveAs()
41924303 {
4193
- if (GraphreeD.standAlone)
4304
+ if (GrafreeD.standAlone)
41944305 {
41954306 FileDialog browser = new FileDialog(frame, "Save As", FileDialog.SAVE);
41964307 browser.setVisible(true);
....@@ -4213,10 +4324,20 @@
42134324
42144325 Object3D object = copy.selection.get(0);
42154326
4327
+ FileObject fileobj = null;
4328
+
4329
+ if (object instanceof FileObject)
4330
+ fileobj = (FileObject)object;
4331
+
42164332 if (object.fileparent != null)
42174333 {
4218
- FileObject fileobj = (FileObject) object.fileparent;
4334
+ assert(fileobj == null);
42194335
4336
+ fileobj = (FileObject) object.fileparent;
4337
+ }
4338
+
4339
+ if (fileobj != null)
4340
+ {
42204341 System.out.println("WriteObject " + object + " : " + fileobj.name);
42214342 WriteObject(object, fileobj.name);
42224343 }
....@@ -4259,7 +4380,7 @@
42594380 }
42604381 }
42614382 else
4262
- //if (GraphreeD.standAlone)
4383
+ //if (GrafreeD.standAlone)
42634384 {
42644385 FileDialog browser = new FileDialog(frame, "Export", FileDialog.SAVE);
42654386 browser.setVisible(true);
....@@ -4291,7 +4412,7 @@
42914412 Object3D objectparent = obj.parent;
42924413 obj.parent = null;
42934414
4294
- Object3D object = (Object3D) GraphreeD.clone(obj);
4415
+ Object3D object = (Object3D) GrafreeD.clone(obj);
42954416
42964417 obj.parent = objectparent;
42974418
....@@ -4325,7 +4446,7 @@
43254446 buffer.append("background { color rgb <0.8,0.8,0.8> }\n\n");
43264447 cameraView.renderCamera.generatePOV(buffer, bnds.width, bnds.height);
43274448 copy.generatePOV(buffer);
4328
- if (GraphreeD.standAlone)
4449
+ if (GrafreeD.standAlone)
43294450 {
43304451 FileDialog browser = new FileDialog(frame, "Export POV", 1);
43314452 browser.show();
....@@ -4366,7 +4487,8 @@
43664487 MenuItem revertCameraItem;
43674488 CheckboxMenuItem toggleLiveItem;
43684489 MenuItem stepItem;
4369
- CheckboxMenuItem toggleFullItem;
4490
+ CheckboxMenuItem toggleFullScreenItem;
4491
+ CheckboxMenuItem toggleTimelineItem;
43704492 CheckboxMenuItem toggleRenderItem;
43714493 CheckboxMenuItem toggleDebugItem;
43724494 CheckboxMenuItem toggleFrustumItem;
....@@ -4393,11 +4515,13 @@
43934515 JSplitPane gridPanel;
43944516 JSplitPane bigPanel;
43954517 JPanel bigThree;
4396
- JTabbedPane jtp;
4397
- JPanel cameraPanel;
4518
+ JTabbedPane scenePanel;
4519
+ JPanel centralPanel;
4520
+ JPanel timelinePanel;
4521
+ JMenuBar timelineMenubar;
43984522 JSplitPane framePanel;
43994523 JTextArea/*Field*/ nameField;
4400
- cButton textureButton;
4524
+ //cButton textureButton;
44014525 cButton okButton;
44024526 cButton applyButton;
44034527 cButton cancelButton;