本文目錄一覽:
學java還是學3d設計??
還是要看個人技術水平,如果想靠技術吃飯,不管學什麼都要下苦功夫,所以建議根據自己喜好,JAVA是編程開發,3DMAX是繪畫設計,有繪畫基礎的選3D也是不錯的,動畫行業正處在發展中,需要相關人才,但是資金、規模、環境條件不夠完善,JAVA編程目前用處多還是很吃香的,你要想學好這兩樣都不容易,可以去網上找個自學網,看看教程多了解了解,有一家專門做Java培訓教育機構還不錯,叫千鋒教育,千鋒教育線上就有免費的公開教程。 覺得線上學習效果不好,還可以線下學習,到本地區的千鋒機構進行諮詢。千鋒教育本部在北京,在18個城市擁有22個校區,講師項目實戰與教學經驗豐富,均來自一線大廠,全程面授教學。年培養優質人才超過20000人,和國內20000家企業都有人才輸送合作關係,經常在網上發布免費的教學視頻,影響人群近億,每年培養泛IT人才近2萬人,十年間累計培養超10餘萬泛IT人才 。
如何搭建java3d環境
1、下載安裝 JDK程序:jdk-1_5_0_07-windows-i586-p.exe
2、設置環境變量:方法為“我的電腦”屬性—高級—環境變量
增加“CLASSPATH”內容為“.;I:\Program Files\Java\jdk1.5.0_07\lib\tools.jar;I:\Program Files\Java\jdk1.5.0_07\lib\dt.jar;d:\class;”。注意安裝位置路徑!
增加“JAVA_HOME”內容為“I:\Program Files\Java\jdk1.5.0_07;”
在PATH中添加“I:\Program Files\Java\jdk1.5.0_07\bin;I:\Program Files\Java\jdk1.5.0_07\jre/bin;”在前面加的。
3、進入CMD,在任意盤符下試運行JACAC看是否正常。要多試幾次的。可進入JAVAC所在目錄運行先。
4、如果路徑沒問題,可以在記事本上輸入
public class HelloJAVA
{
public static void main(String[] args)
{
System.out.println(“Hello JAVA!”);
}
}
更名為HelloJAVA.java,放在D:/CLASS
5、在CMD後運行
D:\CLASS\javac hellojava.java (稱作編譯)
成功後
D:\CLAS\java HelloJAVA (注意大小寫!就是這裡我費了一些腦筋,就會報:Exception in Thread main java.lang.NoClassDefFoundError)
應該出現 Hello JAVA!!字樣,至此,JAVA JDK環境基本完工。
以上是查了網上資料,但是也有相當初學者遇到麻煩,不知本人的操作有什麼問題嗎。有一點,如果不是親身實踐那麼總以為容易的。
6、下載並安裝程序:java3d-1_5_1-windows-i586.exe
這個程序與前面的JDK安裝先後不能搞錯。這時安裝可見到本程序自動發現JDK的安裝路徑。默認在C:,無法更改的樣子。
7、在D:/CLASS下建立文本文件,內容為:
import java.applet.Applet;
import java.awt.BorderLayout;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
public class UglyCube extends Applet
{
private SimpleUniverse universe ;
public UglyCube()
{}
public void init()
{
//canvas to draw on, ask SimpleUniverse what config to use
Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
setLayout(new BorderLayout());
add(“Center”, canvas);
//create top of our scene graph
BranchGroup scene = new BranchGroup();
//create universe, and attach our geometry to it.
SimpleUniverse u = new SimpleUniverse(canvas);
u.getViewingPlatform().setNominalViewingTransform();
// Create the bounding leaf node
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
// Create the transform node
TransformGroup transformGroup = new TransformGroup();
transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// Create the drag behavior node
MouseRotate behavior = new MouseRotate();
behavior.setTransformGroup(transformGroup);
transformGroup.addChild(behavior);
behavior.setSchedulingBounds(bounds);
// Create the zoom behavior node
MouseZoom behavior2 = new MouseZoom();
behavior2.setTransformGroup(transformGroup);
transformGroup.addChild(behavior2);
behavior2.setSchedulingBounds(bounds);
// Create the zoom behavior node
MouseTranslate behavior3 = new MouseTranslate();
behavior3.setTransformGroup(transformGroup);
transformGroup.addChild(behavior3);
behavior3.setSchedulingBounds(bounds);
transformGroup.addChild(new ColorCube(0.4));
scene.addChild(transformGroup);
u.addBranchGraph(scene);
}
// The following allows UglyCube to be run as an application
// as well as an applet
public static void main(String[] args)
{
new MainFrame(new UglyCube(), 256, 256);
}
}
然後把它把保存更名為UglyCube.java,然後用進入CMD
D:\CLASS\JAVAC UglyCube.java (編譯)
D:\CLASS\JAVA UglyCube (運行)
運行結果:這是個彩色六面體,可以用鼠標左鍵旋轉,右鍵拖動,摁下滾輪前後移動縮放。
測試Java3D開發運行環境是否配置正確工作至此完成。
java3d的詳細介紹
引 言
Java3DAPI是用來開發三維圖形和開發基於Web的3D應用程序(applet)的編程接口.用於開發三維圖形軟件的3DAPI(OpenGL、Direct3D)都是基於攝像機模型的思想,即通過調整攝像機的參數來控制場景中的顯示對象,而Java3D則提出了一種新的基於視平台的視模型和輸入設備模型的技術實現方案,即通過改變視平台的位置、方向來瀏覽整個虛擬場景.它不僅提供了建造和操作三維幾何物體的高層構造函數,而且利用這些構造函數還可以建造複雜程度各異的虛擬場景,這些虛擬場景大到宇宙天體,小到微觀粒子.
Java3D是JavaMediaAPIs中的一部分,可廣泛地應用於各種平台,而且用Java3DAPI開發的應用程序和基於Web的3D小應用程序(applet),還可以訪問整個Java類,且可以與Internet很好地集成,即如果在瀏覽器中安裝了Java3D的瀏覽插件,在網上也可瀏覽Java3D所創建的虛擬場景.Java3DAPI還汲取了已有圖形APIs的優點,即Java3D的底層圖形構造函數不僅綜合了底層APIs(Direcrt3D、OpenGL)最好的繪製思想,而且它的高層圖形繪製還綜合了基於場景圖的思想,同時,它又引入了一些通用的圖形環境所未考慮的新概念(如3D立體聲),這樣將有助於提高用戶在虛擬場景的沉浸感.本文將着重介紹Java3D針對VR應用所提出的基於視模型和輸入設備模型的新思想,在此基礎上又討論了如何利用Java3D來開發VR應用程序及其實現方法,並設計實現了一個應用實例.
1.適於VR應用開發的Java3DAPI眾所周知,開發VR應用程序是一件很繁瑣的工作,其開發人員必須編寫應用程序可能遇到的各種輸入和顯示設備的接口程序,或者依賴專為VR應用開發而設計的應用程序編程接口(API),且典型的VR應用必須跟蹤用戶的頭部位置和方向,以生成與頭部位置方向相一致的虛擬場景圖.
另外,還需要先跟蹤身體的其它部位(手、臂或腿部),然後通過身體各部位在虛擬場景中的虛擬視點與場景中的對象進行交互,而應用程序也必須具有能夠利用跟蹤輸入設備在視點內放置物體,並標明其在生成的三維圖象中的位置和方向的功能.同時,面向VR的應用程序開發接口(API)必須能支持3D圖形生成、處理跟蹤器的輸入,並能將跟蹤信息反饋到圖形繪製中.
Java3DAPI可自動將頭部跟蹤器的輸入集成到圖形生成中,並具有通過訪問其它跟蹤器信息來控制其它特徵的功能,但它是通過一種新的視模型(viewmodel)技術來實現的.該視模型是將用戶真實的物質環境與計算機生成的虛擬環境相互獨立,並建立它們之間的通信橋樑.該API也明確定義了用來探測Java3D物體六自由度(6DOF)傳感器的返回值,並將其應用於顯示場景圖中.總之,這種新的視模型和輸入設備模型可以很方便地將交互式的3D圖形應用程序轉化為VR應用程序.
Java3D視模型
2.1 新的視模型概念(viewmodel)基於攝像機的視模型是模仿虛擬環境中的攝像機,而不是虛擬環境中人的“替身”,而且它是通過控制攝像機與視點的相關參數來控制所顯示的場景,但這種方法,在用戶物質環境確定某些視參數的系統中是不合理的,例如在頭盔顯示器(HMD)系統中,HMD的光學性能就直接確定了應用程序所顯示的視域.由於不同的HMD有不同的光學特性,因此如果允許終端用戶隨意改變光學參數顯然是不合理的.這裡視參數的值將隨終端用戶物質環境的不同而不同,而影響視參數的主要因素有顯示器大小、顯示器的位置(戴在頭上,還是放在桌子上)、三維空間中用戶的頭部位置、頭盔顯示器的實際顯示視域、每英寸的顯示象素等.由於Java3D的視模型直接提供了頭部跟蹤的功能,因而使用戶產生了真實存在於虛擬環境中的錯覺.
Java3D不僅提出了新的基於視平台的視模型概念,同時將其推廣到包括顯示設備和6DOF外圍輸入設備(如頭部跟蹤器等)的接口支持中,而且新的視模型繼承了Java的“writeonce,vieweverywhere”本質.這意味着由Java3D視模型開發的應用程序或applet可廣泛地應用於各種顯示環境.這種顯示環境可以是標準的計算機顯示屏、多元顯示空間,也可以是頭盔顯示器.Java3D視模型是通過將虛擬環境和物質環境完全獨立的方式來實現上述功能的,且該視模型可將虛擬環境中視平台的位置、方向和大小,與Java3D繪製的與視平台位置、方向相一致的虛擬場景相區分.一般應用程序控制視平台的位置和方向,而繪製着色系統則依據終端用戶的物質環境以及用戶在物質環境中的位置和方向來確定顯示場景.
2.2 視模型的組成
Java3D視模型由虛擬環境和物質環境兩部分組成,其中,虛擬環境由ViewPlatform對象來表示,它是虛擬對象存在的空間;而物質環境則由View對象以及和它相關的對象來表示.這裡,View對象和它的相關對象就描述了用戶所處的顯示和操縱輸入設備環境.雖然視模型將虛擬環境和物質環境相互獨立,但可通過一一對應關係來建立兩種世界之間相互通信的橋樑,這樣將使得終端用戶的行為會影響虛擬環境中的對象,同時虛擬環境中的對象行為也會影響終端用戶的視點.
Java3D可通過幾個對象來定義視模型參數.這些對象包括View對象及其相關對象、PhysicalBody對象、Canvas3D對象、PhysicalEnvironment對象、Screen3D對象.視模型相關的對象(如圖1所示)其作用如下:ViewPlatform用來標誌場景圖中視點位置的節點.其父節點則指明了視平台在虛擬環境中的位置、方向和大小.View用於指定需要處理場景圖的信息.Canvas3D定義了Java3D繪製圖象的窗口,它提供了Canvas3D在Screen3D對象中的大小、形狀和位置信息.Screen3D用於描述顯示屏幕的物理屬性.PhysicalBody用於封裝那些與物質體相關的參視模型的組成及其相互關係數(如左、右眼的位置等).PhysicalEnvironment用於封裝那些與物質體環境相關的參數(如,用於頭狀物體或頭盔式跟蹤器的校驗信息).
2.3 虛擬環境中的視平台(ViewPlatform)
鑒於視平台定義了一坐標系統,於是虛擬環境中的原始點和參考點就有了一參考坐標系.這裡視平台代表與視對象相關的一個點,並充當確定繪製圖象的基礎.圖2顯示了包括視平台節點場景圖的一部分.由圖2可見,視平台的父節點確定了視平台在虛擬環境中的位置和方向.若通過修改與TransformGroup節點相關的Transform3D對象,就可以在虛擬場景中隨意移動視平台.雖然虛擬環境中可以有許多不同的視平台,但特定的視對象只能與一個視平台相關聯,於是在Canvas3D對象中所繪製的場景均來自於一個視平台的視點.這樣應用程序就可通過修改視平台的TransformGroup節點,在虛擬環境中漫遊.圖2 包括視平台的局部場景圖3 Java3D的輸入設備模型Java3D除了支持通用的鍵盤、鼠標輸入外,還能給各種不間斷的輸入設備,如6DOF跟蹤設備和操縱桿提供支持.由於不同的跟蹤輸入設備其工作原理不同,因而計算機與其交互的方式也不同.為了給不同的6DOF輸入設備提供支持,Java3D還提供了一個輸入設備接口,而且該輸入設備接口還定義了一個抽象的輸入設備,雖然用其可以實現對一特定設備的驅動,但輸入設備接口的實現必須實現接口所定義的所有方法(如設備開、關、讀取操作、狀態設置及查詢等).Java3D的輸入設備列表就用這些方法同特定的設備進行交互.
一般Java3D環境中,可能包括許多輸入設備,而且這些輸入設備不一定是實際的物理設備,也可能是虛擬設備,例如通過軟件的方法將鼠標的運動參數轉化為6DOF虛擬跟蹤球的參數,來模擬虛擬跟蹤球的輸入.由於所有的輸入設備都由許多傳感器對象組成,因此每一種輸入設備都與一定數量的傳感器對象相關,且每一種傳感器都與其傳感器設備6DOF數據的一個數據源相關.當輸入設備驅動的數據改變時,傳感器對象的數據也會相應改變,而且傳感器對象由讀取傳感器對象組成.由於緩衝區中記錄了各傳感器N個讀取傳感器對象的值,因此可以對傳感器數據進行平均,以及對傳感器輸入值的趨勢進行預測等處理,但應用程序的開發並不直接使用輸入設備.Java3D是通過一個傳感器數組將輸入設備抽象化,傳感器對象數組是物質環境對象的一個子類,該數組是由與輸入設備相關的對象指針組成.Java程序可以直接從傳感器數組中獲取傳感器的值,並將其用到場景圖中,或按任意方式對其進行處理。
2.4 用Java3D開發VR應用程序利用
Java3D開發的VR應用程序或者applets程序,可建造一個虛擬場景,並能將一個或多個場景圖插入到虛擬場景中,虛擬場景由超結構對象集組成,對象集則包括一個世界對象(Universeobject)、一個或多個場所對象(Localeobjects)和按樹狀結構排列的由節點物體組成的一個或多個場景圖(Scenegraphs).該場景圖又稱為分枝圖(Branchgraph),它包括繪製對象節點、光照節點、行為節點和聲音節點等,其中,包含內容節點的分枝圖稱為內容分枝,包含視平台對象的分枝圖稱為視分枝,視平台對象用來確定用戶的位置和方向.圖3表示了具有多分枝圖的Java3D場景.圖3 應用程序場景圖由於這種分枝圖只描述了場景所要繪製的對象,並不確定對象的繪製次序,因此圖中節點的次序和位置與對象的繪製次序無關,而圖中的父節點和子節點的直線路徑就唯一確定了子節點的圖形範圍.由於繪製次序的不確定性,因而使得Java3D能橫越場景圖的任何次序,且它能從左到右,從頂部到底部穿過場景圖;或者從右到左,甚至並行遍歷整個場景圖.Java3D的分支圖為樹狀結構,且圖中的每一個節點只有一個父節點.這樣通過輔助的場景圖機制就可以實現通用場景圖的共享,而且具有連接屬性的葉節點可以連接到共享子圖.分枝圖中的節點分為群節點(groupnode)和葉節點(leafnode)兩類,其中,群節點按照粘貼的原理來組織場景圖單元。
群節點的層次結構圖一般群節點包括:BranchGroup、TransformGroup、Switch、OrderGroup、DecalGroup和ShareGroup節點,其中,BranchGroup是分枝圖的根節點;而TransformGroup用來指明所有子節點的位置和方向;Switch則用於實現一個或多個子圖的轉換;OrderGroup用於使它的子節點按照特定的次序繪製;DecalGroup是OrderGroup的一個子集;ShareGroup跟BranchGroup一樣,是一個場景圖的根節點.雖然共享圖作為Java3D場景圖的一部分從不直接出現,但是連接節點可以引用.另外群節點還可以包含各種子節點以及所包含對象的群節點或葉節點.這些子節點用一個關聯索引屬性來允許對特定的子節點進行操作.如果沒有指明特定的順序群節點,Java3D還可以按照任意指定的順序來繪製群節點的子節點.雖然葉節點是場景圖的抽象類,它沒有子節點,但葉節點包括了Java3D的各種信息.葉節點由Shape3D、ViewPlatform、Sound、Light以及用戶定義的行為節點等組成,Shape3D和ViewPlatform節點在Java3D的視模型和輸入模型中扮演着重要的角色,因為它描述了圖形系統的兩個重要方面,其中,Shape3D描述了場景中對象的幾何形狀,而ViewPlatform則標定了用戶或其視點在虛擬環境中的方向或位置.
另外,應用程序還可像操縱分枝圖中的任意對象一樣,來操縱ViewPlatform,而且應用程序還可平移、旋轉和縮放ViewPlatform,即通過改變ViewPlatform的位置和方向,ViewPlatform將隨同用戶的視點一起移動,來瀏覽整個虛擬環境.雖然ViewPlatform是按照事先規定的路線瀏覽場景,但不會限制用戶視點的移動和向不同方向瀏覽場景.
java 3d 1.3.1可以卸載嗎
可以。
1、從“開始”屏幕,在搜索框中輸入控制面板。選擇“控制面板”。
2、在顯示“控制面板”後,從“程序”類別中選擇卸載程序。
3、選擇要卸載的java3d1.3.1,然後右鍵單擊並選擇卸載,您也可以單擊位於程序列表頂部的“卸載”選項。
4、單擊是確認卸載java3d1.3.1即可。
java 如何開發3d可視化
使用之前
在開始使用 ThingJS 之前,需要先了解JavaScript,我們假設您已經掌握JS。
創建項目
創建項目之前需登錄ThingJS賬號,如果您尚未登錄賬號或頁面出現“登錄已過期,請重新登錄!”的提示,為保證項目的正確保存及運行,請您在賬號登錄之後再創建項目。您可通過以下三種方式創建項目:
選擇菜單區域的“文件 – 新建項目”選項
點擊工具欄“新建”圖標,圖標如右圖所示:
請點擊輸入圖片描述
請點擊輸入圖片描述
使用快捷鍵“Ctrl+P”
編輯項目
在線開發為用戶提供了相應的快捷代碼和官方示例,如果你正在用 ThingJS在線開發頁面,可以通過以下兩種方式來編輯項目:
點擊在線開發頁面菜單區域的快捷代碼選項中的子項,編輯區將自動插入相應代碼
請點擊輸入圖片描述
選擇在線開發官方示例中的其中任意一個示例,點擊相應示例,編輯區將顯示相應代碼
後續操作詳見 在線開發 – 應用開發 – 在線開發網頁鏈接
保存項目
可通過以下四種方式保存項目:
選擇菜單區域的“文件 – 保存”選項
點擊工具欄“保存”圖標,圖標如右圖所示:
請點擊輸入圖片描述
請點擊輸入圖片描述
使用快捷鍵“Ctrl+S”
運行項目
在線開發環境提供了以下幾種方式運行項目:
使用快捷方式“Ctrl+R/Enter”或點擊工具欄中的“運行”圖標,3d容器區域將運行編輯器相應的代碼。圖標如右圖所示:
請點擊輸入圖片描述
請點擊輸入圖片描述
選擇菜單區域的“工具 – 設置”選型,出現的設置面板,點擊開啟“自動保存執行”
請點擊輸入圖片描述
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/229038.html