123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- Component({
- // behaviors: [require('../common/share-behavior').default],
- properties: {
- a: Number,
- },
- data: {
- loaded: false,
- arReady: false,
- },
- lifetimes: {
- async attached() {
- console.log('data', this.data)
- }
- },
- methods: {
- handleReady({
- detail
- }) {
- const xrScene = this.scene = detail.value;
- this.mat = new(wx.getXrFrameSystem().Matrix4)();
- console.log('xr-scene', xrScene)
- this.triggerEvent('ready')
- },
- handleAssetsProgress: function ({
- detail
- }) {
- // console.log('assets progress', detail.value.progress);
- const progress =
- Math.floor(detail.value.progress * 100)
- this.triggerEvent('progress', progress)
- },
- handleAssetsLoaded: function ({
- detail
- }) {
- console.log('assets loaded', detail.value);
- const el = detail.value.target;
- // this.setData({loaded: true});
- this.scene.event.addOnce('touchstart', this.placeNode.bind(this));
- this.triggerEvent('loaded')
- },
- handleARReady: function ({
- detail
- }) {
- console.log('arReady', this.scene.ar.arVersion);
- },
- placeNode(event) {
- const {
- clientX,
- clientY
- } = event.touches[0];
- const {
- frameWidth: width,
- frameHeight: height
- } = this.scene;
- if (clientY / height > 0.8 && clientX / width < 0.2) {
- this.scene.getNodeById('setitem').visible = false;
- this.scene.ar.resetPlane();
- } else {
- this.scene.ar.placeHere('setitem', true);
- console.error('show-gltf')
- if (this.video) {
- this.video.play()
- }
- }
- this.scene.event.addOnce('touchstart', this.placeNode.bind(this));
- },
- handleGLTFLoaded({
- detail
- }) {
- const el = detail.value.target;
- console.error('handleGLTFLoaded')
- const gltf = el.getComponent("gltf");
- const video = this.scene.assets.getAsset("video-texture", "cat");
- const newMat = this.scene.assets.getAsset("material", "catMat");
- this.video = video
- for (const mesh of gltf.getPrimitivesByNodeName("video")) {
- mesh.material = newMat
- }
- }
- }
- })
|