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

threejs 相機(jī)控制camera-controls鼠標(biāo)和觸摸

這篇具有很好參考價(jià)值的文章主要介紹了threejs 相機(jī)控制camera-controls鼠標(biāo)和觸摸。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

安裝

npm i?camera-controls

官網(wǎng)地址:相機(jī)控制 - npm (npmjs.com)

相機(jī)控制

three.js 的相機(jī)控件,類(lèi)似于 THREE。OrbitControls 還支持平滑過(guò)渡和 es6 導(dǎo)入。

演示

相機(jī)移動(dòng) 用戶輸入
軌道旋轉(zhuǎn) 鼠標(biāo)左鍵拖動(dòng)/觸摸:?jiǎn)沃敢苿?dòng)
多莉(變焦) 鼠標(biāo)中鍵拖動(dòng),或鼠標(biāo)滾輪/觸摸:雙指捏合或捏出
卡車(chē)(平底鍋) 鼠標(biāo)右鍵拖動(dòng)/觸摸:兩指移動(dòng)或三指移動(dòng)
  • 基本
  • 正交
  • 合身和襯墊

用法

import * as THREE from 'three';
import CameraControls from 'camera-controls';

CameraControls.install( { THREE: THREE } );

// snip ( init three scene... )
const clock = new THREE.Clock();
const camera = new THREE.PerspectiveCamera( 60, width / height, 0.01, 100 );
const cameraControls = new CameraControls( camera, renderer.domElement );

( function anim () {

	// snip
	const delta = clock.getDelta();
	const hasControlsUpdated = cameraControls.update( delta );

	requestAnimationFrame( anim );

	if ( hasControlsUpdated ) {

		renderer.render( scene, camera );

	}
} )();

構(gòu)造 函數(shù)

CameraControls( camera, domElement, options )

  • camera是要控制的三.js透視相機(jī)。
  • domElement是可拖動(dòng)區(qū)域的 HTML 元素。
  • options在對(duì)象中。
    • ignoreDOMEventListeners:默認(rèn)值為 。if ,鼠標(biāo)和觸摸事件偵聽(tīng)器將被忽略,您可以改為附加處理程序。falsetrue

性能

  • .enabled:默認(rèn)值為 。是否啟用控件。true
  • .minDistance:默認(rèn)值為 。小車(chē)的最小距離。0
  • .maxDistance:默認(rèn)值為 。小車(chē)的最大距離。Infinity
  • .minPolarAngle:默認(rèn)值為 ,以弧度為單位。0
  • .maxPolarAngle:默認(rèn)值為 ,以弧度為單位。Math.PI
  • .minAzimuthAngle:默認(rèn)值為 ,以弧度為單位。-Infinity
  • .maxAzimuthAngle:默認(rèn)值為 ,以弧度為單位。Infinity
  • .dampingFactor:默認(rèn)值為 。0.05
  • .draggingDampingFactor:默認(rèn)值為 。0.25
  • .dollySpeed:默認(rèn)值為 。鼠標(biāo)滾輪推車(chē)的速度。1.0
  • .truckSpeed:默認(rèn)值為 。卡車(chē)和基座的拖曳速度。2.0
  • .verticalDragToForward:默認(rèn)值為 。與three.js的OrbitControls相同。false.screenSpacePanning
  • .dollyToCursor:默認(rèn)值為 。推入鼠標(biāo)光標(biāo)坐標(biāo)。false

事件

使用您可以訂閱這些事件。addEventListener( eventname, function )

  • controlstart:當(dāng)用戶開(kāi)始通過(guò)鼠標(biāo)/觸摸控制相機(jī)時(shí)觸發(fā)。
  • control:當(dāng)用戶控制相機(jī)(拖動(dòng))時(shí)觸發(fā)。
  • controlend:當(dāng)用戶結(jié)束控制相機(jī)時(shí)觸發(fā)。
  • update:更新相機(jī)位置時(shí)觸發(fā)。

方法

rotate( rotX, rotY, enableTransition )

旋轉(zhuǎn)方位角 (theta) 和極角 (phi)。 并且是弧度。 在布爾值中rotXrotYenableTransition

rotateTo( rotX, rotY, enableTransition )

將方位角 (theta) 和極角 (phi) 旋轉(zhuǎn)到給定點(diǎn)。

dolly( distance, enableTransition )

推車(chē)進(jìn)/出攝像機(jī)位置。 在一個(gè)數(shù)字中。 在布爾值中distanceenableTransition

dollyTo( distance, enableTransition )

推車(chē)進(jìn)/出攝像機(jī)位置到給定距離

truck( x, y, enableTransition )

使用當(dāng)前方位角的卡車(chē)和基座攝像機(jī)。

moveTo( x, y, z, enableTransition )

將位置移動(dòng)到給定點(diǎn)。target

forward( distance, enableTransition )

向前/向后移動(dòng)。

fitTo( meshOrBox3, enableTransition, { paddingTop?: number = 0, paddingLeft?: number = 0, paddingBottom?: number = 0, paddingRight?: number = 0 } )

使視口適合對(duì)象邊界框或邊界框本身。填充物是單位的。

setLookAt( positionX, positionY, positionZ, targetX, targetY, targetZ, enableTransition )

它將相機(jī)移動(dòng)到 中,并使其看起來(lái) 。positiontarget

lerpLookAt( positionAX, positionAY, positionAZ, targetAX, targetAY, targetAZ, positionBX, positionBY, positionBZ, targetBX, targetBY, targetBZ, x, enableTransition )

與 相同,但它在兩種狀態(tài)之間插值。setLookAt

setPosition( positionX, positionY, positionZ, enableTransition )

setLookAt沒(méi)有目標(biāo),就一直盯著當(dāng)前的目標(biāo)。

setTarget( targetX, targetY, targetZ, enableTransition )

setLookAt沒(méi)有位置,保持原地不動(dòng)。

getPosition( out )

返回其當(dāng)前位置。

getTarget( out )

返回其當(dāng)前凝視目標(biāo)。

saveState()

將當(dāng)前攝像機(jī)位置設(shè)置為默認(rèn)位置

reset( enableTransition )

將所有旋轉(zhuǎn)和位置重置為默認(rèn)值。

update( delta )

更新相機(jī)位置和方向。這應(yīng)該在滴答循環(huán)中調(diào)用,如果需要重新渲染,則返回。 是上一次更新調(diào)用之間的增量時(shí)間。truedelta

toJSON()

獲取 JSON 字符串中的所有狀態(tài)

fromJSON( json, enableTransition )

使用 JSON 重現(xiàn)控件狀態(tài)。 是 anim 或不在布爾值中的位置。enableTransition

dispose()

釋放 cameraControls 實(shí)例本身,刪除所有 eventListener。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-821012.html

到了這里,關(guān)于threejs 相機(jī)控制camera-controls鼠標(biāo)和觸摸的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ZED使用指南(五)Camera Controls

    ZED使用指南(五)Camera Controls

    (1)選擇視頻模式 左右視頻幀同步,以并排格式作為單個(gè)未壓縮視頻幀流式傳輸。 ?在ZED Explorer或者使用API可以改變視頻的分辨率和幀率。 (2)選擇輸出視圖 ZED能以不同的格式輸出圖像,包括校正、未校正和灰度圖像(左視圖、右視圖、并排視圖、左未校正或右未校正、

    2024年02月05日
    瀏覽(184)
  • threejs動(dòng)態(tài)調(diào)整相機(jī)位置

    本文實(shí)現(xiàn)的效果是,模型渲染出來(lái)后,根據(jù)用戶點(diǎn)擊模型的某部分,將相機(jī)定位到鼠標(biāo)點(diǎn)擊的位置,并放大 監(jiān)聽(tīng)模型點(diǎn)擊事件 點(diǎn)擊事件 調(diào)整相機(jī)位置 不過(guò)此文的相機(jī)調(diào)整比較快、生硬,沒(méi)有那種漸進(jìn)式的感覺(jué),哪位博主有更好的方法了請(qǐng)?jiān)谙旅媪粞耘?/p>

    2024年02月04日
    瀏覽(17)
  • [threejs]相機(jī)與坐標(biāo)

    [threejs]相機(jī)與坐標(biāo)

    搞清相機(jī)和坐標(biāo)的關(guān)系在threejs初期很重要,否則有可能會(huì)出現(xiàn)寫(xiě)了代碼,運(yùn)行時(shí)一片漆黑的現(xiàn)象,這種情況就有可能是因?yàn)槟阆鄼C(jī)沒(méi)弄對(duì)。 先來(lái)看一下threejs中的坐標(biāo)(世界坐標(biāo)) 坐標(biāo)軸好理解,大家只需要知道在three中不同顏色代表的軸就行,再就是坐標(biāo)有正負(fù)之分。向前,

    2024年02月14日
    瀏覽(11)
  • [QT/C++]如何得知鼠標(biāo)事件是由觸摸事件轉(zhuǎn)換而來(lái)的,使得鼠標(biāo)觸摸事件分離

    依據(jù)來(lái)源:https://doc.qt.io/qt-5/qml-qtquick-mouseevent.html 具體是在event事件或者mouse系列事件中捕獲到鼠標(biāo)事件后,用如下代碼判斷鼠標(biāo)事件是否由觸摸事件轉(zhuǎn)換而來(lái)的 通過(guò)該條件的一律返回,剩下的就是不由觸摸事件生成的鼠標(biāo)事件,由此做到鼠標(biāo)與觸摸事件的分離,使得觸摸事

    2024年02月13日
    瀏覽(27)
  • threejs讓模型始終面向相機(jī)

    threejs讓模型始終面向相機(jī)

    需求:threejs導(dǎo)入3D模型,改變相機(jī)位置的同時(shí),讓模型始終面向相機(jī)。 實(shí)現(xiàn)方式:使用模型的lookAt()方法,設(shè)置模型lookAt的值 首次加載模型時(shí),面向相機(jī) 相機(jī)云頂==運(yùn)動(dòng)時(shí),模型面向相機(jī)

    2024年02月12日
    瀏覽(18)
  • threejs使用gui改變相機(jī)的參數(shù)

    threejs使用gui改變相機(jī)的參數(shù)

    定義相機(jī)的配置: gui中加入調(diào)節(jié)fov的方法 實(shí)現(xiàn)效果 定義參數(shù): 初始化相機(jī),設(shè)置相機(jī)位置。 加入gui的配置 最后的效果 ?

    2024年02月12日
    瀏覽(14)
  • threejs 實(shí)現(xiàn)場(chǎng)景漫游效果(相機(jī)沿著自定義軌道移動(dòng))

    threejs 實(shí)現(xiàn)場(chǎng)景漫游效果(相機(jī)沿著自定義軌道移動(dòng))

    效果視頻: Video_22-06-15_18-10-11 實(shí)現(xiàn)思路:先創(chuàng)建一條曲線curve作為運(yùn)動(dòng)路線,然后使用const points = curve.getPoints(n)方法將curve分成n-1段;我們可以通過(guò)points[n] 獲取第n個(gè)點(diǎn)的坐標(biāo)位置;將相機(jī)的位置設(shè)置為這個(gè)坐標(biāo),在動(dòng)畫(huà)中不斷地修改n的值達(dá)到移動(dòng)的效果;具體操作如下:

    2024年02月11日
    瀏覽(93)
  • GIS融合之路(三)CesiumJS和ThreeJS相機(jī)同步

    同樣在這篇文章開(kāi)始前重申一下,山海鯨并沒(méi)有使用ThreeJS引擎。但由于ThreeJS引擎使用廣泛,下文中直接用ThreeJS同CesiumJS的整合方案代替山海鯨中3D引擎和CesiumJS整合。 系列傳送門(mén): 山海鯨可視化:GIS融合之路(一)技術(shù)選型CesiumJS/loaders.gl/iTowns? 山海鯨可視化:GIS融合之路(

    2024年02月08日
    瀏覽(21)
  • Threejs入門(mén)之三:讓物體跟隨鼠標(biāo)動(dòng)起來(lái)

    Threejs入門(mén)之三:讓物體跟隨鼠標(biāo)動(dòng)起來(lái)

    上一節(jié)我們創(chuàng)建了一個(gè)三維的立方體,將其放在了瀏覽器窗口中,但是目前來(lái)講它只是一個(gè)靜態(tài)的圖片,我們并不能通過(guò)鼠標(biāo)控制其旋轉(zhuǎn)、縮放和移動(dòng),這一節(jié)我們來(lái)實(shí)現(xiàn)用鼠標(biāo)控制物體的運(yùn)動(dòng)。 首先我們要了解一個(gè)概念,在三維場(chǎng)景中,我們要控制物體旋轉(zhuǎn),實(shí)際上不是物

    2024年02月11日
    瀏覽(42)
  • Android12 部分應(yīng)用(客戶大型游戲)使用鼠標(biāo)點(diǎn)擊無(wú)效,鼠標(biāo)模擬觸摸點(diǎn)擊

    ? ? ? ? 如標(biāo)題,在某些較大的游戲應(yīng)用中,會(huì)限制鼠標(biāo)點(diǎn)擊不生效,導(dǎo)致我們的鼠標(biāo)在系統(tǒng)其他應(yīng)用上都能使用,就是某個(gè)游戲應(yīng)用無(wú)法點(diǎn)擊。調(diào)試發(fā)現(xiàn),觸摸事件不受影響,那么我們可以在當(dāng)前游戲應(yīng)用中,點(diǎn)擊的時(shí)候模擬一下觸摸點(diǎn)擊,查看是否生效。安卓有一個(gè)觸摸

    2024年02月02日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包