用 HTML5 造個有誠意的 23D 招聘稿

来源:https://www.cnblogs.com/xhload3d/archive/2020/03/08/12421857.html
-Advertisement-
Play Games

招聘對於一個公司來說是相當重要的一個環節,首先它影響著公司未來發展的趨勢,其次它為公司註入新鮮血液,使公司更具有活力。當然在工業互聯網,物聯網大背景下誕生的 HT 也是需要註入新鮮的血液來進一步提升公司的技術和能力。本文不會像傳統的招聘文案簡單的列舉一系列的崗位,一系列的福利來誘惑你們的加入,而是... ...


前言

招聘對於一個公司來說是相當重要的一個環節,首先它影響著公司未來發展的趨勢,其次它為公司註入新鮮血液,使公司更具有活力。當然在工業互聯網,物聯網大背景下誕生的 HT 也是需要註入新鮮的血液來進一步提升公司的技術和能力。本文不會像傳統的招聘文案簡單的列舉一系列的崗位,一系列的福利來誘惑你們的加入,而是會通過如何使用 HT 完成一個 2D 結合 3D招聘 DEMO 來讓你們體會到我們的設計審美能力技術能力從而來誘惑你們的加入。因為這篇文章來自一位 HT 的前端工程師,所以希望通過講解這個 DEMO 所涉及的一些交互動畫來讓你提前瞭解 HT 的部分基礎知識,從而對 HT 有一個簡單的整體認識。

本文所開發的招聘 DEMO 主要涉及 2D 設計師3D 設計師以及前端工程師這三個崗位。2D 設計師主要負責兩側 UI 面板的設計,3D 設計師主要負責 3D 場景中模型的搭建,模型的組裝等,前端工程師主要負責將設計師搭建完成的 2D 以及 3D 部分進行結合,並且加上交互和炫酷的動畫,所以設計的能力在這裡是不容忽視的,如果沒有優秀的設計,只有前端工程師完成這個 DEMO 的話那肯定是下降了不止一個檔次。因此我們公司招聘的人員主要有 2D 設計師3D 設計師以及前端工程師這三個角色,如果你熱愛設計,熱愛前端,我們真誠邀請你考慮加入我們 Hightopo 大家庭,我們不限制學歷、性別和年齡,只需要你具有潛力和激情。

當你大致瞭解完開發該系統所需的角色時,你可以點擊下麵的鏈接查看由設計師和程式員共同努力的結果:

用 HTML5 造個有誠意的 23D 招聘稿 http://www.hightopo.com/demo/ht-job/

招聘預覽

入場

點擊

選擇

查看

投遞

設計師

設計師是我們系統的顏面,他(她)決定了你是否有興趣和動力繼續瀏覽下去,當然好的設計也需要良好的用戶體驗,這兩者是不可或缺的。該系統的 2D 設計主要有左側的兩個面板設計,以及點擊投遞之後你所看到的彈窗內的地圖,卡通和按鈕的設計,2D 設計部分主要通過設計師繪製 2D 面板,例如設計師可以使用現在市面主流的工具 Sketch,它是一款輕量,易用的矢量設計工具,我們的 2D 也是矢量,具有放大不失真的效果,當然也可以使用 AI 等其它設計工具進行設計。

上面你所看到的圖撲 logo,漸變按鈕,設計師 icon,網站工程師 icon 等等你都可以通過編輯工具進行繪製,繪製完之後可以通過可視化工具暴漏的調整面板進行填充色,位置,大小等信息的修改。

3D 設計師可以使用現在主流的 3ds MAX 或者 Maya 工具來進行建模,這兩款工具相對來說功能完善,易學易用,製作效率較高。這個招聘 DEMO3D 場景主要包括飛機的模型,兩個卡通人物,一個轉動的半圓,以及部分的裝飾品,模型部分你可以通過主流的建模工具進行搭建,之後導出 objmtl 文件就可以放入我們的 3D 場景,放入之後我們就可以給模型添加交互,修改染色等一系列額外的操作。像比較簡單的例如轉動的半圓,可以用我們提供的專門繪製工具進行繪製。

程式員

我們公司如上所講的主要需要前端程式員來將設計師設計出來的一動不動的場景活起來,或增加交互,或增加動畫,使場景看起來更加的炫酷。當然如果需要與後臺進行對接,則需要通過 Ajax 或者 Socket 來從後臺獲取數據,之後填充到我們前端的頁面,例如當我們需要做如下圖的大屏時:

我們可以看到這是一個無人機相關參數的大屏展示,右側有三個表格,這三個表格的數據肯定是通過後臺推送到前臺,之後前臺通過代碼實時刷新表格的內容來進行展示。

當然我們大屏也可以嵌入第三方的圖表,例如 ECharts,Highcharts 等等第三方的圖表,如下麵大屏就是嵌入 Echarts 圖表的一個 DEMO :

下麵講解該招聘 DEMO 部分交互與動畫的實現:

該 DEMO 入場動畫分為飛機移入,轉盤旋轉,信封桶上移,Design 文字淡出,其中飛機移入是從屏幕的右上角飛入到視野左側,在場景中,飛機是一個單獨的節點,飛機上的轉盤,卡通人物,裝飾品等等也都是單獨的一個節點,但是他們有共同的特征就是都是吸附在飛機這個節點上,因為吸附之後,飛機的移動也會帶動所有吸附它的節點移動,在 HT 中吸附節點的代碼為 node1.setHost(node2) ,代表 node1 這個節點吸附在 node2 這個節點上,所以我們飛機的移入只需要不斷設置飛機在場景中的位置即可,如下為參考偽代碼:

 // ht.Math 是 ht 中封裝的數學方法類 Vector3 代表三維的向量
const Vector3 = ht.Math.Vector3;
const moveAirplane = (airplane, from, to, finishFunc = () => {}) => {
     // startV3 飛機移動的起始位置
     // endV3 飛機移動的終止位置
    const startV3 = new Vector3(from),
          endV3 = new Vector3(to);
     // ht.Default.startAnim 是 ht 中封裝的動畫調度
    ht.Default.startAnim({
        duration: 2000,
        easing: (t) => t,
        finishFunc: finishFunc,
        action: (v, t) => {
             // v 的值會在 2000ms 內從 0 變到 1
             // 實時計算從 startV3 到 endV3 兩點之間上的位置點,然後動態設置到 airplane 飛機這個節點上
            airplane.p3(new Vector3().lerpVectors(startV3, endV3, v).toArray());
        }
    });
};

上面所調用的 ht.Default.startAnim 可參考 HT for Web 入門手冊 ,可以大體瞭解下 HT 的機制。

接下來是轉盤的旋轉,轉盤上也有幾個不同的節點,同理也是吸附在轉盤上面,此時轉盤轉動吸附在轉盤上面的其它節點也會跟著轉動,如下為參考偽代碼:

 // 1 度的弧度值
const DR = Math.PI / 180;
const rotatePanel = (panel, from, to, finishFunc = () => {}) => {
     // 起始角度
    const startDegree = from * DR;
     // 終止角度
    const endDegree = to * DR;
     // 角度差
    const DEEP = endDegree - startDegree;
     // 同上啟動動畫
    ht.Default.startAnim({
        duration: 2000,
        easing: (t) => t,
        finishFunc: finishFunc,
        action: (v, t) => {
             // 通過 setRotationY 方法實時設置轉盤 panel 的角度
            panel.setRotationY(startDegree + DEEP * v);
        }
    });
};

之後是信筒的向上移動,同理信筒上面有兩個橢圓的卡通人物和一些裝飾品也都要吸附在信筒上面,之後信筒向上移動也會帶動吸附它的節點同時向上移動,如下為參考偽代碼:

const moveLetterbox = (letterbox, from, to, finishFunc = () => {}) => {
    const DEEP = to - from;
    ht.Default.startAnim({
        duration: 2000,
        easing: (t) => t,
        finishFunc: finishFunc,
        action: (v, t) => {
             // 通過 setElevation 來實時設置信筒在垂直方向的位置
            letterbox.setElevation(from + DEEP * v);
        }
    });
};

最後是一個 Design 文字透明度的變化動畫,該部分可以參考 HT for Web 風格手冊 該風格手冊裡面有 HT 可以設置的節點的大部分風格,其中 shape3d.opacity 這個屬性就是設置節點的透明度,當然如果要讓 shape3d.opacity 生效,也要同時設置 shape3d.transparent 來讓當前節點開啟透明,如下為透明度變化參考偽代碼:

const opacityTransform = (node, from, to, finishFunc = () => {}) => {
    const DEEP = to - from;
    ht.Default.startAnim({
        duration: 2000,
        easing: (t) => t,
        finishFunc: finishFunc,
        action: (v, t) => {
             // 通過 node.s 設置節點 style 屬性,key 為屬性名,value 為屬性值
            node.s('shape3d.opacity', from + DEEP * v);
        }
    });
}

當我們打開頁面之後我們發現右側場景會有類似呼吸的效果上下浮動,這部分效果是通過有規律的修改 3D 場景的 eye 眼睛的位置來模擬實現的,具體 eye 眼睛和 center 中心在 3D 中的概念可以參考 HT for Web 3D 手冊 ,該部分的參考代碼如下:

const cameraShake = (g3d) = >{
     // 獲取當前視角
    const [x, y, z] = g3d.getEye();
     // 視角浮動距離
    const moveDistance = 10;
     // 視角浮動速度
    const speed = 1;
     // 視角浮動方向
    let direction = -1;
     // 當前視角浮動距離
    let currentMoveDistance = 0;
    window.cameraShakeInterval = setInterval(() = >{
         // 增加當前視角浮動距離
        moveStep += speed * direction;
         // 設置當前視角
        g3d.setEye([x, y + currentMoveDistance, z]);
         // 如果當前視角浮動距離的絕對值大於視角浮動距離則改變浮動方向
        if (Math.abs(currentMoveDistance) >= moveDistance) direction = -direction;
    },
    100);
};

通過上面五個簡單的動畫我們可以瞭解到用代碼驅動節點運動的相關內容,無非就是起調度,然後實時去驅動節點的位置,或者節點的其它屬性讓它運動起來,所以如果掌握了 HT 的基本核心概念之後你就會做出各種炫酷的動畫,讓你在 HT 的知識體系中遨游,當然我前面所講的只是部分入門的動畫和一些基本的概念,如果你對 HT 有很大的興趣,歡迎加入我們,點擊上面的 DEMO 鏈接,選擇對應的城市,然後發送自己的簡歷到對應的郵箱,我們會及時的回覆。

誠聘

我們團隊在 2019 年對產出的效果進行了一個總結,包括可視化的案例集和行業的一些歸納總結,具體可以查看 分享數百個 HT 工業互聯網 2D 3D 可視化應用案例之 2019 篇 ,相信在你看完這些優秀的案例效果之後會抱著一腔熱血加入我們的公司,讓我們一起為推進國內工業互聯網發展出份薄力。

下麵附上一張移動端運行結果:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 查詢 備份查詢數據 插入 插入查詢結果 更新 通過查詢結果更新 刪除 截斷表 刪除和截斷的區別 TRUNCATE 是 DDL 命令,命令執行完就提交,刪除的數據不能恢復; DELETE 命令是 DML 命令,命令執行完需提交後才生效,刪除後的數據可以通過日誌文件恢復。 TRUNCATE 的執行速度比 ...
  • SQL語句介紹 數據定義語言(DDL),包括 CREATE、 ALTER、 DROP等。 數據操縱語言(DML),包括 INSERT、 UPDATE、 DELETE、 SELECT … FOR UPDATE等。 數據查詢語言(DQL),包括基本查詢語句、 Order By 子句、 Group By ...
  • union 結果集合併 使用多個select分別查詢不同的表,把多個select查到的記錄合併在一起 一個select查到m條記錄,另一個select查到n條記錄,合併之後就是m+n條記錄 #查詢全校師生的id、name,使用2個select分別從tb_teacher、tb_student中查,然後 ...
  • 我前幾天刷機未退出Google帳號,導致刷入的新系統驗證一直不過,於是死活登陸不了,其實就是被鎖了。我的解決方案分成三步:1. 刷入第三方不帶google服務的ROM,我使用的是 LineageOS 2. 在第三方的ROM中重新安裝Google服務及市場並登陸Google帳號,然後再次退出3. 重新... ...
  • 今天。。。是一個非常重要的日子 女神節。作為一名程式員,如何向心儀的人低調而又不失逼格的表達祝福,關係到我們後半生的幸福,祝福的到位,普通朋友加個字變成女朋友,女朋友變成老婆,如果已經是老婆了,那麼這個月的零花錢又能多好幾百,想想都激動。 回到現實,作為程式員,我們當然要獨一無二,要與眾不同,要突破 ...
  • 1. 匿名內部類作為事件監聽器 2. 內部類作為事件監聽器 3. Activity本身作為事件監聽器 4. 外部類作為事件監聽器 5. 將事件處理方法直接綁定到標簽 ...
  • 什麼是SystemService 我們在Android開發過程中經常會用到各種各樣的系統管理服務,如進行視窗相關的操作會用到視窗管理服務WindowManager,進行電源相關的操作會用到電源管理服務PowerManager,還有很多其他的系統管理服務,如通知管理服務NotifacationMana ...
  • 索引配置文件sitemap.json,用於配置頁面是否可被索引(搜索)。 action為allow表示同意索引,disallow表示不同意;page為*表示所有頁面可被索引,pages/index/index則指定某個頁面可被索引。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...