คำเตือน: ที่เก็บนี้เลิกใช้แล้วและไม่ได้รับการดูแลอีกต่อไป โปรดใช้ webar.rocks.Object แทน
กาแฟแบบสแตนด์อโลน - เพลิดเพลินกับกาแฟฟรีโดย Jeeliz!
ตรวจพบถ้วยกาแฟและมีการเล่นแอนิเมชั่น 3 มิติในความเป็นจริงยิ่ง
การสาธิตนี้ขึ้นอยู่กับ Jeelizar และ Three.js เท่านั้น
นี่คือคุณสมบัติหลักของห้องสมุด:
/demos/ : ซอร์สโค้ดของการสาธิต/dist/ : Heart of the Library:jeelizAR.js : สคริปต์ minified หลัก/helpers/ : สคริปต์ที่สามารถช่วยให้คุณใช้ไลบรารีนี้ในบางกรณีการใช้งานเฉพาะ (เช่น webXR)/libs/ : ห้องสมุดบุคคลที่สามและเครื่องยนต์ 3 มิติที่ใช้ในการสาธิต/neuralNets/ : โมเดลเครือข่ายประสาท นี่คือการสาธิตบางอย่างของห้องสมุดนี้ บางคนต้องการการตั้งค่าเฉพาะ
คุณสามารถสมัครสมาชิกช่อง Jeeliz YouTube หรือบัญชี @StartUpJeeliz Twitter เพื่อแจ้งให้ทราบถึงการพัฒนาที่ทันสมัยของเรา
หากคุณทำแอปพลิเคชันหรือการสาธิตที่สนุกสนานโดยใช้ห้องสมุดนี้เรายินดีที่จะเห็นและแทรกลิงค์ที่นี่! ติดต่อเราได้ที่ Twitter @startupjeeliz หรือ LinkedIn
การสาธิตเหล่านี้ทำงานในเว็บเบราว์เซอร์มาตรฐาน พวกเขาต้องการการเข้าถึงเว็บแคมเท่านั้น
ในการเรียกใช้การสาธิตเหล่านี้คุณต้องใช้เว็บเบราว์เซอร์ที่ใช้ webXR เราหวังว่ามันจะถูกนำไปใช้ในไม่ช้าในเว็บเบราว์เซอร์ทั้งหมด!
จากนั้นคุณสามารถเรียกใช้การสาธิตเหล่านี้:
การสาธิตเหล่านี้ทำงานในเว็บเบราว์เซอร์มาตรฐานบนมือถือหรือแท็บเล็ต พวกเขาพึ่งพาเครื่องยนต์ AR ผนัง 8 ที่น่าทึ่ง เราใช้เครื่องยนต์เวอร์ชันเว็บและเราเริ่มจากตัวอย่างเว็บสาม.JS เว็บเอ็นจิ้นยังไม่เผยแพร่ต่อสาธารณะดังนั้นคุณต้อง:
index.html ของการสาธิตที่คุณต้องการลอง (ค้นหาและแทนที่ <WEBAPPKEY> โดยคีย์จริงของคุณ)การสาธิต:
ตัวอย่างการรวมขั้นพื้นฐานที่สุดของไลบรารีนี้คือการสาธิตครั้งแรกคือการสาธิตการตรวจจับการดีบัก ใน index.html เรารวมไว้ในส่วน <head> สคริปต์ห้องสมุดหลัก, /dist/jeelizAR.js , MediaStramAPI (เดิมชื่อผู้ช่วย getUserMedia API ), /helpers/JeelizMediaStreamAPIHelper.js และสคริปต์ Demo, demo.js: demo.js: demo.js
< script src = " ../../dist/jeelizAR.js " > </ script >
< script src = " ../../helpers/JeelizMediaStreamAPIHelper.js " > </ script >
< script src = " demo.js " > </ script > ในส่วน <body> ของ index.html เราใส่องค์ประกอบ <canvas> ซึ่งจะใช้ในการเริ่มต้นบริบท WebGL ที่ใช้โดยไลบรารีเพื่อการคำนวณการเรียนรู้อย่างลึกซึ้ง
< canvas id = ' debugJeeARCanvas ' > </ canvas > จากนั้นใน demo.js เราจะได้รับฟีดวิดีโอเว็บแคมหลังจากการโหลดของหน้าโดยใช้ตัวช่วย MediaStream API :
JeelizMediaStreamAPIHelper . get ( DOMVIDEO , init , function ( ) {
alert ( 'Cannot get video bro :(' ) ;
} , {
video : true //mediaConstraints
audio : false
} ) คุณสามารถแทนที่ส่วนนี้ด้วยวิดีโอแบบคงที่และคุณยังสามารถให้ข้อโต้แย้งของสื่อเพื่อระบุความละเอียดวิดีโอ เมื่อมีการจับฟีดวิดีโอ init มีการเปิดใช้งานฟังก์ชั่นการโทรกลับ มันเริ่มต้นไลบรารีนี้:
function init ( ) {
JEEARAPI . init ( {
canvasId : 'debugJeeARCanvas' ,
video : DOMVIDEO ,
callbackReady : function ( errLabel ) {
if ( errLabel ) {
alert ( 'An error happens bro: ' , errLabel ) ;
} else {
load_neuralNet ( ) ;
}
}
} ) ;
} ฟังก์ชั่น load_neuralNet โหลดโมเดลเครือข่ายประสาท:
function load_neuralNet ( ) {
JEEARAPI . set_NN ( '../../neuralNets/basic4.json' , function ( errLabel ) {
if ( errLabel ) {
console . log ( 'ERROR: cannot load the neural net' , errLabel ) ;
} else {
iterate ( ) ;
}
} , options ) ;
}แทนที่จะให้ URL ของเครือข่ายประสาทคุณยังสามารถให้วัตถุ JSON ที่แยกวิเคราะห์ได้
ฟังก์ชั่น iterate เริ่มวนซ้ำวนซ้ำ:
function iterate ( ) {
var detectState = JEEARAPI . detect ( 3 ) ;
if ( detectState . label ) {
console . log ( detectState . label , 'IS DETECTED YEAH !!!' ) ;
}
window . requestAnimationFrame ( iterate ) ;
} JEEARAPI.init ใช้พจนานุกรมเป็นข้อโต้แย้งกับคุณสมบัติเหล่านี้:
<video> video : องค์ประกอบวิดีโอ HTML5 (สามารถมาจากตัวช่วย MediaStream API) หาก false ให้อัปเดตพื้นผิวต้นฉบับจาก videoFrameBuffer object ที่ให้ไว้เมื่อเรียก JEEARAPI.detect(...) (เช่นในการสาธิต WebXR)<dict> videoCrop : ดูส่วนการครอบตัดวิดีโอสำหรับรายละเอียดเพิ่มเติม<function> callbackReady : ฟังก์ชั่นการโทรกลับเมื่อพร้อมหรือหากมีข้อผิดพลาด เรียกด้วยฉลากข้อผิดพลาดหรือ false<string> canvasId : ID ของผืนผ้าใบซึ่งบริบท WebGL ที่ใช้สำหรับการประมวลผลการเรียนรู้ลึกจะถูกสร้างขึ้น<canvas> canvas : หากไม่ได้ให้ canvasId คุณยังสามารถจัดเตรียมองค์ประกอบ <canvas> โดยตรงได้โดยตรง<dict> scanSettings : ดูส่วนการตั้งค่าสแกนสำหรับรายละเอียดเพิ่มเติม<boolean> isDebugRender : บูลีน หากเป็นจริงจะมีการแสดงการดีบักในองค์ประกอบ <canvas> มีประโยชน์สำหรับการดีบัก แต่ควรตั้งค่าเป็น false สำหรับการผลิตเพราะมันสูญเสียทรัพยากรการคำนวณ GPU<int> canvasSize : ขนาดของผ้าใบตรวจจับในพิกเซล (ควรเป็นสี่เหลี่ยม) ค่าพิเศษ -1 รักษาขนาดผ้าใบ ค่าเริ่มต้น: 512<boolean> followZRot : ใช้ได้เฉพาะกับ Neural Network Models Outputing Pitch, Angles และ Yaw ครอบตัดหน้าต่างอินพุตโดยใช้ม้วนของการตรวจจับกระแสในระหว่างขั้นตอนการติดตาม[<float>, <float>] ZRotRange : ใช้งานได้เฉพาะในกรณีที่ followZRot = true สุ่มมุมการหมุนเริ่มต้น ค่าอยู่ในเรเดียน ค่าเริ่มต้น: [0,0] ฟังก์ชั่นที่กระตุ้นการตรวจจับคือ JEEARAPI.detect(<int>nDetectionsPerLoop, <videoFrame>frame, <dictionary>options)
<int> nDetectionPerLoop คือจำนวนการตรวจจับติดต่อกันอย่างต่อเนื่อง ยิ่งการตรวจจับเร็วเท่าไหร่ก็จะยิ่งเร็วขึ้นเท่านั้น แต่มันอาจทำให้แอปพลิเคชันทั้งหมดช้าลงถ้ามันสูงเกินไปเพราะการเรียกใช้ฟังก์ชันจะใช้ทรัพยากร GPU มากเกินไป แนะนำให้มีค่าระหว่าง 3 ถึง 6 หากค่าคือ 0 จำนวนการตรวจจับต่อลูปจะถูกปรับระหว่าง 1 และ 6 ด้วยค่าเริ่มต้นที่ 3<videoFrame> frame ใช้เฉพาะกับการสาธิต WebXR เท่านั้น (ดูส่วนการรวม WebXR) มิฉะนั้นตั้งค่าเป็น null<dictionary> options เป็นพจนานุกรมเสริมซึ่งสามารถมีคุณสมบัติเหล่านี้:<float> thresholdDetectFactor : ปัจจัยที่ใช้กับเกณฑ์การตรวจจับสำหรับวัตถุที่ตรวจพบ ค่าเริ่มต้นคือ 1 ตัวอย่างเช่นถ้ามันเท่ากับ 0.5 การตรวจจับจะง่ายขึ้น 2 เท่า<string> cutShader : ปรับแต่ง shader เริ่มต้นที่ใช้ในการครอบตัดพื้นที่วิดีโอ ค่าที่เป็นไปได้คือ:null : ค่าเริ่มต้นไม่ใช้ตัวกรองและเก็บช่อง RGBA ไว้IOS : ค่าที่เหมาะสมที่สุดของอุปกรณ์ iOS สำหรับการใช้งาน webXR เท่านั้น คัดลอกช่องสีแดงลงในช่องสีอื่น ๆ และใช้ตัวกรองเฉลี่ย 5 พิกเซลmedian : ใช้ตัวกรองค่ามัธยฐาน 3x3 บนช่อง RGB แยกกันnull : ค่าเริ่มต้นไม่ใช้ตัวกรองและเก็บช่อง RGBA<boolean> isSkipConfirmation : ทำให้การตรวจจับง่ายขึ้น (อ่อนไหวมากขึ้น) แต่สามารถกระตุ้นบวกเท็จมากขึ้น ค่าเริ่มต้น: false<boolean> isKeepTracking : หากเราควรติดตามวัตถุหลังจากการตรวจจับ ค่าเริ่มต้น: false[<float>,<float>,<float>] trackingFactors : การติดตามความไวสำหรับการแปลตามแกน x, y และสเกล ค่าเริ่มต้น: 1.0 ,<float> thresholdDetectFactorUnstitch : หยุดการติดตามหากเกณฑ์การตรวจจับต่ำกว่าค่านี้ ใช้เฉพาะในกรณีที่ isKeepTracking=true ควรมีขนาดเล็กกว่า thresholdDetectFactor<float> secondNeighborFactor : อย่ายืนยันวัตถุหากวัตถุอื่นมีคะแนนการตรวจจับอย่างน้อย secondNeighborFactor * objectDetectionScore ค่าเริ่มต้นคือ 0.7<int> nLocateAutomoves : จำนวนขั้นตอนการตรวจจับในขั้นตอน LOCATE (เพียงแค่ย้ายหน้าต่างตรวจจับอินพุตด้วยเสียงรบกวน) (ค่าเริ่มต้น: 10 ),<float> locateMoveNoiseAmplitude : เสียงรบกวนในระหว่างขั้นตอน LOCATE เทียบกับขนาดหน้าต่างอินพุต (ค่าเริ่มต้น: 0.01 )<int> nConfirmAutoMoves : จำนวนขั้นตอนการตรวจจับในระหว่างขั้นตอน CONFIRM (ค่าเริ่มต้น: 8 ),<float> thresholdConfirmOffset : Abord ยืนยันขั้นตอนหากคะแนนการตรวจจับต่ำกว่าเกณฑ์การตรวจจับวัตถุ + ค่านี้ (ค่าเริ่มต้น: -0.02 ),<float> confirmMoveNoiseAmplitude : เสียงรบกวนในระหว่างขั้นตอน CONFIRM เทียบกับขนาดหน้าต่างอินพุต (ค่าเริ่มต้น: 0.01 )<int> nConfirmUnstitchMoves : ในโหมดการติดตามการติดตาม ( isKeepTracking = true หยุดการติดตามหลังจากการตรวจจับที่ไม่สำเร็จจำนวนนี้ (ค่าเริ่มต้น: 20 ),[<float> position, <float> angle] : หากการตรวจจับที่คลุมเครือ (2 วัตถุมีคะแนนปิด) ในระหว่างขั้นตอน CONFIRM ให้เอียงหน้าต่างอินพุต ค่าแรกสัมพันธ์กับขนาดหน้าต่างที่สองคือมุมในองศา (ค่าเริ่มต้น: [0.1, 10] )<float> confirmScoreMinFactorDuringAutoMove : ในระหว่างการยืนยันขั้นตอนคะแนนขั้นต่ำสำหรับการเคลื่อนไหวแต่ละครั้ง หากคะแนนมีขนาดเล็กกว่าค่านี้ให้กลับมาที่เวทีการกวาด ค่าเริ่มต้นคือ 0.3 ฟังก์ชั่นการตรวจจับส่งคืนวัตถุ detectState เพื่อการปรับให้เหมาะสมมีการกำหนดโดยการอ้างอิงไม่ใช่ตามค่า มันเป็นพจนานุกรมที่มีคุณสมบัติเหล่านี้:
<float> distance : ระยะการเรียนรู้เช่นระยะห่างระหว่างกล้องและวัตถุในระหว่างการฝึกซ้อมชุดข้อมูล ให้เบาะแสเกี่ยวกับระดับที่แท้จริงของวัตถุ<bool/string> label : false หากไม่ตรวจพบวัตถุมิฉะนั้นฉลากของวัตถุที่ตรวจพบ มันอยู่ในตัวอักษรตัวพิมพ์ใหญ่เสมอและขึ้นอยู่กับเครือข่ายประสาท<array4> positionScale : อาร์เรย์ของลอยที่เก็บ 4 ค่า: [x,y,sx,sy] โดยที่ x และ y เป็นตำแหน่งสัมพัทธ์ปกติของศูนย์กลางของวัตถุที่ตรวจพบ sx , sy เป็นปัจจัยสเกลปกติสัมพัทธ์ของหน้าต่างตรวจจับ:x คือตำแหน่งบนแกนแนวนอน มันไปจาก 0 (ซ้าย) ถึง 1 (ขวา)y คือตำแหน่งของแกนแนวตั้ง มันไปจาก 0 (ล่าง) ถึง 1 (บนสุด)sx เป็นสเกลบนแกนแนวนอน มันไปจาก 0 (ขนาดเป็นโมฆะ) ถึง 1 (ขนาดเต็มบนแกนแนวนอน)sy คือสเกลบนแกนแนวตั้ง มันไปจาก 0 (ขนาดว่าง) เป็น 1 (ขนาดเต็มบนแกนแนวตั้ง)<float> yaw : มุมในเรเดียนของการหมุนของวัตถุรอบแกนแนวตั้ง (y)<float> detectScore : คะแนนการตรวจจับของวัตถุที่ตรวจพบระหว่าง 0 (การตรวจจับที่ไม่ดี) และ 1 (การตรวจจับที่ดีมาก)JEEARAPI.set_NN(<string> neuralNetworkPath, <function> callback) : สลับเครือข่ายประสาทและเรียกใช้ฟังก์ชันเมื่อเสร็จแล้วไม่ว่าจะเป็น false เป็นอาร์กิวเมนต์หรือมีป้ายกำกับข้อผิดพลาดJEEARAPI.reset_state() : กลับสู่โหมดกวาดJEEARAPI.get_aspectRatio() : ส่งคืนอัตราส่วนภาพ <width>/<height> ของแหล่งอินพุตJEEARAPI.set_scanSettings(<dict> scanSettings) : ดูส่วนการตั้งค่าการสแกนสำหรับข้อมูลเพิ่มเติม รหัสหลักของ WebXR Demos อยู่ในไฟล์ index.html โดยตรง ส่วน 3D ได้รับการจัดการโดย สาม js จุดเริ่มต้นของการสาธิตคือตัวอย่างที่ได้รับจาก [WebXR Viewer โดย Mozilla Fundation] (GitHub Repository of Demos)
เราใช้ Jeeliz AR ผ่านผู้ช่วยเฉพาะ helpers/JeelizWebXRHelper.js และเราขอแนะนำอย่างยิ่งให้ใช้ผู้ช่วยนี้สำหรับการสาธิต webxr ของคุณ ด้วยการใช้งาน iOS มันจัดการกับการแปลงสตรีมวิดีโอ (สตรีมวิดีโอได้รับเป็นบัฟเฟอร์ YCBCR เราใช้บัฟเฟอร์ Y เท่านั้นและเราใช้ตัวกรองค่ามัธยฐานกับมัน)
JEEARAPI.init callbackReady reback):"GL_INCOMPATIBLE" : WebGL ไม่พร้อมใช้งานหรือการกำหนดค่า WebGL นี้ไม่เพียงพอ (ไม่มี WebGL2 หรือมี WebGL1 ที่ไม่มี OES_TEXTURE_FLOAT หรือ OES_TEXTURE_HALF_FLOAT)"ALREADY_INITIALIZED" : API ได้เริ่มต้นแล้ว"GLCONTEXT_LOST" : บริบทของ WebGL หายไป หากบริบทหายไปหลังจากการเริ่มต้นฟังก์ชั่น callbackReady จะเปิดตัวเป็นครั้งที่สองโดยมีค่านี้เป็นรหัสข้อผิดพลาด"INVALID_CANVASID" : ไม่พบองค์ประกอบ <canvas> ใน DOM ข้อผิดพลาดนี้สามารถเรียกใช้เฉพาะในกรณีที่ canvasId มีให้กับวิธีการ init()JEEARAPI.set_NN"INVALID_NN" : โมเดลเครือข่ายประสาทไม่ถูกต้องหรือเสียหาย"NOTFOUND_NN" : ไม่พบโมเดลเครือข่ายประสาทหรือเกิดข้อผิดพลาด HTTP ในระหว่างการร้องขอ สามารถให้พารามิเตอร์การครอบตัดวิดีโอได้ มันจะทำงานได้ก็ต่อเมื่อองค์ประกอบอินพุตเป็นองค์ประกอบ <video> > โดยค่าเริ่มต้นไม่มีการครอบตัดวิดีโอ (ภาพวิดีโอทั้งหมดเป็นอินพุต) การตั้งค่าการครอบตัดวิดีโอสามารถให้ได้:
JEEARAPI.init ถูกเรียกใช้โดยใช้พารามิเตอร์ videoCropJEEARAPI.set_videoCrop(<dict> videoCrop) videoCrop Dictionnary เป็นเท็จ (ไม่มี videocrop) หรือมีพารามิเตอร์ต่อไปนี้:
<int> x : ตำแหน่งแนวนอนของมุมซ้ายล่างของพื้นที่ที่ถูกครอบตัดเป็นพิกเซล<int> y : ตำแหน่งแนวตั้งของมุมซ้ายล่างของพื้นที่ที่ถูกครอบตัดเป็นพิกเซล<int> w : ความกว้างของพื้นที่ที่ถูกครอบตัดเป็นพิกเซล<int> h : ความสูงของพื้นที่ที่ถูกครอบตัดเป็นพิกเซลการตั้งค่าสแกนสามารถให้ได้:
JEEARAPI.init ถูกเรียกใช้โดยใช้ scanSettings พารามิเตอร์JEEARAPI.set_scanSettings(<dict> scanSettings) scanSettings Dictionnary มีคุณสมบัติดังต่อไปนี้:
<float> margins : มาร์จิ้น อย่าพยายามตรวจสอบว่าศูนย์กลางของหน้าต่างตรวจจับอยู่ใกล้กับพรมแดนมากเกินไปหรือไม่ 0 →ไม่มีอัตรากำไรขั้นต้น 1 →ระยะขอบ 100% ค่าเริ่มต้น: 0.1 ,<int> nSweepXYsteps : จำนวนขั้นตอนการแปลสำหรับสเกลที่กำหนด ค่าเริ่มต้น: 6*6=36<int> nSweepSsteps : จำนวนขั้นตอนมาตราส่วน จำนวนขั้นตอนการแปลทั้งหมด =nSweepXYsteps*nSweepSsteps ค่าเริ่มต้น: 4 ,[<float>,<float>] sweepScaleRange : ช่วงของมาตราส่วนหน้าต่างตรวจจับ 1 →มิติขั้นต่ำหน้าต่างทั้งหมด (ระหว่างความกว้างและความสูง) อย่าคำนึงถึงอัตรากำไรขั้นต้น ค่าเริ่มต้น: [0.3, 0.7] ,<int> sweepStepMinPx : ขนาดต่ำสุดของขั้นตอนเป็นพิกเซล ค่าเริ่มต้น: 16 ,<boolean> sweepShuffle : ถ้าเราควรสลับตำแหน่งสแกนหรือไม่ ค่าเริ่มต้น: trueการสาธิตควรโฮสต์บนเซิร์ฟเวอร์ HTTPS แบบคงที่พร้อมใบรับรองที่ถูกต้อง มิฉะนั้น WebXR หรือ Mediastream API อาจไม่สามารถใช้ได้
ระวังเปิดใช้งานการบีบอัด GZIP สำหรับไฟล์ JSON อย่างน้อย โมเดลเครือข่ายเซลล์ประสาทอาจค่อนข้างหนัก แต่โชคดีที่มันถูกบีบอัดด้วย GZIP
/dist/jeelizAR.module.js เหมือนกันมากกว่า /dist/jeelizAR.js ยกเว้นว่าทำงานกับ ES6 ดังนั้นคุณสามารถนำเข้าได้โดยตรงโดยใช้:
import 'dist/jeelizAR.module.js' เราให้บริการเครือข่ายประสาทหลายรุ่นใน / neuralnets / path เราจะเพิ่มเครือข่ายประสาทใหม่เป็นประจำในที่เก็บ Git นี้เป็นประจำ นอกจากนี้เรายังสามารถให้บริการฝึกอบรมเครือข่ายประสาทเฉพาะ กรุณาติดต่อเราที่นี่เพื่อดูราคาและรายละเอียด คุณสามารถค้นหาได้ที่นี่:
| ไฟล์โมเดล | ตรวจพบฉลาก | ขนาดอินพุต | ค่าตรวจจับ | ความน่าเชื่อถือ | ข้อสังเกต |
|---|---|---|---|---|---|
basic4.json | ถ้วยเก้าอี้จักรยานแล็ปท็อป | 128*128px | - | - | |
basic4Light.json | ถ้วยเก้าอี้จักรยานแล็ปท็อป | 64*64px | - | - | |
cat.json | แมว | 64*64px | - | - | ตรวจจับใบหน้าแมว |
sprite0.json | Spritecan | 128*128px | - | - | เครือข่ายแบบสแตนด์อโลน (การตรวจจับ 6D) |
ARCoffeeStandalone01.json | ถ้วย | 64*64px | - | - | เครือข่ายแบบสแตนด์อโลน (การตรวจจับ 6D) |
ขนาดอินพุตคือความละเอียดของภาพอินพุตของเครือข่าย หน้าต่างตรวจจับไม่คงที่: มันเลื่อนไปตามวิดีโอทั้งสำหรับตำแหน่งและสเกล หากคุณใช้ไลบรารีนี้กับ WebXR และ iOS ความละเอียดวิดีโอจะเป็น 480*270 พิกเซลดังนั้นอินพุต 64*64 พิกเซลจะเพียงพอ หากตัวอย่างเช่นคุณใช้โมเดลเครือข่ายประสาทอินพุต 128*128 พิกเซลภาพอินพุตมักจะต้องขยายก่อนที่จะได้รับเป็นอินพุต
ห้องสมุดนี้ใช้เทคโนโลยีการเรียนรู้ลึกของ Jeeliz WebGL เพื่อตรวจจับวัตถุ เครือข่ายประสาทได้รับการฝึกฝนโดยใช้เอ็นจิ้น 3D และชุดข้อมูลของรุ่น 3D ทั้งหมดเป็นฝั่งไคลเอ็นต์ที่ประมวลผล
WebGL2 ใช้ WebGL2 และไม่จำเป็นต้องมีส่วนขยายเฉพาะWebGL2 ไม่พร้อมใช้งาน แต่ WebGL1 เราต้องการส่วนขยาย OES_TEXTURE_FLOAT หรือ OES_TEXTURE_HALF_FLOATWebGL2 ไม่สามารถใช้งานได้และหาก WebGL1 ไม่พร้อมใช้งานหรือไม่มีการใช้ OES_TEXTURE_FLOAT หรือ OES_HALF_TEXTURE_FLOAT ผู้ใช้จะไม่เข้ากันได้หากมีการเรียกเกิดข้อผิดพลาดความเข้ากันได้โปรดโพสต์ปัญหาเกี่ยวกับที่เก็บนี้ หากนี่เป็นปัญหาเกี่ยวกับการเข้าถึงเว็บแคมโปรดลองก่อนอื่นหลังจากปิดแอปพลิเคชันทั้งหมดซึ่งสามารถใช้อุปกรณ์ของคุณ (Skype, Messenger, แท็บเบราว์เซอร์อื่น ๆ และ windows, ... ) โปรดรวม:
WebGL1 ของคุณ)WebGL2 ของคุณ)Apache 2.0 แอปพลิเคชันนี้ฟรีสำหรับการใช้งานเชิงพาณิชย์และไม่ใช่เชิงพาณิชย์
เราขอขอบคุณการระบุแหล่งที่มาโดยรวมโลโก้ Jeeliz และลิงก์ไปยังเว็บไซต์ Jeeliz ในแอปพลิเคชันหรือเว็บไซต์เดสก์ท็อปของคุณ แน่นอนว่าเราไม่คาดหวังว่าจะมีลิงก์ขนาดใหญ่ไปยัง Jeeliz ผ่านตัวกรองใบหน้าของคุณ แต่ถ้าคุณสามารถใส่ลิงค์ไว้ในส่วนเครดิต/เกี่ยวกับ/ช่วยเหลือ/ส่วนท้ายมันจะดีมาก
Jeeliz Main Face Detection and Tracking Library คือ Cjeeliz FaceFilter API มันจัดการกับการติดตามหลายหน้าและสำหรับใบหน้าที่ติดตามแต่ละครั้งมันให้มุมการหมุนและปัจจัยการเปิดปาก เหมาะอย่างยิ่งในการสร้าง Snapchat/Msqrd ของคุณเองเช่นตัวกรองใบหน้าที่ทำงานในเบราว์เซอร์ มันมาพร้อมกับการสาธิตการรวมเข้าด้วยกันรวมถึงการแลกเปลี่ยนใบหน้า
ห้องสมุดที่ใช้การเรียนรู้อย่างลึกซึ้งของเรา Weboji ตรวจพบการแสดงออกทางสีหน้า 11 ครั้งแบบเรียลไทม์จากฟีดวิดีโอเว็บแคม จากนั้นพวกเขาจะถูกทำซ้ำบนอวตารไม่ว่าจะเป็นแบบ 3 มิติที่มีตัวเรนเดอร์สาม.JSหรือใน 2D ด้วย SVG Renderer (ดังนั้นคุณสามารถใช้มันได้แม้ว่าคุณจะไม่ใช่นักพัฒนา 3D) คุณสามารถเข้าถึงที่เก็บ GitHub ได้ที่นี่
หากคุณเพียงต้องการตรวจพบว่าผู้ใช้กำลังดูหน้าจอหรือไม่ Jeeliz Slack Tracker เป็นสิ่งที่คุณกำลังมองหา มันจะเป็นประโยชน์ในการเล่นและหยุดวิดีโอชั่วคราวว่าผู้ใช้กำลังดูหรือไม่ ห้องสมุดนี้ต้องการทรัพยากรน้อยลงและไฟล์เครือข่ายประสาทมีน้ำหนักเบากว่ามาก
หากคุณต้องการใช้ไลบรารีนี้สำหรับการลองใช้แว่นตาเสมือนจริง (แว่นกันแดด, แว่นตา, มาสก์สกี) คุณสามารถดูวิดเจ็ต Jeeliz VTO ได้ มันมีเครื่องยนต์ 3 มิติที่มีคุณภาพสูงและมีน้ำหนักเบาซึ่งใช้คุณสมบัติดังต่อไปนี้: การแรเงารอการตัดบัญชี, PBR, เงาเรย์แอร์, การทำแผนที่ปกติ, ... นอกจากนี้ยังสร้างสภาพแวดล้อมแสงรอบ ๆ ผู้ใช้ (แสงโดยรอบและทิศทาง) แต่แว่นตามาจากฐานข้อมูลที่โฮสต์ในเซิร์ฟเวอร์ของเรา หากคุณต้องการเพิ่มบางรุ่นโปรดติดต่อเรา