在Spark AR中使用脚本更改材料颜色

时间:2019-09-23 02:26:25

标签: javascript spark-ar-studio

在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; 

enter image description here enter image description here

2 个答案:

答案 0 :(得分: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变量的方法,因此您不必键入值,而是在补丁编辑器中使用colorpicker。希望对您有所帮助!

答案 1 :(得分:-1)

  1. 使用RGBA:

RGBA to material color

  1. 使用颜色:

enter image description here

  1. 着色纹理:

enter image description here