Exemple #1
0
        public void ProcessExpressionTRSToMatrix()
        {
            var t = new Vector3(0.2f, 0.3f, 0.4f);
            var r = new Vector3(0.5f, 0.6f, 0.7f);
            var s = new Vector3(0.8f, 0.9f, 1.0f);

            var q = Quaternion.Euler(r);

            Matrix4x4 result = new Matrix4x4();

            result.SetTRS(t, q, s);

            var value_t = new VFXValue <Vector3>(t);
            var value_r = new VFXValue <Vector3>(r);
            var value_s = new VFXValue <Vector3>(s);

            var expressionA = new VFXExpressionTRSToMatrix(new VFXExpression[] { value_t, value_r, value_s });
            var expressionB = new VFXExpressionExtractPositionFromMatrix(expressionA);
            var expressionC = new VFXExpressionExtractAnglesFromMatrix(expressionA);
            var expressionD = new VFXExpressionExtractScaleFromMatrix(expressionA);

            var context           = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation);
            var resultExpressionA = context.Compile(expressionA);
            var resultExpressionB = context.Compile(expressionB);
            var resultExpressionC = context.Compile(expressionC);
            var resultExpressionD = context.Compile(expressionD);

            Assert.AreEqual(result, resultExpressionA.Get <Matrix4x4>());
            Assert.AreEqual((t - resultExpressionB.Get <Vector3>()).magnitude, 0.0f, 0.01f);
            Assert.AreEqual((r - resultExpressionC.Get <Vector3>()).magnitude, 0.0f, 0.01f);
            Assert.AreEqual((s - resultExpressionD.Get <Vector3>()).magnitude, 0.0f, 0.01f);
        }
Exemple #2
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var scale  = new VFXExpressionExtractScaleFromMatrix(inputExpression[0]);
            var radius = inputExpression[1];

            return(new VFXExpression[] { VFXOperatorUtility.SphereVolume(radius, scale) });
        }
Exemple #3
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var scale       = new VFXExpressionExtractScaleFromMatrix(inputExpression[0]);
            var majorRadius = inputExpression[1];
            var minorRadius = inputExpression[2];

            return(new VFXExpression[] { VFXOperatorUtility.TorusVolume(majorRadius, minorRadius, scale) });
        }
Exemple #4
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var scale      = new VFXExpressionExtractScaleFromMatrix(inputExpression[0]);
            var baseRadius = inputExpression[1];
            var topRadius  = inputExpression[2];
            var height     = inputExpression[3];

            return(new VFXExpression[] { VFXOperatorUtility.ConeVolume(baseRadius, topRadius, height, scale) });
        }
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            VFXExpression inverseTRS    = new VFXExpressionInverseTRSMatrix(inputExpression[1]);
            VFXExpression scale         = new VFXExpressionExtractScaleFromMatrix(inputExpression[1]);
            VFXExpression uvw           = new VFXExpressionTransformPosition(inverseTRS, inputExpression[2]) + VFXValue.Constant(new Vector3(0.5f, 0.5f, 0.5f));
            VFXExpression distanceExpr  = new VFXExpressionSampleSDF(inputExpression[0], uvw, scale, inputExpression[3]);
            VFXExpression directionExpr = new VFXExpressionSampleSDFNormal(inputExpression[0], inverseTRS, uvw, inputExpression[3]) * VFXValue.Constant(new Vector3(-1.0f, -1.0f, -1.0f));

            return(new[] { distanceExpr, directionExpr });
        }