블로그

Go Hard

파이썬 Streamlit을 활용한 차량 물리 접지력 시뮬레이터 (콰트로 vs 후륜)

안녕하세요. '잡학다식 개발자'입니다. Python의 Streamlit과 Matplotlib을 활용하여, 차량의 구동 방식과 노면 상태에 따른 물리적 접지력(Traction) 변화를 실시간으로 렌더링하는 시뮬레이터를 제작해 보았습니다.웹 프론트엔드 구축 없이 Streamlit의 세션 상태st.session_state)와 상호작용 위젯을 활용하여, 조건 변경 시 차트가 즉각적으로 반응하도록 구현한 토이 프로젝트입니다.### 💡 핵심 구현 로직 (Traction Mapping)차량의 그립력은 타이어 종류와 노면 상태의 상성 데이터, 그리고 구동 방식(AWD/RWD)에 따른 동력 분산 보너스를 계산하여 산출합니다.# 업데이트된 타이어 마찰 계수 데이터베이스 friction_map = { "익스트림 서머 (넥센 SUR4G, 한국 RS4 등)": {"마른 아스팔트": 1.2, "빗길": 0.6, "눈길": 0.1}, "UHP 서머 (미쉐린 PS4S, 피렐리 P Zero 등)": {"마른 아스팔트": 1.1, "빗길": 0.8, "눈길": 0.15}, "프리미엄 사계절 (미쉐린 MXM4 등)": {"마른 아스팔트": 0.9, "빗길": 0.7, "눈길": 0.3}, "윈터 타이어 (브리지스톤 블리작 등)": {"마른 아스팔트": 0.8, "빗길": 0.6, "눈길": 0.6} } base_mu = friction_map[tire_type][road_cond] drivetrain_bonus = 1.5 if drivetrain == "사륜구동(AWD/Quattro)" else 1.0 traction_score = base_mu * drivetrain_bonus # 에어로 효과 실시간 반영 (고속 주행 다운포스) if apply_aero: traction_score += 0.15이 계산식을 통해, 일반 승용차가 절대 안전 기준선(0.9G)을 넘나드는 과정과 F1 레이스카의 압도적인 물리적 한계치(4.5G)를 동일한 스케일의 차트에서 동적으로 비교합니다.🔗 소스 코드 및 실행 안내구체적인 작동 원리와 코드가 실제 자동차의 물리 법칙과 어떻게 매칭되는지에 대한 자세한 설명은 아래 유튜브 콘텐츠를 참고해 주시기 바랍니다.▶ 시뮬레이터 구현 및 물리 로직 해설:https://youtu.be/j4q25_HD5Ik💻 GitHub 저장소 (전체 코드):https://github.com/gohard-lab/quattro_simulator직접 실행해 보기:접지력 시뮬레이터(Streamlit):https://quattrosimulator-kbsulzwvq8ucrcpph6rfg5.streamlit.app/  

파이썬Python코딩AI비디오Kling클링AI영상제작Moviepy동영상편집잡학다식개발자

Go Hard

AI로 사진을 영상으로 만드는 법과 파이썬 무손실 영상 병합 워크플로우

최근 Kling이나 Runway 같은 최신 AI 비디오 생성 도구를 활용해 정지된 이미지(Image)를 고품질 비디오(Video)로 변환하는 I2V(Image-to-Video) 워크플로우를 실험해 보고 있습니다. 단일 이미지를 시작점(Start Frame)으로 두고 프롬프트를 통해 내추럴한 카메라 무빙을 렌더링하는 방식인데, 생각보다 결과물의 디테일이 훌륭하여 숏폼이나 B-roll 콘텐츠 제작에 유용하게 활용할 수 있습니다. 다만, 이렇게 생성된 여러 개의 독립된 단편 영상 클립들을 하나의 완성된 롱테이크 영상으로 매끄럽게 이어붙이기 위해 외부 파이프라인이 필요했습니다. 디코딩 과정에서의 프레임 겹침(잔상)이나 픽셀 노이즈를 방지하고 원본 화질을 그대로 유지하기 위해, moviepy 라이브러리를 활용한 순수 하드 컷(Hard Cut) 병합 스크립트를 작성하여 자동화했습니다. from moviepy.editor import VideoFileClip, concatenate_videoclips # 1. AI로 생성한 개별 영상 클립 조각들 로드 # 예: 이미지 A➔B로 생성된 영상과 이미지 B➔C로 생성된 영상을 순차적으로 준비 clips = [VideoFileClip(f"scene_{i}.mp4") for i in range(1, 4)] # 2. 인코딩 기교를 배제하고, 픽셀 단위 프레임 매칭을 위한 무손실 하드 컷(method="chain") 병합 final_video = concatenate_videoclips(clips, method="chain") # 3. 멀티코어 프로세싱 강제 할당 및 렌더링 최적화 세팅 final_video.write_videofile( "final_masterpiece.mp4", threads=4, preset="ultrafast" ) 이 워크플로우의 핵심은 AI 생성 단계에서 첫 영상의 종착점(End Frame) 이미지와 다음 영상의 시작점(Start Frame) 이미지를 완벽하게 일치시킨 뒤, 파이썬에서 하드 컷으로 결합하는 것입니다. 이렇게 하면 복잡한 연산 없이도 픽셀 단위로 정확히 맞물려 마치 처음부터 하나의 롱테이크로 촬영된 듯한 자연스러운 화면 전환이 가능해집니다. AI 도구를 활용한 구체적인 비디오 생성 팁과, A ➔ B ➔ C 프레임 매칭 논리가 파이썬 코드와 결합하여 무손실 영상으로 조립되는 상세한 작동 원리는 아래 유튜브 콘텐츠에 정리해 두었습니다. 관련하여 더 좋은 파이프라인 아이디어가 있으신 분들의 의견도 언제나 환영합니다. 유튜브 영상 : https://youtu.be/nF4JrHf0IzI 

파이썬Python코딩AI비디오Kling클링AI영상제작Moviepy동영상편집하드컷

채널톡 아이콘