[VFXGraph] 속도도 위치가 0.5에서 벗어난 문제의 응급 처리
입문
Houdini를 사용하여 다음 VectorField를 만들었습니다.
0-0.5이외에 속도(0,0,0)
위의 VectorField를 참조하십시오.fga 파일로 Unity 가져오기
VisualEffectGraph에서 속도도로 사용됩니다.
발생한 문제
결과적으로 3D 텍스쳐(속도 맵) 위치가 0.5에서 벗어납니다.
입자는 좌표(0,0,0)를 중심으로 입방체이지만 속도 맵은 좌표(0.5,0.5,0.5)를 중심으로 분포됩니다.
이번에는 원본 코드를 개조해서 이 문제를 해결했기 때문에 나는 그것을 필기하고 싶다.
환경
Unity2019.1.1f1
Visual Effect Graph - Version 5.13.0 (Preview)
대책1: 입자의 생성 위치를 0.5로 엇갈리게 한다(오류된 대책)
(스토리지 패키지 폴더)\편집기\Blocks\Implementations\위치 폴더
PositionAABox.cs에서 다음 코드를 볼 수 있습니다.
PositionAABox.cs...
public override string source
{
get
{
if (positionMode == PositionMode.Volume)
{
return @"position = Box_size * (RAND3 - 0.5f) + Box_center;";
}
...
참고로 source
는 VisualEffectGraph 내부 관리의 계산 착색기의 일부입니다.
코드 다시 쓰기
상술한 코드를 다음과 같이 개작하다.
PositionAABox.cs...
public override string source
{
get
{
if (positionMode == PositionMode.Volume)
{
// return @"position = Box_size * (RAND3 - 0.5f) + Box_center;";
return @"position = Box_size * (RAND3) + Box_center;";
}
...
참조:
[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
결과
Unity를 개조한 상태에서 다시 시작할 때는 다음과 같습니다.
위치 중심 오프셋 (0.5,0.5,0.5)
언뜻 보기에는 옳은 것 같지만 (0,0,0) 중심의 속도 분포를 원했던 것은 잘못된 대책이었다.
PositionAABox.cs 수정 전 상태로 복원
대책 2: 3D 텍스쳐의 샘플링 위치를 0.5(올바른 대책일 수 있음)
(스토리지 패키지 폴더)\편집기\Blocks\Implementations\속성 폴더
정탐AttributeFromMap.cs
하면 다음과 같은 코드가 있습니다.
다음 코드SamplePosition
는 3차원 무늬의 샘플링 위치입니다.
AttributeFromMap.cs...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
다음으로 변경합니다.
AttributeFromMap.cs...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition + 0.5f, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
결과
Unity를 개조한 상태에서 다시 시작할 때는 다음과 같습니다.
(0,0,0) 중심의 속도 분포.
추가:attributeMap의 정의 위치
attributeMap
는 VFXCommon입니다.cginc에서 정의한 구조체인 것 같습니다.Set Velocity from Map
의 샘플 모드를 샘플 3D LOD로 설정하면 다음 구조는attributeMap 형식으로 사용됩니다.
(패키지의 스토리지 폴더)\Shaders\VFXCommon.cginc...
struct VFXSampler3D
{`
Texture3D t;
SamplerState s;
};
...
참조 링크
Houdini에서 VectorField(.fga)를 만드는 방법(예제 항목 포함)
https://forty.hatenadiary.jp/entry/2018/11/07/000250
[Unity] FGA를 Unity로 가져와 Visual Effect Graph의 VectorField로 사용하는 방법
https://forty.hatenadiary.jp/entry/2018/11/07/043600
[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
Reference
이 문제에 관하여([VFXGraph] 속도도 위치가 0.5에서 벗어난 문제의 응급 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/28941ea67f08e7c14174
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
위의 VectorField를 참조하십시오.fga 파일로 Unity 가져오기
VisualEffectGraph에서 속도도로 사용됩니다.
발생한 문제
결과적으로 3D 텍스쳐(속도 맵) 위치가 0.5에서 벗어납니다.
입자는 좌표(0,0,0)를 중심으로 입방체이지만 속도 맵은 좌표(0.5,0.5,0.5)를 중심으로 분포됩니다.
이번에는 원본 코드를 개조해서 이 문제를 해결했기 때문에 나는 그것을 필기하고 싶다.
환경
Unity2019.1.1f1
Visual Effect Graph - Version 5.13.0 (Preview)
대책1: 입자의 생성 위치를 0.5로 엇갈리게 한다(오류된 대책)
(스토리지 패키지 폴더)\편집기\Blocks\Implementations\위치 폴더
PositionAABox.cs에서 다음 코드를 볼 수 있습니다.
PositionAABox.cs...
public override string source
{
get
{
if (positionMode == PositionMode.Volume)
{
return @"position = Box_size * (RAND3 - 0.5f) + Box_center;";
}
...
참고로 source
는 VisualEffectGraph 내부 관리의 계산 착색기의 일부입니다.
코드 다시 쓰기
상술한 코드를 다음과 같이 개작하다.
PositionAABox.cs...
public override string source
{
get
{
if (positionMode == PositionMode.Volume)
{
// return @"position = Box_size * (RAND3 - 0.5f) + Box_center;";
return @"position = Box_size * (RAND3) + Box_center;";
}
...
참조:
[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
결과
Unity를 개조한 상태에서 다시 시작할 때는 다음과 같습니다.
위치 중심 오프셋 (0.5,0.5,0.5)
언뜻 보기에는 옳은 것 같지만 (0,0,0) 중심의 속도 분포를 원했던 것은 잘못된 대책이었다.
PositionAABox.cs 수정 전 상태로 복원
대책 2: 3D 텍스쳐의 샘플링 위치를 0.5(올바른 대책일 수 있음)
(스토리지 패키지 폴더)\편집기\Blocks\Implementations\속성 폴더
정탐AttributeFromMap.cs
하면 다음과 같은 코드가 있습니다.
다음 코드SamplePosition
는 3차원 무늬의 샘플링 위치입니다.
AttributeFromMap.cs...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
다음으로 변경합니다.
AttributeFromMap.cs...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition + 0.5f, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
결과
Unity를 개조한 상태에서 다시 시작할 때는 다음과 같습니다.
(0,0,0) 중심의 속도 분포.
추가:attributeMap의 정의 위치
attributeMap
는 VFXCommon입니다.cginc에서 정의한 구조체인 것 같습니다.Set Velocity from Map
의 샘플 모드를 샘플 3D LOD로 설정하면 다음 구조는attributeMap 형식으로 사용됩니다.
(패키지의 스토리지 폴더)\Shaders\VFXCommon.cginc...
struct VFXSampler3D
{`
Texture3D t;
SamplerState s;
};
...
참조 링크
Houdini에서 VectorField(.fga)를 만드는 방법(예제 항목 포함)
https://forty.hatenadiary.jp/entry/2018/11/07/000250
[Unity] FGA를 Unity로 가져와 Visual Effect Graph의 VectorField로 사용하는 방법
https://forty.hatenadiary.jp/entry/2018/11/07/043600
[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
(스토리지 패키지 폴더)\편집기\Blocks\Implementations\위치 폴더
PositionAABox.cs에서 다음 코드를 볼 수 있습니다.
PositionAABox.cs
...
public override string source
{
get
{
if (positionMode == PositionMode.Volume)
{
return @"position = Box_size * (RAND3 - 0.5f) + Box_center;";
}
...
참고로 source
는 VisualEffectGraph 내부 관리의 계산 착색기의 일부입니다.코드 다시 쓰기
상술한 코드를 다음과 같이 개작하다.
PositionAABox.cs
...
public override string source
{
get
{
if (positionMode == PositionMode.Volume)
{
// return @"position = Box_size * (RAND3 - 0.5f) + Box_center;";
return @"position = Box_size * (RAND3) + Box_center;";
}
...
참조:[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
결과
Unity를 개조한 상태에서 다시 시작할 때는 다음과 같습니다.
위치 중심 오프셋 (0.5,0.5,0.5)
언뜻 보기에는 옳은 것 같지만 (0,0,0) 중심의 속도 분포를 원했던 것은 잘못된 대책이었다.
PositionAABox.cs 수정 전 상태로 복원
대책 2: 3D 텍스쳐의 샘플링 위치를 0.5(올바른 대책일 수 있음)
(스토리지 패키지 폴더)\편집기\Blocks\Implementations\속성 폴더
정탐AttributeFromMap.cs
하면 다음과 같은 코드가 있습니다.
다음 코드SamplePosition
는 3차원 무늬의 샘플링 위치입니다.
AttributeFromMap.cs...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
다음으로 변경합니다.
AttributeFromMap.cs...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition + 0.5f, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
결과
Unity를 개조한 상태에서 다시 시작할 때는 다음과 같습니다.
(0,0,0) 중심의 속도 분포.
추가:attributeMap의 정의 위치
attributeMap
는 VFXCommon입니다.cginc에서 정의한 구조체인 것 같습니다.Set Velocity from Map
의 샘플 모드를 샘플 3D LOD로 설정하면 다음 구조는attributeMap 형식으로 사용됩니다.
(패키지의 스토리지 폴더)\Shaders\VFXCommon.cginc...
struct VFXSampler3D
{`
Texture3D t;
SamplerState s;
};
...
참조 링크
Houdini에서 VectorField(.fga)를 만드는 방법(예제 항목 포함)
https://forty.hatenadiary.jp/entry/2018/11/07/000250
[Unity] FGA를 Unity로 가져와 Visual Effect Graph의 VectorField로 사용하는 방법
https://forty.hatenadiary.jp/entry/2018/11/07/043600
[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
...
if (SampleMode == AttributeMapSampleMode.Sample2DLOD || SampleMode == AttributeMapSampleMode.Sample3DLOD)
{
output += string.Format(@"
{0} value = ({0})attributeMap.t.SampleLevel(attributeMap.s, SamplePosition + 0.5f, LOD);
{1}
", GetCompatTypeString(valueType), biasScale);
}
...
...
struct VFXSampler3D
{`
Texture3D t;
SamplerState s;
};
...
Houdini에서 VectorField(.fga)를 만드는 방법(예제 항목 포함)
https://forty.hatenadiary.jp/entry/2018/11/07/000250
[Unity] FGA를 Unity로 가져와 Visual Effect Graph의 VectorField로 사용하는 방법
https://forty.hatenadiary.jp/entry/2018/11/07/043600
[Unity] PackageManager가 제공하는 패키지의 다운로드 목적지와 패키지 개조 방법
http://tsubakit1.hateblo.jp/entry/2018/08/16/221016
Reference
이 문제에 관하여([VFXGraph] 속도도 위치가 0.5에서 벗어난 문제의 응급 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-ngtm/items/28941ea67f08e7c14174텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)