国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Three.js移動端雙指觸屏控制旋轉(zhuǎn)和縮放

這篇具有很好參考價(jià)值的文章主要介紹了Three.js移動端雙指觸屏控制旋轉(zhuǎn)和縮放。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  1. 需求

在移動端通過雙指來控制物體的選擇和縮放。旋轉(zhuǎn)通過雙指旋轉(zhuǎn)操作,而縮放通過雙指距離實(shí)現(xiàn)。實(shí)現(xiàn)平臺是小程序基于three.js的AR版。

  1. 實(shí)現(xiàn)思路

  1. 旋轉(zhuǎn):兩個手指產(chǎn)生的兩個點(diǎn)可以算出一個向量,那么我就通過程序前后兩幀計(jì)算兩個向量之間的夾角來判斷旋轉(zhuǎn)的角度信息。這里我通過Vector3.angleTo()去求得角度,這個是沒有夾角方向的,所以后面我將兩個向量進(jìn)行叉乘,獲得夾角的方向。

  1. 縮放:通過雙指距離判斷縮放的比例。

  1. 代碼

1.小程序注冊觸碰的事件 .wxml文件

<canvas
        bindtouchstart="bindtouchStart"
        bindtouchmove="bindtouchMove"    
</canvas>

2.腳本上實(shí)現(xiàn)邏輯 .js文件文章來源地址http://www.zghlxwxcb.cn/news/detail-719420.html

bindtouchStart(event)
  {
    //console.log("touchStart");
    if(event.touches.length===2)
    {
        //旋轉(zhuǎn)的開始觸碰參數(shù),獲取剛觸碰時(shí)的兩個點(diǎn)信息
        var client1X = event.touches[0].clientX;
        var client1Y = event.touches[0].clientY;
        this.start1X = client1X;
        this.start1Y = client1Y;
        var client2X = event.touches[1].clientX;
        var client2Y = event.touches[1].clientY;
        this.start2X = client2X;
        this.start2Y = client2Y;
        this.touchStartEvent = event.touches;

        //縮放的開始觸碰參數(shù)
        var xMove = event.touches[1].clientX-event.touches[0].clientX;
        var yMove = event.touches[1].clientY-event.touches[0].clientY;
        //初始時(shí)雙指距離.注:distance是全局變量,需要在前面聲明出來,我沒有貼這代碼
        distance = Math.sqrt(xMove*xMove+yMove*yMove);
    }
  },
  bindtouchMove(event)
  {
    if(event.touches.length===2)
    {
        //旋轉(zhuǎn)
        //獲取剛開始觸碰時(shí)生成的向量
        var v1=new THREE.Vector3(this.start2X-this.start1X,this.start2Y-this.start1Y,0);
        //獲取實(shí)時(shí)的兩點(diǎn)信息
        var client1X = event.touches[0].clientX;
        var client1Y = event.touches[0].clientY;
        var client2X = event.touches[1].clientX;
        var client2Y = event.touches[1].clientY;
        //獲取實(shí)時(shí)兩點(diǎn)生成的向量
        var v2 = new THREE.Vector3(client2X-client1X,client2Y-client1Y,0);
        //獲取兩個向量產(chǎn)生的夾角
        var angle = v2.angleTo(v1);
        //由于這個夾角只能是正的,所以要確定夾角的方向。使用叉乘來判斷
        v1.cross(v2);
        if(v1.z>0){
            //角度是逆時(shí)針方向的,朝向屏幕外
            angle=-angle;
        }else{
           //角度是順時(shí)針方向的

        }
        //傳遞給下一幀
        this.start1X = client1X;
        this.start1Y = client1Y;
        this.start2X = client2X;
        this.start2Y = client2Y;
        //執(zhí)行旋轉(zhuǎn)操作.獲得角度信息后可自由發(fā)揮
        cameraBusiness.rotaClick(angle);

        //縮放
        var xMove = event.touches[1].clientX-event.touches[0].clientX;
        var yMove = event.touches[1].clientY-event.touches[0].clientY;
        var curDistance = Math.sqrt(xMove*xMove+yMove*yMove);
        var distanceDiff = curDistance-distance;
        //執(zhí)行縮放操作.獲得距離信息后可自由發(fā)揮
        cameraBusiness.scaleClick(distanceDiff);
        distance = curDistance;
    }
  },

到了這里,關(guān)于Three.js移動端雙指觸屏控制旋轉(zhuǎn)和縮放的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • VUE使用Three.js實(shí)現(xiàn)模型,點(diǎn)擊交互,相機(jī)旋轉(zhuǎn)視角跟隨移動(Threejs中使用Tweenjs,含demo源碼)

    VUE使用Three.js實(shí)現(xiàn)模型,點(diǎn)擊交互,相機(jī)旋轉(zhuǎn)視角跟隨移動(Threejs中使用Tweenjs,含demo源碼)

    目錄 一、Three.js是什么? 二、VUE簡單使用Three.js步驟 1.npm安裝 2.template模板 3.引入庫 4.定義全局變量 5.初始化場景 6.初始化相機(jī) 7.初始化燈光 8.初始化渲染器 9.創(chuàng)建模型(這里我搭建的模型是一個簡單雙面貨架模型) 10.根據(jù)瀏覽器窗口自適應(yīng) 11.初始化函數(shù),頁面加載完成時(shí)調(diào)用

    2024年02月03日
    瀏覽(104)
  • Three.js - 通過鍵盤控制模型移動和攻擊(二十五)

    Three.js - 通過鍵盤控制模型移動和攻擊(二十五)

    上節(jié)加載了模型和模型動畫,本節(jié)使用鍵盤控制模型移動和連貫動畫實(shí)現(xiàn)攻擊動作。 基礎(chǔ)模板 上節(jié)講述加載了模型,并實(shí)現(xiàn)了動畫。本節(jié)在上節(jié)的基礎(chǔ)上進(jìn)行修改。 修改燈光并添加陰影 開啟陰影渲染。 添加方向光,開啟陰影投射。 在地面網(wǎng)格上開啟陰影接收。 修改模型網(wǎng)

    2024年02月10日
    瀏覽(24)
  • three.js實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊控制物體移動(帶動畫效果,位置精確)

    three.js實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊控制物體移動(帶動畫效果,位置精確)

    通過查閱各種資料,最終確定解決方案,動畫效果使用gsap組件庫實(shí)現(xiàn),也可不用,代碼稍作修改即可。解決鼠標(biāo)點(diǎn)擊坐標(biāo)偏移問題,復(fù)制可直接運(yùn)行。 完整代碼如下:

    2024年02月07日
    瀏覽(31)
  • three js模型旋轉(zhuǎn)

    three js模型旋轉(zhuǎn)

    如何讓立方體模型旋轉(zhuǎn)到指定的面 父頁面 效果:

    2024年02月15日
    瀏覽(34)
  • 從three.js旋轉(zhuǎn)動畫,我了解了requestAnimationFrame

    從three.js旋轉(zhuǎn)動畫,我了解了requestAnimationFrame

    前言 ??? 大家好,我是南木元元,熱衷分享有趣實(shí)用的文章,希望大家多多支持,一起進(jìn)步! ???? 個人主頁: 南木元元 目錄 three.js旋轉(zhuǎn)動畫 動畫前置知識 屏幕刷新率與瀏覽器重繪次數(shù) 動畫是如何形成的 實(shí)現(xiàn)動畫的方式有哪些 什么是requestAnimationFrame setTimeoutsetInterval 結(jié)

    2024年02月03日
    瀏覽(22)
  • Three.js使用OrbitControls后修改相機(jī)旋轉(zhuǎn)方向無效

    ? ? ? ? 在項(xiàng)目中添加了OrbitControls控制器來控制相機(jī)的旋轉(zhuǎn)和平移,但是需要修改初始的相機(jī)角度,于是我把相機(jī)的角度進(jìn)行修改,如下: 運(yùn)行項(xiàng)目后發(fā)現(xiàn)相機(jī)的位置并沒有發(fā)生變化。原因是相機(jī)旋轉(zhuǎn)和移動被OrbitControls控制器托管了。 ? ? ? ? 方法1.于是我嘗試創(chuàng)建一個組

    2024年02月16日
    瀏覽(30)
  • Three.js -相機(jī)平滑移動

    一、安裝 二、引入 三、使用 最后不要忘了在render中執(zhí)行 TWEEN.update();

    2024年02月13日
    瀏覽(90)
  • Three 之 three.js (webgl)鼠標(biāo)/手指通過射線移動物體的簡單整理封裝

    Three 之 three.js (webgl)鼠標(biāo)/手指通過射線移動物體的簡單整理封裝

    目錄 Three 之 three.js (webgl)鼠標(biāo)/手指通過射線移動物體的簡單整理封裝 一、簡單介紹 二、實(shí)現(xiàn)原理 三、注意事項(xiàng) 四、效果預(yù)覽 五、案例實(shí)現(xiàn)步驟 六、關(guān)鍵代碼 Three js 開發(fā)的一些知識整理,方便后期遇到類似的問題,能夠及時(shí)查閱使用。 本節(jié)介紹, three.js (webgl) 中,

    2024年02月16日
    瀏覽(97)
  • Three.js——scene場景、幾何體位置旋轉(zhuǎn)縮放、正射投影相機(jī)、透視投影相機(jī)

    Three.js——scene場景、幾何體位置旋轉(zhuǎn)縮放、正射投影相機(jī)、透視投影相機(jī)

    個人簡介 ?? 個人主頁: 前端雜貨鋪 ???♂? 學(xué)習(xí)方向: 主攻前端方向,正逐漸往全干發(fā)展 ?? 個人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國工業(yè)軟件事業(yè) ?? 人生格言: 積跬步至千里,積小流成江海 ?? 推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項(xiàng)目實(shí)戰(zhàn) ??Node.js??

    2024年04月14日
    瀏覽(29)
  • Unity控制相機(jī)旋轉(zhuǎn)、移動、縮放等功能

    提示: 該腳本允許你以指定的速度和角度圍繞模型進(jìn)行相機(jī)旋轉(zhuǎn),并可以控制相機(jī)的移動和縮放 將該腳本添加到一個游戲?qū)ο笊?,并將其作為主攝像機(jī)。 1、在Unity編輯器中,你可以在腳本的參數(shù)變量部分調(diào)整相機(jī)的速度、縮放和移動等設(shè)置。根據(jù)需求,修改各個參數(shù)的值。

    2024年02月04日
    瀏覽(45)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包