關於xtk.js的使用(醫療影像處理外掛)
由於公司專案需要,我學習了xtk.js,用於顯示obj、vtk、mtl等檔案中的內容。效果如圖:
xtk.js能夠實現obj檔案的顯示、3D影像的視口改變、影像移動、放大縮小,並能夠適配平板端。
我主要是使用外掛中的介面。
xtk.js是讀取直接讀取檔案的,因此不能讀取檔案內容,需要封裝一個FIle物件或者Blob物件來使用。
以上是我在專案中需要用到的外掛。
minicolor.js是一個很好用的顏色選擇器外掛,會用到jquery.ui中的東西。
使用如下:用於改變mesh的顏色。
sidebar是可以自己寫的一個樣式檔案(不重要),會用到jquery.ui中的東西。
下面著重說一下xtk.js的使用過程。
這次專案中我主要用到了mesh(網格)物件->這個物件需要自定義,是xtk中很小的一部分。
這是我需要用到的,而xtk中提供的如下:
而這些資料是用於一個叫X的物件的;
這就是X物件中的mesh需要用到我們剛才建立的data。
實際上有:
volume = new X.volume();
mesh = new X.mesh();
fibers = new X.fibers();等X物件的屬性。
結束了上面的一些準備工作,以及DOM操作後進行檔案讀取:
下面這個函式是讀取檔案的入口
//解析檔案內容並建立3d物件(Parse file data and setup X.objects) function parse(data) { var fname = data['mesh']['file'][0].name.split(".")[0].toString().replace(" ", ''); // 初始化檔案讀取 initializeRenderers(); //設定影像的mesh(影象顏色和透明度) if (data['mesh']['file'].length > 0) { mesh[fname] = new X.mesh();// we have a mesh mesh[fname].file = data['mesh']['file'].map(function(v) { return v.name; }); mesh[fname].filedata = data['mesh']['filedata']; ren3d.add(mesh[fname]);// add the mesh } ren3d.camera.position = [0, 500, 0]; ren3d.render(); }
//建立3d影像的物件 function initializeRenderers() { if (ren3d) { return; } _webgl_supported = true; try { ren3d = new X.renderer3D();// 建立 XTK renderers ren3d.container = 'imageBox'; ren3d.init(); ren3d.interactor.onMouseWheel = function (e) {}; } catch (Error) { window.console.log('WebGL *not* supported.'); _webgl_supported = false; $('#imageBox').empty();// 出現異常或瀏覽器不支援則刪除3d物件 } ren3d.onShowtime = function () { for (var i = 0; i < files.length; i++) { var curfname = files[i].name.split(".")[0].toString().replace(" ", '') mesh[curfname].opacity = meshObj[curfname].opacity; //---------------------------初始化影像透明度--------------------------- mesh[curfname].color = meshObj[curfname].color;//---------------------------初始化設定影像顏色--------------------------- } }; }
通過以上操作,就可以實現我的專案功能了。
然而,在遠端檔案讀取的過程中會遇到很多問題:
1、大型檔案的非同步請求問題:用到了閉包來保證檔案順序即使用立即執行函式(function(){}());
2、大型檔案傳輸速度慢:壓縮後再傳輸進行解壓縮(zip.js);
3、xtk.js工作時遇到很多的大型檔案同時載入會出現問題:緩衝區分配失敗——需要對影像進行降維處理,問題還在解決中,或許還可以從three.js的學習中找到解決方案。
相關推薦
關於xtk.js的使用(醫療影像處理外掛)
由於公司專案需要,我學習了xtk.js,用於顯示obj、vtk、mtl等檔案中的內容。效果如圖: xtk.js能夠實現obj檔案的顯示、3D影像的視口改變、影像移動、放大縮小,並能夠適配平板端。 我主要是使用外掛中的介面。 xtk.js是讀取直接讀取檔案的,因此不能讀取
dropload.js(上拉載入外掛使用過程中遇到的坑)
之前因為專案需要一個上拉載入的效果,然後無意中看到了此外掛,用了之後感覺挺好用的,就是坑太多,下面列出一些我在實際使用中遇到的問題。 注:如果在使用該外掛的時候遇到問題,確實無法解決,也沒有人能幫你解決,建議換外掛或者加群,群號也在上面的連結裡面。 問
jquery.form.js(ajax表單提交)
jquer 我們 使用 執行 sub 某個字段 httpd 區別 load Form插件地址: 官方網站:http://malsup.com/jQuery/form/ 翻譯地址:http://www.aqee.net/docs/jquery.form.plugin/jque
Codeforces 147B Smile House(DP預處理 + 倍增)
rep 驗證 bool 求一個 png != () long long mile 題目鏈接 Smile House 題意 給定一個$n$個點的有向圖,求一個點數最少的環,使得邊權之和$>0$,這裏的環可以重復經過點和邊。 滿足 $n <= 30
禁止頁面後退js(兼容各瀏覽器)
轉載 .cn sta chan div doc pushstate scrip https 轉載:https://www.cnblogs.com/ityouknow/p/5328996.html <script src="${ctxPath}/media/lib/j
1054 求平均值 (sscanf(), sprintf()處理字串)
本題的基本要求非常簡單:給定 N 個實數,計算它們的平均值。但複雜的是有些輸入資料可能是非法的。一個“合法”的輸入是 [−1000,1000] 區間內的實數,並且最多精確到小數點後 2 位。當你計算平均值的時候,不能把那些非法的資料算在內。 輸入格式: 輸入第一行給出
數學符合和公式(數字影象處理相關)
目錄 1. 數學符號 2. 函式空間 3. 集合的運算和公式 1. 數學符號 集,集合 x是集合X的一個元素 x不是集
(webstorm的CSS外掛)Emmet使用手冊
介紹 Emmet (前身為 Zen Coding) 是一個能大幅度提高前端開發效率的一個工具: 基本上,大多數的文字編輯器都會允許你儲存和重用一些程式碼塊,我們稱之為“片段”。雖然片段能很好地推動你得生產力,但大多數的實現都有這樣一個缺點:你必須先定
python初學一(set的處理方式)
一、集合的基本知識: 1、概念: 理解:沒
python初學一(dict的處理方式)
一、字典的基本知識: 1、無序、可變,可以通過key索引,不可切片。 2、字典的key是不可變資料型
python初學一(tuple的處理方式)
一、tuple的基本特性:
python初學一(list的處理方式)
一、列表的基本知識: 1、列表的建立: ①、直接建立: &nbs
tomcat新增jvm引數(eclipse的tomcat外掛)
tomcat新增jvm引數: 修改bin/catalina.sh,新增以下內容(定義了兩個變數logpath和datapath) JAVA_OPTS="-Dlogpath =/opt/logs -Ddatapath=/opt/data"
python進階一(檔案的處理方式)
一、檔案操作方法: 檔案操作的結果都是str,需要將 str轉化為 python 的物件才能後續進行操作。 1
react下批量匯入資料無法覆蓋原資料中的input值的問題(利用antd design外掛)
最近在寫一個需求,要求批量匯入資料後要把原來的列表資料全部覆蓋,包括匯入的資料與原來的列表資料重複的值。 如果匯入的資料中與原來列表的資料沒有重複的值,那就重新setState一下就好;那如果列表中有資料A,並且A的一個屬性通過input編輯過,此時再批量匯入資料包含資料A的話,那就不能覆蓋已經
Python:父子程序執行的先後順序(多工處理2)
#!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: [email protected] @software: PyCharm @file: 3.父子
前端系列教程之JS(自認為有用程式碼)
以下程式碼並不唯一,僅供參考 1.保證自己的頁面不被嵌入其他框架 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>保證自己的頁面不被嵌入其他框
(三) arcgis runtime for android 100.3開發學習(載入影像切片服務)
今天我們來學關於arcgis影像切片服務,注意這個例子的demo比較簡單。我們主要看一下ArcGISMapImageLayer類的UML圖。程式碼是非常簡單的。 來看一下原始碼,非常簡單。 package com.esri.arcgisruntime.sample
html移動端頁面適配js(採用rem+百分比形式)
(function(win, lib) { var doc = win.document; var docEl = doc.documentElement; var metaEl = doc.querySelector('meta[name="vie
如何安裝crx格式檔案(如何安裝 Chrome外掛)?
2018.06.17更新:高能警告:Chrome 67 版本(大概2018.06.06的更新包)開始,外掛已經無法離線安裝啦,也就是自己無法使用crx檔案安裝外掛,而只能從chrome.google.com/webstore上安裝。檢視chrome版本號方法:位址列輸入 ch