2

在 Spark AR 中没有直接使用补丁编辑器更改颜色的方法,使用脚本似乎也不起作用,即使我能够影响最后一行使用的材料的不透明度,我在 Spark 中没有错误只是不起作用,但编辑器一直突出显示 Reactive.RGBA 的第一个参数并给我这个错误

'0' 类型的参数不可分配给'ScalarSignal'.ts(2345) 类型的参数

有什么解决办法吗?

const Materials = require('Materials');
const Textures = require('Textures');
const Diagnostics = require('Diagnostics');
const Scene = require('Scene');
const NativeUI = require('NativeUI');
const Patches = require('Patches');
const Reactive = require('Reactive');
var Animation = require('Animation');


const plane = Scene.root.find('plane0');

//Materials.get('material0').diffuse = Reactive.RGBA(1,0,1,1);
plane.material.color = Reactive.RGBA(0.2,0,1,0.5);
//plane.Textures.color = Reactive.RGBA(1,0,1,0.5);
//plane.material.opacity = 0.5; 

在此处输入图像描述 在此处输入图像描述

4

3 回答 3

2

我碰巧在做类似的事情,到目前为止我所拥有的是这样的;

var texSig = Textures.get('1').signal;//optional for your use
var packedCol = Reactive.pack4(1, 0.5, 0.7, 1);
var newCol = Reactive.mul(texSig, packedCol);//optional for your use

const textureSlot = Shaders.DefaultMaterialTextures.DIFFUSE;
Materials.get('material0').setTexture(newCol, {textureSlotName: textureSlot});

您可以跳过与纹理的乘法以仅更改材质的颜色。我正在寻找一种从补丁编辑器获取颜色到 unpackedColor 变量的方法,因此您不必输入值,而是使用补丁编辑器中的颜色选择器。我希望这有帮助!

于 2019-09-23T07:31:08.057 回答
0

很老的问题,但即使在今天,stackoverflow 上也很少回答 spark AR 问题 :( 所以也许它会在未来帮助某人:

你需要设置diffuseColorFactor,例如:

diffuseColorFactor = Reactive.RGBA(0.1,0.2,0.3,0.5)

在 spark AR 中查找实际属性名称非常困难,因为它不是您在 Studio GUI 中看到的。我倾向于通过混合文档并在我的代码中枚举实际 Javascript 对象的属性来找到它,这是一种逆向工程:

const stuff = await Materials.findFirst(`particle_h`) 
for (const property in stuff) {
  try{
   Diagnostics.log(`${property}: ${stuff[property]}`);
  }
  catch{
   Diagnostics.log(property);
  }
} 
于 2021-12-20T13:53:19.830 回答
-1
  1. 使用 RGBA:

RGBA 转材质颜色

  1. 使用颜色:

在此处输入图像描述

  1. 着色纹理:

在此处输入图像描述

于 2019-09-27T09:11:37.097 回答