icon预览和自动生成
This commit is contained in:
@@ -11,10 +11,11 @@ namespace NBF
|
||||
[Serializable]
|
||||
public class ModelViewRenderImage
|
||||
{
|
||||
private ModelViewerSettings _viewerSettings;
|
||||
public Transform modelRoot { get; private set; }
|
||||
public Camera Camera => _camera;
|
||||
|
||||
public RenderTexture RT => _renderTexture;
|
||||
|
||||
public ModelViewerSettings ViewerSettings { get; private set; }
|
||||
Camera _camera;
|
||||
Image _image;
|
||||
Transform _root;
|
||||
@@ -47,7 +48,7 @@ namespace NBF
|
||||
|
||||
Object prefab = Resources.Load("RenderTexture/RenderImageCamera");
|
||||
GameObject go = (GameObject)Object.Instantiate(prefab, _root, false);
|
||||
|
||||
|
||||
_camera = go.GetComponent<Camera>();
|
||||
_camera.transform.position = Vector3.zero;
|
||||
_camera.cullingMask = 1 << RENDER_LAYER;
|
||||
@@ -65,7 +66,7 @@ namespace NBF
|
||||
_image.onRemovedFromStage.Add(OnRemoveFromStage);
|
||||
|
||||
|
||||
_viewerSettings = new ModelViewerSettings();
|
||||
// _viewerSettings = new ModelViewerSettings();
|
||||
|
||||
if (_image.stage != null)
|
||||
OnAddedToStage();
|
||||
@@ -73,11 +74,13 @@ namespace NBF
|
||||
_camera.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
public void LoadModel(string model)
|
||||
public void LoadModel(string model, ModelViewerSettings settings)
|
||||
{
|
||||
this.UnloadModel();
|
||||
ViewerSettings = settings;
|
||||
|
||||
Object prefab = Resources.Load(model);
|
||||
if(prefab == null) return;
|
||||
GameObject go = ((GameObject)Object.Instantiate(prefab));
|
||||
var joint = go.GetComponent<Joint>();
|
||||
if (joint != null)
|
||||
@@ -90,7 +93,12 @@ namespace NBF
|
||||
_model.localPosition = Vector3.zero;
|
||||
_model.localScale = Vector3.one;
|
||||
_model.localEulerAngles = Vector3.zero;
|
||||
ModelViewerUtils.InitSetting(go, _viewerSettings);
|
||||
if (ViewerSettings == null)
|
||||
{
|
||||
ViewerSettings = new ModelViewerSettings();
|
||||
ModelViewerUtils.InitSetting(go, ViewerSettings);
|
||||
}
|
||||
|
||||
Review();
|
||||
}
|
||||
|
||||
@@ -109,22 +117,22 @@ namespace NBF
|
||||
|
||||
public void Review()
|
||||
{
|
||||
_model.position = _viewerSettings.objectPosition;
|
||||
_model.localScale = _viewerSettings.objectScale;
|
||||
_model.eulerAngles = _viewerSettings.objectRotation;
|
||||
_model.position = ViewerSettings.objectPosition;
|
||||
_model.localScale = ViewerSettings.objectScale;
|
||||
_model.eulerAngles = ViewerSettings.objectRotation;
|
||||
|
||||
|
||||
_camera.clearFlags = CameraClearFlags.Nothing;
|
||||
_camera.backgroundColor = new Color(0, 0, 0, 0); // 完全透明
|
||||
_camera.transform.position = _viewerSettings.cameraPosition;
|
||||
_camera.transform.LookAt(_viewerSettings.cameraTarget);
|
||||
_camera.orthographic = _viewerSettings.cameraOrtho;
|
||||
_camera.orthographicSize = _viewerSettings.cameraSize;
|
||||
_camera.orthographicSize /= _viewerSettings.camerasScaleFactor;
|
||||
_camera.transform.position = ViewerSettings.cameraPosition;
|
||||
_camera.transform.LookAt(ViewerSettings.cameraTarget);
|
||||
_camera.orthographic = ViewerSettings.cameraOrtho;
|
||||
_camera.orthographicSize = ViewerSettings.cameraSize;
|
||||
_camera.orthographicSize /= ViewerSettings.camerasScaleFactor;
|
||||
|
||||
_camera.fieldOfView = _viewerSettings.cameraFov;
|
||||
_camera.fieldOfView = ViewerSettings.cameraFov;
|
||||
float fov = 2 * Mathf.Rad2Deg * Mathf.Atan2(
|
||||
Mathf.Tan(_camera.fieldOfView * Mathf.Deg2Rad / 2), _viewerSettings.camerasScaleFactor
|
||||
Mathf.Tan(_camera.fieldOfView * Mathf.Deg2Rad / 2), ViewerSettings.camerasScaleFactor
|
||||
);
|
||||
if (fov < 0)
|
||||
fov += 180;
|
||||
@@ -135,13 +143,6 @@ namespace NBF
|
||||
_camera.depthTextureMode = DepthTextureMode.Depth;
|
||||
_camera.clearFlags = CameraClearFlags.Color;
|
||||
_camera.GetUniversalAdditionalCameraData().renderPostProcessing = false; //URP only
|
||||
|
||||
// var urpCamData = _camera.GetUniversalAdditionalCameraData();
|
||||
// urpCamData.renderPostProcessing = false;
|
||||
// urpCamData.requiresColorOption = CameraOverrideOption.On;
|
||||
// urpCamData.requiresDepthOption = CameraOverrideOption.Off;
|
||||
// urpCamData.requiresColorTexture = false;
|
||||
// urpCamData.SetRenderer(1); // 关键步骤:指定“透明输出”的Renderer
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
@@ -160,7 +161,7 @@ namespace NBF
|
||||
if (_renderTexture != null)
|
||||
return;
|
||||
|
||||
_renderTexture = new RenderTexture(1024, 1024, 24, RenderTextureFormat.ARGB32)
|
||||
_renderTexture = new RenderTexture(512, 512, 24, RenderTextureFormat.ARGB32)
|
||||
{
|
||||
antiAliasing = 1,
|
||||
filterMode = FilterMode.Bilinear,
|
||||
|
||||
Reference in New Issue
Block a user