public static GameObject NPCModelLoad(uint monsterID, ModelQuality mq = ModelQuality.HIGH) { Mob.MobInfo mosterInfo = _LowDataMgr.instance.GetMonsterInfo(monsterID); string monsterPref = ""; GameObject oriUnit = null; if (mosterInfo != null) { monsterPref = mosterInfo.prefab; //oriUnit = ResourceMgr.Load(string.Format("Character/Prefab/{0}", monsterPref)) as GameObject; oriUnit = ResourceMgr.Load(GetPrefabSuffix("Character/Prefab/", monsterPref, mq)) as GameObject; if (oriUnit == null) { oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", monsterPref)) as GameObject; } } else { oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", monsterPref)) as GameObject; } //GameObject _unit = GameObject.Instantiate(oriUnit) as GameObject; return(oriUnit); }
public Model(ModelDefinition definition, ModelQuality quality) { Definition = definition; Quality = quality; Build(); }
/// <summary> /// Sets up 3D model data /// </summary> /// <param name="numTotalMeshes">The number of meshes the model contains</param> /// <param name="MaterialCount">The number of materials the model contains</param> public Model(int numTotalMeshes, int MaterialCount) { this.numTotalMeshes = numTotalMeshes; for (int i = 0; i < 3; i++) { Quality[i] = new ModelQuality(numTotalMeshes / 2); } }
public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality) : base(engine) { this.Definition = definition; this.Quality = quality; this.Variant = variant; this.Transformation = Matrix.Identity; Init(); }
public Model GetModel(ModelQuality quality) { var v = (int)quality; if (_Models[v] == null) { _Models[v] = new Model(this, quality); } return(_Models[v]); }
public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality) : base(engine, variant, definition, quality) { Skeleton = skeleton; _AnimationPlayer = new AnimationPlayer(); var nameMap = new Dictionary<string, int>(); for (var i = 0; i < Skeleton.BoneNames.Length; ++i) nameMap.Add(Skeleton.BoneNames[i], i); _BoneMap = Definition.BoneNames.Select(n => nameMap[n]).ToArray(); _InvertedReferencePose = Skeleton.ReferencePose.Select(_ => Matrix.Invert(_)).ToArray(); }
static string GetPrefabSuffix(string prefabName, ModelQuality mq) { if (mq == ModelQuality.HIGH) { return(string.Format("{0}_ss", prefabName)); } else if (mq == ModelQuality.UI) { return(string.Format("{0}_s", prefabName)); } return(string.Format("{0}", prefabName)); }
static string GetPrefabSuffix(string prefabPath, string prefabName, ModelQuality mq) { //string.Format("Character/Prefab/{0}_s", clothPref) if (mq == ModelQuality.HIGH) { return(string.Format("{0}{1}_ss", prefabPath, prefabName)); } else if (mq == ModelQuality.UI) { return(string.Format("{0}{1}_s", prefabPath, prefabName)); } return(string.Format("{0}{1}", prefabPath, prefabName)); }
public Content.PrimitiveModel Get(ModelDefinition definition, ModelQuality quality) { var key = Tuple.Create(definition.File.Path, quality); Content.PrimitiveModel primitive; if (_Primitives.TryGetValue(key, out primitive)) return primitive; var mdl = definition.GetModel(quality); primitive = new Content.PrimitiveModel(_Engine.Device, mdl); _Primitives.Add(key, primitive); return primitive; }
public Content.PrimitiveModel Get(ModelDefinition definition, ModelQuality quality) { var key = Tuple.Create(definition.File.Path, quality); Content.PrimitiveModel primitive; if (_Primitives.TryGetValue(key, out primitive)) { return(primitive); } var mdl = definition.GetModel(quality); primitive = new Content.PrimitiveModel(_Engine.Device, mdl); _Primitives.Add(key, primitive); return(primitive); }
public ContentModel(Engine engine, TransformedModel transformedModel, ModelQuality quality) : base(engine) { this.Parameters = new Data.ParametersBase(); this.Definition = transformedModel.Model; this.Quality = Quality; this.Variant = new ModelVariantIdentifier { ImcVariant = ImcVariant.Default, StainKey = null }; this.Transformation = Matrix.Scaling(transformedModel.Scale.ToDx()) * Matrix.RotationX(transformedModel.Rotation.X) * Matrix.RotationY(transformedModel.Rotation.Y) * Matrix.RotationZ(transformedModel.Rotation.Z) * Matrix.Translation(transformedModel.Translation.ToDx()); Init(); }
public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality) : this(engine, skeleton, variant, file.GetModelDefinition(), quality) { }
/// <summary> /// 플레이어 캐릭터의 모델로딩 /// </summary> /// <param name="charIdx">캐릭터의 고유 아이디 현재로선 권사 11000, 의사 13000</param> /// <param name="HeadItemIdx">헬멧에 낀 아이템의 인덱스</param> /// <param name="CostumeItemIdx"></param> /// <param name="ClothItemIdx"></param> /// <param name="WeaponItemIdx"></param> /// <param name="HideCostume"></param> /// <returns></returns> /// public static GameObject PCModelLoad(uint charIdx, uint HeadItemIdx, uint CostumeItemIdx, uint ClothItemIdx, uint WeaponItemIdx, bool HideCostume, ref GameObject[] WeaponEffect, ModelQuality mq = ModelQuality.HIGH) { //추후 다 어셋번들에서 읽어오게 해야함 GameObject _unit = null; string headPref = ""; string weaponPref = ""; string clothPref = ""; //uint aniIdx = 0; string rightWeaponDummy = ""; string leftWeaponDummy = ""; if (HideCostume) { //착용한 옷아이템이 없을경우 if (ClothItemIdx == 0) { //캐릭터의 디폴트 아이템의 옷외형을 가져옴 clothPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.CLOTH).prefab; } else { //현재 장착중인 옷을 가져옴 clothPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(ClothItemIdx).prefab; } //코스튬을 숨기든 말던 애니메이션 인덱스는 코스튬의 것을 가져와야함 //aniIdx = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).AniId; //착용한 무기아이템의 정보 if (WeaponItemIdx == 0) { //캐릭터의 디폴트 아이템의 무기외형을 가져옴 weaponPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.WEAPON).prefab; } else { //현재 장착중인 무기 가져옴 weaponPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(WeaponItemIdx).prefab; } //착용한 머리아이템의 정보 if (HeadItemIdx == 0) { //캐릭터의 디폴트 아이템의 머리외형을 가져옴 headPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.HELMET).prefab; } else { //현재 장착중인 머리 가져옴 headPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(HeadItemIdx).prefab; } rightWeaponDummy = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.WEAPON).RightWeaDummy; leftWeaponDummy = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.WEAPON).LeftWeaDummy; } else { //착용한 머리아이템의 정보만 체크 if (HeadItemIdx == 0) { //캐릭터의 디폴트 아이템의 머리외형을 가져옴 headPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.HELMET).prefab; } else { //현재 장착중인 머리 가져옴 headPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(HeadItemIdx).prefab; } clothPref = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).Bodyprefab; weaponPref = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).Weaprefab; rightWeaponDummy = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).RightWeaDummy; leftWeaponDummy = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).LeftWeaDummy; } if (!headPref.Contains("face") || Resources.Load(string.Format("Character/Prefab/{0}", headPref)) == null) { Debug.LogError("not found head prefab " + headPref); if (charIdx == 12000) { headPref = "pc_p_face_Lv01"; } else if (charIdx == 11000) { headPref = "pc_f_face_Lv01"; } else if (charIdx == 13000) { headPref = "pc_d_face_Lv01"; } } clothPref = GetPrefabSuffix(clothPref, mq); weaponPref = GetPrefabSuffix(weaponPref, mq); headPref = GetPrefabSuffix(headPref, mq); _unit = CreatePlayerDefaultModel(clothPref, weaponPref, headPref); if (_unit != null && WeaponEffect != null) { WeaponEffect = AttachWeaponEffect(_unit, false, rightWeaponDummy, leftWeaponDummy); } return(_unit); }
public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality) : this(engine, variant, file.GetModelDefinition(), quality) { }
public static GameObject PartnerModelLoad(uint partnerID, ref GameObject[] WeaponEffect, bool isLight, string rightWea, string leftWea, ModelQuality mq = ModelQuality.HIGH) { Partner.PartnerDataInfo partner = _LowDataMgr.instance.GetPartnerInfo(partnerID); string partnerPref = ""; GameObject oriUnit = null; if (partner != null) { partnerPref = partner.prefab; if (isLight) { //if (Resources.Load(string.Format("Character/Prefab/{0}_s", partnerPref)) != null) // partnerPref = string.Format("{0}_s", partnerPref); if (Resources.Load(GetPrefabSuffix("Character/Prefab/", partnerPref, mq)) != null) { partnerPref = GetPrefabSuffix(partnerPref, mq); } else { Debug.LogWarning(GetPrefabSuffix("not found prefab ", partnerPref, mq)); } } oriUnit = ResourceMgr.Load(string.Format("Character/Prefab/{0}", partnerPref)) as GameObject; if (oriUnit == null) { oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", partnerPref)) as GameObject; } } else { oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", partnerPref)) as GameObject; } GameObject _unit = GameObject.Instantiate(oriUnit) as GameObject; if (_unit != null && WeaponEffect != null) { WeaponEffect = AttachWeaponEffect(_unit, true, rightWea, leftWea); } return(_unit); }
public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality) : base(engine, variant, definition, quality) { Skeleton = skeleton; _AnimationPlayer = new AnimationPlayer(); var nameMap = new Dictionary <string, int>(); for (var i = 0; i < Skeleton.BoneNames.Length; ++i) { nameMap.Add(Skeleton.BoneNames[i], i); } _BoneMap = Definition.BoneNames.Select(n => nameMap[n]).ToArray(); _InvertedReferencePose = Skeleton.ReferencePose.Select(_ => Matrix.Invert(_)).ToArray(); }
public Model GetModel(ModelQuality quality) { var v = (int)quality; if (_Models[v] == null) _Models[v] = new Model(this, quality); return _Models[v]; }