index.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. Component({
  2. // behaviors: [require('../common/share-behavior').default],
  3. properties: {
  4. a: Number,
  5. },
  6. data: {
  7. loaded: false,
  8. arReady: false,
  9. isPlay: false
  10. },
  11. lifetimes: {
  12. async attached() {
  13. console.log('data', this.data)
  14. }
  15. },
  16. methods: {
  17. handleReady({
  18. detail
  19. }) {
  20. const xrScene = this.scene = detail.value;
  21. this.mat = new(wx.getXrFrameSystem().Matrix4)();
  22. console.log('xr-scene', xrScene)
  23. this.triggerEvent('ready')
  24. },
  25. handleAssetsProgress: function ({
  26. detail
  27. }) {
  28. // console.log('assets progress', detail.value.progress);
  29. const progress =
  30. Math.floor(detail.value.progress * 100)
  31. this.triggerEvent('progress', progress)
  32. },
  33. handleAssetsLoaded: function ({
  34. detail
  35. }) {
  36. console.log('assets loaded', detail.value);
  37. const el = detail.value.target;
  38. // this.setData({loaded: true});
  39. this.scene.event.addOnce('touchstart', this.placeNode.bind(this));
  40. this.triggerEvent('loaded')
  41. },
  42. handleARReady: function ({
  43. detail
  44. }) {
  45. console.log('arReady', this.scene.ar.arVersion);
  46. },
  47. placeNode(event) {
  48. const {
  49. clientX,
  50. clientY
  51. } = event.touches[0];
  52. const {
  53. frameWidth: width,
  54. frameHeight: height
  55. } = this.scene;
  56. if (clientY / height > 0.8 && clientX / width < 0.2) {
  57. this.scene.getNodeById('setitem').visible = false;
  58. this.scene.ar.resetPlane();
  59. } else {
  60. this.scene.ar.placeHere('setitem', true);
  61. console.error('show-gltf')
  62. if (!this.isPlay) {
  63. this.setData({
  64. isPlay: true
  65. })
  66. }
  67. }
  68. this.scene.event.addOnce('touchstart', this.placeNode.bind(this));
  69. },
  70. handleGLTFLoaded({
  71. detail
  72. }) {
  73. const el = detail.value.target;
  74. // console.error('handleGLTFLoaded')
  75. // const gltf = el.getComponent("gltf");
  76. // const video = this.scene.assets.getAsset("video-texture", "cat");
  77. // const newMat = this.scene.assets.getAsset("material", "catMat");
  78. // this.video = video
  79. // for (const mesh of gltf.getPrimitivesByNodeName("video")) {
  80. // mesh.material = newMat
  81. // }
  82. }
  83. }
  84. })