MAX로 DMX LED 색상 변경(추가: Unity 조명 색상 변경)

15217 단어 Max-MSPDMXUnity

색깔을 간단하게 바꾸고 싶어요.


상상의 색깔이 되고 싶어서.
swatch 객체를 사용했습니다.
마침 DMX 기자재와 동일한 0~255의 RGB를 반환해야 하므로 별도로 채널을 설정해야 합니다.
(커브의 일관성 여부는 확실하지 않지만 대체로 양호함)

다음 [pak40]은 채널을 나타냅니다.

이 기종에도 W 같은 것이 있다.(더 밝아질 것 같다)

이렇게 사용하고 있습니다.



[sdmx] 앞에 [dmxusbpro] 대상이 있습니다.
자세한 내용은 지난번 기사DMX를 Max로 구동(조명)를 참조하십시오.

조명의 고조



조명 기자재는 RGB의 밝기와 달리 Dimming(조광)이라는 쇠락이 있다.
이 위상의 밝기를 곱하다.
중점으로 삼다
이 채널(이곳은 3ch)의 초기값이면 아무리 RGB 채널을 변경해도 빛이 나지 않는 경우가 있다. 
반짝거리고.
DMX가 제어하는 상황에서 같은 채널에서는 다양한 특별 공연이 제공됩니다.

반짝임 같은 주기도 기종에 따라 다르기 때문에 맞추기가 어려울 수 있다.
이 [if] 대상과 [zmap]의 동작은 다른 기재와 간단하고 비슷하다.
두 번째는 10ch와 이 디밍과 관련된 0-127 조광이고, 128-256은 플래시 공연인 것 같다.
11, 12, 13ch는 RGB입니다.
(조명 장비의 경우 DMX의 시작 채널은 10)

Unity로 OSC 보내기


유닛에 OSC를 보내고 싶어서.

udpsend도 보내고 있습니다.
참조: NEAREAL UnityOSC에서 OSC 수신/MaxMSP로 전송

Unity로 OSC 수신


Unity 내 조명도 같은 RGB로 바뀌어 있다.
약간 회전하거나 고장이 났지만 색이 바뀐 곳이 움직이고 있어 소스도 넣는다.
OSCController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OSCController : MonoBehaviour {

    public Light sport1;
    public Light sport2;
    public Light sport3;
    public GameObject go;

    public string serverId = "MaxMSP";
    public string serverIp = "127.0.0.1";
    public int    serverPort = 12000;
    // Use this for initialization
    void Start () {
        OSCHandler.Instance.Init(this.serverId, this.serverIp, this.serverPort);
        to = go.transform;
        from = go.transform;
    }

    private long latestTimeStamp = 0;

    public Transform from = null;
    public Transform to = null;
    public float rotationSpeed = 10.0f;

    // Update is called once per frame
    void Update () {
        OSCHandler.Instance.UpdateLogs();

        foreach (KeyValuePair<string, ServerLog> item in OSCHandler.Instance.Servers)
        {
            if (item.Value.packets.Count == 0)
            {
                continue;
            }

            int latestPacketIndex = item.Value.packets.Count - 1;

            if (this.latestTimeStamp == item.Value.packets[latestPacketIndex].TimeStamp)
            {
                continue;
            }

            this.latestTimeStamp = item.Value.packets[latestPacketIndex].TimeStamp;

            Debug.Log("Receive : "
                + item.Value.packets[latestPacketIndex].TimeStamp
                + " / "
                + item.Value.packets[latestPacketIndex].Address
                + " / "
                + item.Value.packets[latestPacketIndex].Data[0]
            //+ item.Value.packets[latestPacketIndex].Data[1]
            //+ item.Value.packets[latestPacketIndex].Data[2]
            );

            if (item.Value.packets [latestPacketIndex].Address == "/color") {
                Color newColor = new Color ((int)item.Value.packets [latestPacketIndex].Data [0] / 255.0f,
                                    (int)item.Value.packets [latestPacketIndex].Data [1] / 255.0f,
                                    (int)item.Value.packets [latestPacketIndex].Data [2] / 255.0f

                                );
                sport1.color = newColor;
                sport2.color = newColor;
                sport3.color = newColor;
            }


            if (item.Value.packets [latestPacketIndex].Address == "/rotate") {
                //go.transform.Rotate (0, (int)item.Value.packets [latestPacketIndex].Data [0] / 255.0f * 360.0f, 0);
                to.transform.Rotate (0, (((int)item.Value.packets [latestPacketIndex].Data [0] / 255.0f) - 0.5f )*180.0f , 0);
            }

            float rotationStep = rotationSpeed * Time.deltaTime;
            Quaternion rotation = Quaternion.RotateTowards (from.rotation, to.rotation, rotationStep);
            from.rotation = rotation;

        }
    }
}

비디오: 목소리로 유닛 화면 밖을 밝게 해줬어요.

좋은 웹페이지 즐겨찾기