Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t改变材料的纹理-SparkAR v89?_Javascript_Augmented Reality_Spark Ar Studio - Fatal编程技术网

Javascript Can';t改变材料的纹理-SparkAR v89?

Javascript Can';t改变材料的纹理-SparkAR v89?,javascript,augmented-reality,spark-ar-studio,Javascript,Augmented Reality,Spark Ar Studio,在SparkAR v89和以前的版本中,使用脚本以编程方式更改材质的纹理,这将起到以下作用: const Materials = require('Materials'); const Textures = require('Textures'); Promise.all([ Scene.root.findFirst('plane4'), ]).then(function (results) { const plane4 = results[0]; const

在SparkAR v89和以前的版本中,使用脚本以编程方式更改材质的纹理,这将起到以下作用:

const Materials = require('Materials');
const Textures = require('Textures');

Promise.all([

    Scene.root.findFirst('plane4'),

]).then(function (results) {

    const plane4 = results[0];

    const ipadPerfect = Scene.root.findFirst('ipad-perfect');
    const iphonePerfect = Scene.root.findFirst('iphone-perfect');
    const computerPerfect = Scene.root.findFirst('computer-perfect');

    // Get the timer ready
    start();

    function start() {

      const bgMat = Materials.findFirst('bg');
      const mutableScreen = Materials.findFirst('mutablescreen');

      var texture = Textures.findFirst('unnamed-min');

      bgMat.diffuse = texture;
      bgMat.emission = texture;
      mutableScreen.diffuse = texture;
      mutableScreen.emission = texture;

即使使用
get
findAll
更改findFirst,也不会产生任何结果。现在如何更改材质的纹理?

请求纹理、材质和场景对象需要一些时间。从v85版本开始,对于这些东西,您需要在
Promise.All
块中使用类似
findFirst
的方法。只需将对纹理和材质的请求转移到您请求的
plane4
所在的同一块。您的其他代码似乎是正确的

const Materials = require('Materials');
const Textures = require('Textures');
const Scene = require('Scene');

Promise.all([

    Scene.root.findFirst('plane4'),
    Scene.root.findFirst('ipad-perfect'),
    Scene.root.findFirst('iphone-perfect'),
    Scene.root.findFirst('computer-perfect'),
    Materials.findFirst('bg'),
    Materials.findFirst('mutablescreen'),
    Textures.findFirst('unnamed-min')


]).then(function (results) {

    const plane4 = results[0];

    const ipadPerfect = results[1];
    const iphonePerfect = results[2];
    const computerPerfect = results[3];
    const bgMat = results[4];
    const mutableScreen = results[5];
    const texture = results [6];

    // Get the timer ready
    start();

    function start() {


      bgMat.diffuse = texture;
      bgMat.emission = texture;
      mutableScreen.diffuse = texture;
      mutableScreen.emission = texture;

谢谢你,但是它不起作用。你能看到我的新问题吗